Java中的HDF5:可用API之间有什么区别?

Seb*_*iot 27 java hdf5

我刚刚发现了HDF5格式,我正在考虑使用它来存储分布在Java应用服务器集群上的3D数据.我发现有几种可用于Java的实现,并想知道它们之间的差异:

最重要的是,我想知道:

  • 涵盖了多少本机API,本机A​​PI中不存在的任何限制?

  • 如果支持"Parallel HDF5"?

  • 加载3D数据后,每次访问3D阵列中的一个元素时,是否会获得"本机调用开销"?也就是说,数据实际上是变成了Java对象,还是留在"native/JNI memory"中?

  • 是否知道特定实现的稳定性问题,因为本机代码崩溃通常会导致整个JVM崩溃?

小智 23

HDF Java采用分层方法:

  • JHI5 - 低级JNI包装器:非常灵活,但使用起来也相当繁琐.

  • Java HDF对象包 - 基于JHI5的高级接口.

  • HDFView - 基于Java HDF对象包的基于Java的查看器应用程序.

JHDF5在JHI5层上提供了一个高级接口,它提供了HDF5到Java的大部分功能.API具有浅薄的学习曲线,并隐藏了开发人员的大部分内务工作.您可以在作为JHDF5一部分的JHI5接口上运行Java HDF对象包(和HDFView),因此这两个API可以在一个Java程序中共存.

永久冻土和努扬在这一点上似乎远未完成,永久冻土最近没有看到很多活动,因此它们似乎不是此时的首选.

我认为一个好的途径是看看Java HDF5对象包和JHDF5,确定哪两个API更适合您的需求并与之相配.

免责声明:我已经研究过JHDF5接口,所以我可能会有偏见.


Jam*_*udd 6

只是想指出另一个选项,jhdf.io它是 HDF5 的纯 Java 库。目前它是只读的,不包括完整的 HDF5 规范。但是它可以打开和读取大量 HDF5 文件,我希望随着时间的推移改进它。作为纯 Java,与其他选项相比,集成到其他 Java 项目中要容易得多,并且避免了与 JNI 相关的问题。

免责声明:我是jhdf图书馆的作者。