java hdf5

HDF5 en Java: ¿Cuál es la diferencia entre las API disponibles?



(1)

HDF Java sigue un enfoque en capas:

  • JHI5: los envoltorios de JNI de bajo nivel: muy flexibles, pero también bastante tediosos de usar.

  • Paquete de objetos Java HDF: una interfaz de alto nivel basada en JHI5.

  • HDFView: una aplicación de visor basada en Java basada en el paquete de objetos Java HDF.

JHDF5 proporciona una interfaz de alto nivel basada en la capa JHI5 que proporciona la mayor parte de la funcionalidad de HDF5 a Java. El API tiene una curva de aprendizaje superficial y oculta la mayor parte del trabajo de mantenimiento del hogar del desarrollador. Puede ejecutar el paquete de objetos HDF de Java (y HDFView) en la interfaz JHI5 que forma parte de JHDF5, por lo que las dos API pueden coexistir dentro de un programa Java.

El Permafrost y Nujan parecen estar lejos de estar completos en este punto y Permafrost no ha visto mucha actividad recientemente, por lo que no parecen ser la primera opción en este momento.

Creo que un buen camino para ti es mirar tanto el paquete de objetos Java HDF5 como el JHDF5, decidir cuál de las dos API se ajusta mejor a tus necesidades e ir con esa.

Descargo de responsabilidad: He trabajado en la interfaz JHDF5, por lo que puede ser parcial.

Acabo de descubrir el formato HDF5 y estoy considerando usarlo para almacenar datos 3D distribuidos en un grupo de servidores de aplicaciones Java. Me he enterado de que hay varias implementaciones disponibles para Java, y me gustaría conocer las diferencias entre ellas:

Lo más importante, me gustaría saber:

  • ¿Qué parte de la API nativa está cubierta, cualquier limitación que no exista en la API nativa?

  • Si hay soporte para "Parallel HDF5"?

  • Una vez que se cargan mis datos 3D, ¿obtengo una "sobrecarga de llamada nativa" cada vez que accedo a un elemento en una matriz 3D? Es decir, ¿los datos realmente se convierten en objetos Java o permanecen en "memoria nativa / JNI"?

  • ¿Hay problemas de estabilidad conocidos con una implementación en particular, ya que una falla en el código nativo normalmente anula toda la JVM?