2012-02-10 51 views
23

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

最重要的,我想知道:

  • 如何亩覆盖本地API的任何限制,本地API中不存在任何限制 ?

  • 如果支持“Parallel HDF5”?

  • 一旦加载了我的3D数据,每次访问3D数组中的一个元素时,是否会收到“原生通话开销” ?也就是说,数据 实际上是否变成了Java对象,还是停留在“native/JNI 内存”?

  • 有没有知道稳定性问题与特定的 实现,因为在本地代码崩溃一般需要整个 JVM下来?

回答

19

HDF的Java遵循分层的方法:

  • JHI5 - 低级别JNI包装:非常灵活,但也相当繁琐的使用。

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

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

JHDF5提供了一个构建在JHI5层上的高级接口,它为HDF5提供了Java的大部分功能。 API的学习曲线很浅,隐藏了开发人员的大部分管理工作。您可以在属于JHDF5的JHI5接口上运行Java HDF对象包(和HDFView),因此这两个API可以共存于一个Java程序中。

永久冻土和Nujan在这一点上似乎还没有完成,而且Permafrost最近还没有看到很多活动,所以它们似乎不是现在的首选。

我认为一个好的方法就是看一下Java HDF5对象包和JHDF5,然后决定哪个API更适合您的需求,然后使用它。

声明:我工作在JHDF5接口,所以我可能会有偏见。

相关问题