www.hdfgroup.org
The HDF Group
November 3-5, 2009 HDF/HDF-EOS Workshop XIII 1
HDF-Java Products
Peter Cao The HDF Group The 13th HDF and HDF-EOS Workshop November 3-5, 2009
www.hdfgroup.org
Outline
• HDF-Java products
• Short demo of NPOESS features
• Full support of HDF5 1.8 in HDF-Java
November 3-5, 2009 HDF/HDF-EOS Workshop XIII 2
www.hdfgroup.orgNovember 3-5, 2009 HDF/HDF-EOS Workshop XIII 3
What are the HDF-Java products?
HDF-Java
HDF
JavaWrapper
ObjectPackage
Viewer Editor
www.hdfgroup.orgNovember 3-5, 2009 HDF/HDF-EOS Workshop XIII 4
Java Wrapper
HDF
Pure JavaLibrary
HDF
JNI a programming framework that allows Java code to call and be called by applications and libraries written in other languagesNetCDF-Java library
www.hdfgroup.orgNovember 3-5, 2009 HDF/HDF-EOS Workshop XIII 5
Pure Java Library
• Pros:• True platform independence• Direct access to file (no data
conversion between C and Java)
HDF
Pure JavaLibrary
• Cons: Substantial amount of work to support
features in the C library.
www.hdfgroup.orgNovember 3-5, 2009 HDF/HDF-EOS Workshop XIII 6
HDF JNI
• Pros:• Easy to implement• Easy to keep up with the library changes
HDF
HDF
• Cons: Requires data conversion between C and
Java The JNI is platform dependent
www.hdfgroup.org
Java Wrapper
November 3-5, 2009 HDF/HDF-EOS Workshop XIII 7
HDF C Native Impl.
Java C
H5.java h5Imp.c
www.hdfgroup.org
Java Wrapper: C versus Java
November 3-5, 2009 HDF/HDF-EOS Workshop XIII 8
hid_t H5Fopen (
const char *name, unsigned flags, hid_t access_id );
public static native int H5Fopen (
String name,int flags,int access_id);
Java C
www.hdfgroup.orgNovember 3-5, 2009 HDF/HDF-EOS Workshop XIII 9
Object Package
HDF-Java
HDF
JavaWrapper
ObjectPackage
Viewer Editor
www.hdfgroup.org
Java Wrapper: read data
November 3-5, 2009 HDF/HDF-EOS Workshop XIII 10
int fid, did, sid, tid, rank; long dims[], maxDims[]; Object theData;
fid = H5.H5Fopen( fname, HDF5Constants.H5F_ACC_RDWR, HDF5Constants.H5P_DEFAULT); did = H5.H5Dopen(fid, dname); sid = H5.H5Dget_space(did); tid = H5.H5Dget_type(did); rank = H5.H5Sget_simple_extent_ndims(sid); dims = new long[rank]; maxDims = new long[rank]; H5.H5Sget_simple_extent_dims(sid, dims, maxDims); theData = allocateArray(tid, dims); H5.H5Dread( did, tid, HDF5Constants.H5S_ALL, HDF5Constants.H5S_ALL, HDF5Constants.H5P_DEFAULT, theData); H5.H5Sclose(sid); H5.H5Tclose(tid); H5.H5Dclose(did); H5.H5Fclose(fid);
Is there an easy way?A very simple example.
www.hdfgroup.org
Object Package: the easy way
November 3-5, 2009 HDF/HDF-EOS Workshop XIII 11
theData = Dataset.read();
www.hdfgroup.org
Object Package: main purposes
November 3-5, 2009 HDF/HDF-EOS Workshop XIII 12
For the application developers• Less function calls• Easy to extend for specific needs
www.hdfgroup.org
Object Package: basic objects
File
DatasetGroup
Attribute
Datatype
http://www.hdfgroup.org/hdf-java-html/hdf-object/
www.hdfgroup.orgNovember 3-5, 2009 HDF/HDF-EOS Workshop XIII 14
HDFView
HDF-Java
HDF
JavaWrapper
ObjectPackage
Viewer Editor
www.hdfgroup.org
HDFView
November 3-5, 2009 HDF/HDF-EOS Workshop XIII 15
www.hdfgroup.org
Outline
• HDF-Java products
• Short demo of advanced features to support NPOESS data
• Full support of HDF5 1.8 in HDF-Java
November 3-5, 2009 HDF/HDF-EOS Workshop XIII 16
www.hdfgroup.org
Features to support NPOESS data
November 3-5, 2009 HDF/HDF-EOS Workshop XIII 17
• Aggregated granules• dataset pointed by an object reference
• Granules• Subset pointed a region reference
• Quality Flags• bits of quality flags packed in one byte
• HDFView version 2.5 patch 3http://www.hdfgroup.org/ftp/HDF5/hdf-java/v25p3/
www.hdfgroup.org
Outline
• HDF-Java products
• Short demo of advanced features to support NPOESS data
• Full support of HDF5 1.8 in HDF-Java
November 3-5, 2009 HDF/HDF-EOS Workshop XIII 18
www.hdfgroup.org
HDF5 1.8 support
November 3-5, 2009 HDF/HDF-EOS Workshop XIII 19
• New capabilities.
• Performance improvements.
Take advantages of HDF5 1.8 library
www.hdfgroup.org
HDF5 1.8 support
November 3-5, 2009 HDF/HDF-EOS Workshop XIII 20
• Support HDF5 1.8 APIs in JHI5
• Use new APIs in the hdf-java objects
• Add 1.8 features in HDFView
www.hdfgroup.uiuc.edu/RFC/HDF5/hdf-java/
www.hdfgroup.org
HDF5 1.8 support: New APIs
November 3-5, 2009 HDF/HDF-EOS Workshop XIII 21
High Medium
Low
No. of APIs 53 46 71Comp. Date
Feb. 2010
Mar. 2010
?
www.hdfgroup.org
HDF5 1.8 support: possible changes
November 3-5, 2009 HDF/HDF-EOS Workshop XIII 22
• Package names• “org.hdfgroup.hdf.”• “hdf.”• “ncsa.hdf.”
• Class structure• H5, H5D, H5F, etc.
www.hdfgroup.org
Acknowledgements
This work was supported by cooperative agreement number NNX08AO77A from the National
Aeronautics and Space Administration (NASA).
Any opinions, findings, conclusions, or recommendations expressed in this material are
those of the author[s] and do not necessarily reflect the views of the National Aeronautics and Space
Administration.
November 3-5, 2009 HDF/HDF-EOS Workshop XIII 23
www.hdfgroup.org
The HDF Group
Thank You!
Questions/comments?
November 3-5, 2009 HDF/HDF-EOS Workshop XIII 24