jHDF and HDF C used in the same JAVA Application


#1

Hi all,

A Java application I am working on make use of java HDF5 (which I don’t really know) i.e. I can find libjhdf.so and libjhdf5.so in its native libraries. I don’t know the version.
This same Java application make use of gdal which links to C and HL HDF5 i.e. I can find libhdf5.so.7 and libhdf5_hl.so.7 in its native libraries. I don’t know the version
In this java application, I am about to add another native library (FESAPI) which depends on C HDF5 i.e. FESAPI needs to link to libhdf5.so
My java application has a single classloader which puts all these native libraries in the same “PATH”.

I am afraid about potential symbol conflicts even if I don’t observe them for now.
I think that the way to go forward for gdal and FESAPI is simply to link to the exact same unique H5 so. But what about jhdf???
Has jHDF some totally different symbols than C HDF?
If the symbols may be in conflict, can I link gdal and FESAPI to libjhdf.so? meaning that libjhdf.so is the same as the C library of HDF5 + some wrappers?

Thanks for advises if you have some.


#2

libjhdf and libjhdf5 are based on HDF-4.2.15 and HDF5-1.8.22 for the hdfjava-3.3.3.1 release.
That was the last release for that project in June/July of 2019.
Newer HDF5 1.10+ releases switched to building the java wrappers with the library. The biggest change from HDF5-1.8 to HDF5-1.10+ that concerns java is that the hid_t changed from 32-bit to 64-bit. So you cannot use HDF5-1.10+ versions without modification.


#3

Thanks a lot for the quick and helpful answer!
I am going to look at HDF5 1.10+ (probable the latest 1.12) with java wrappers to see what it now looks.
Thanks again!