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

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

  • Java HD5接口(JHI5)来自HDF组本身的Java包装器。

  • JHDF5(适用于Java的HDF5)

  • 多年冻土

  • Nujan:纯Java NetCDF4和HDF5编写器 (无法读取HDF5)

最重要的是,我想知道:

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

  • 如果支持“Parallel HDF5”?

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

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

HDF Java遵循分层方法:

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

  • Java HDF对象包 – 基于JHI5的高级接口。

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

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

Permafrost和Nujan在这一点上似乎还远未完成,而且Permafrost最近没有看到很多活动,因此它们似乎不是此时的首选。

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

免责声明:我曾经使用过JHDF5接口,所以我可能会有偏见。

    Interesting Posts