HDF5 in Java: What are the difference between the availabe APIs?

Just wanted to point out another option, jhdf.io it's a pure Java library for HDF5. Currently it is read only and doesn't cover the full HDF5 specification. However it can open and read lots of HDF5 files, and I hope to improve it over time. Being pure Java it is much easier to integrate into other Java projects than other options and avoids the issues associated with JNI.

Disclaimer: I am the author of the jhdf library.


HDF Java follows a layered approach:

  • JHI5 - the low level JNI wrappers: very flexible, but also quite tedious to use.

  • Java HDF object package - a high-level interface based on JHI5.

  • HDFView - a Java-based viewer application based on the Java HDF object package.

JHDF5 provides a high-level interface building on the JHI5 layer which provides most of the functionality of HDF5 to Java. The API has a shallow learning curve and hides most of the house-keeping work from the developer. You can run the Java HDF object package (and HDFView) on the JHI5 interface that is part of JHDF5, so the two APIs can co-exist within one Java program.

Permafrost and Nujan seem far from being complete at this point and Permafrost hasn't seen a lot of activity recently, so they appear to be not the first choice at this point in time.

I think a good path for you is to have a look at both the Java HDF5 object package and JHDF5, decide which one of the two APIs fit your needs better and go with that one.

Disclaimer: I have worked on the JHDF5 interface, so I may be biased.

Tags:

Java

Hdf5