Former-commit-id:133dc97f67
[formerlya02aeb236c
] [formerly9f19e3f712
] [formerly06a8b51d6d
[formerly9f19e3f712
[formerly 64fa9254b946eae7e61bbc3f513b7c3696c4f54f]]] Former-commit-id:06a8b51d6d
Former-commit-id:377dcd10b9
[formerly3360eb6c5f
] Former-commit-id:8e80217e59
244 lines
7.8 KiB
HTML
244 lines
7.8 KiB
HTML
<?php
|
|
include ("../../links.php");
|
|
include ("../../includes/header.html");
|
|
?>
|
|
|
|
<fieldset>
|
|
<h1><center>HDF Object Package</center></h1>
|
|
</fieldset>
|
|
|
|
<table cellspacing="10" width="100%">
|
|
<tr align="right">
|
|
<td>
|
|
<b><a href="##DOWNLOAD">Download</a> </b>
|
|
<b><a HREF="use.html">Use and Examples</a></b>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
|
|
<p>
|
|
The design and class hierarchy of the <b>HDF Object Package</b> are
|
|
described in this document.
|
|
Refer to
|
|
<A HREF="use.html">Use and Examples</A>
|
|
for information on using the package.
|
|
|
|
<hr>
|
|
|
|
<h2>Overview</h2>
|
|
|
|
<p>
|
|
The HDF Object Package is a Java package that provides an
|
|
object-oriented interface to HDF data objects.
|
|
The package offers a common API to access both HDF4 and HDF5 files.
|
|
|
|
<p>
|
|
The HDF Object Package <u>does not</u> provide a one-to-one mapping from Java
|
|
methods to routines in the standard HDF4 and HDF5 libraries.
|
|
The one-to-one mappings are provided
|
|
via the HDF Java Native Interface products
|
|
<a href="../JNI/jhi/index.html">Java HDF Interface (JHI)</a>
|
|
and
|
|
<a href="../JNI/jhi5/index.html">Java HDF5 Inteface (JHI5)</a>.
|
|
The HDF Object Package wraps these direct mappings with
|
|
a higher level object model.
|
|
|
|
<p>
|
|
The HDF Object Package, <i>ncsa.hdf.object</i>, provides classes that
|
|
reflect the fundamental objects of the two HDF formats.
|
|
Fundamental objects from
|
|
HDF4 (group, multi-dimension array, raster image, vdata, and annotation)
|
|
and
|
|
HDF5 (group and dataset)
|
|
are presented as Java classes in the HDF Object Package.
|
|
|
|
<p>
|
|
There are three major advantages offered by the HDF Object Package:
|
|
|
|
<ul>
|
|
<li>
|
|
First, the package simplifies accesses to HDF files by encapsulating
|
|
the details of calls to the HDF library in higher-level classes and methods.
|
|
For example, the <i>image</i> object provides a method to read an
|
|
image from an HDF5 file.
|
|
This method may invoke more that ten calls to the HDF5 library to
|
|
accomplish this task.
|
|
|
|
<li>
|
|
Second, the package allows applications to make requests to access HDF files
|
|
without directly linking to the HDF4 and HDF5 libraries.
|
|
This capability is very useful for client-server architectures.
|
|
The server machine can host the HDF files and libraries.
|
|
The client application can be built using the HDF Object model and route
|
|
requests to the server for access to the HDF files.
|
|
The client does not need a local copy of the HDF libraries and, by virtue
|
|
of being written in Java, is portable to many different platforms.
|
|
|
|
<li>
|
|
Third, the HDF object package provides modular HDF4 and HDF5 packages.
|
|
Application can be built without requiring the HDF4 or HDF5 library.
|
|
HDF4 and HDF5 objects are inherited from a common object/interface
|
|
layer. Applications can be built by using only the common object/interface
|
|
layer. For example, the HDFView in built on the common object/interface
|
|
layer. It compiles and runs without the HDF4 or HDF5 library.
|
|
<hr>
|
|
<h2>
|
|
The Object Package</h2>
|
|
The following diagram explains the structure of the HDF object package
|
|
and how to use it. Package ncsa.hdf.object contains the common object/interface.
|
|
This package only defines interfaces or abstract classes for accessing HDF files.
|
|
The implementation will rely on the HDF4/HDF5 object package. Application classes
|
|
should only include ncsa.hdf.object.
|
|
|
|
<p>
|
|
The ncsa.hdf.object.h4 is an implementation of the HDF4 objects. It implements
|
|
the interfaces and abstract classes defined at ncsa.hdf.object package. The
|
|
HDF4 object package requires the HDF4 Java Native Interface (ncsa.hdf.hdflib).
|
|
Application should not include this package so that it compiles and runs without
|
|
the HDF4 library.
|
|
|
|
<p>
|
|
The ncsa.hdf.object.h5 is an implementation of the HDF5 objects. It implements
|
|
the interfaces and abstract classes defined at ncsa.hdf.object package. The
|
|
HDF5 object package requires the HDF5 Java Native Interface (ncsa.hdf.hdf5lib).
|
|
Application should not include this package so that it compiles and runs without
|
|
the HDF5 library.
|
|
|
|
<center>
|
|
<p><img SRC="hdf-obj.jpg" NOSAVE>
|
|
<br><b>Figure 1. The Object Package.</b></center>
|
|
<hr>
|
|
<h2>
|
|
The class hierarchy</h2>
|
|
The HDF Object Package implements an abstract data model, and the objects
|
|
of the HDF4 and HDF5 data models are represented as instances of the abstract
|
|
objects. The abstract class <b>HObject</b> has two fundamental abstract
|
|
classes are <b>Group</b> and <b>Dataset</b>, and all HDF5 and HDF4 objects
|
|
are a sub-type of one of these abstract classes.
|
|
<p>Figure 1 shows the class hierarchy of the HDF Object Package. <!--<i>{Peter
|
|
-- the dependency to the HDF Library Package is not identical to my diagram
|
|
below. We need to decide on a common way to show it in UML.}--></i>
|
|
<p>The classes are explained in the Java class document
|
|
<a href="../javadocs/index.html">the Javadocs</a>.
|
|
|
|
<center>
|
|
<p><img SRC="class_diagram_object.jpg" NOSAVE height=897 width=684>
|
|
<br><b>Figure 2. The Class Hierarchy of HDF Objects.</b></center><hr>
|
|
|
|
<h2>
|
|
Limitations</h2>
|
|
The current version of the HDF Object Package has the following limitations:
|
|
<ul>
|
|
<li>
|
|
HDF5 named datatypes are not supported.</li>
|
|
|
|
<li>
|
|
HDF5 ARRAY datatype with compound member is not supported.</li>
|
|
|
|
<li>
|
|
Nested compound datatype is not supported.</li>
|
|
</ul>
|
|
<hr>
|
|
<h3>
|
|
To Obtain</h3>
|
|
The HDF Object Package is freely available, as a full source release. Compiled
|
|
jar files are available, and compiled native libraries are available for
|
|
selected platforms.
|
|
<p><i>Prerequisites</i>
|
|
<p>The HDF Object Package requires <a href="../JNI/jhi/index.html">the
|
|
Java HDF Interface (JHI)</a> and
|
|
<a href="../JNI/jhi5/index.html">the Java
|
|
HDF5 Interface (JHI5)</a>. These are included in the distribution.
|
|
<p>The HDF Object Package was developed using Java 2 SDK (JDK 1.2.x and
|
|
JDK 1.3.x). The HDF Object Package no platform specific code, and should
|
|
work on any system with Java JDK 1.2.x or JDK 1.3.x. At the time of the
|
|
release, the code has been tested on Solaris, Linux, Windows 98/NT, and
|
|
SGI IRIX 6.5.<hr>
|
|
<h3>
|
|
<a NAME="#DOWNLOAD"></a>Download</h3>
|
|
The source and pre-built binaries for the HDF Object Package can be downloaded
|
|
from:
|
|
<blockquote><a href="http://www.hdfgroup.org/ftp/HDF5/hdf-java/">
|
|
http://www.hdfgroup.org/ftp/HDF5/hdf-java/</a></blockquote>
|
|
<b>Binary release</b>
|
|
<p>The binary release includes jar files for the HDF Object Package, the
|
|
JHI (HDF4 library interface) and JHI5 (HDF5 library interface). The
|
|
native libraries are available for selected platforms.
|
|
<blockquote>
|
|
<center><table BORDER COLS=2 WIDTH="85%" >
|
|
<tr>
|
|
<td>lib/jhdf.jar</td>
|
|
|
|
<td>The Java HDF Interface, accesses the native HDF4 library</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td >lib/jhdf5.jar</td>
|
|
|
|
<td>The Java HDF5 Interface, accesses the native HDF5 library</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>lib/jhdfobj.jar</td>
|
|
|
|
<td>The ncsa.hdf.object package</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>lib/jhdf4obj.jar</td>
|
|
|
|
<td>The ncsa.hdf.object.h4 package</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>lib/jhdf5obj.jar</td>
|
|
|
|
<td>The ncsa.hdf.object.h5 package</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>lib/{solaris,linux,irix}/</td>
|
|
|
|
<td></td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td> libjhdf.so</td>
|
|
|
|
<td>The native HDF4 library and JNI implementation (called by jhdf.jar)</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td> libjhdf5.so</td>
|
|
|
|
<td>The native HDF5 library and JNI implementation (called by jhdf5.jar)</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>lib/win/</td>
|
|
<td> </td>
|
|
</tr>
|
|
<tr>
|
|
<td> jhdf.dll</td>
|
|
|
|
<td>The native HDF4 library and JNI implementation (called by jhdf.jar)</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td> jhdf5.dll</td>
|
|
|
|
<td>The native HDF5 library and JNI implementation (called by jhdf5.jar)</td>
|
|
|
|
</tr>
|
|
</table></center>
|
|
</blockquote><hr>
|
|
<h3>Source</h3>
|
|
<p>The source distribution includes all the Java source to build the jar
|
|
files, plus the C source for the native methods of the <a href="../JNI/jhi/index.html">JHI</a>
|
|
and <a href="../JNI/jhi5/index.html">JHI5</a>.
|
|
<p>The JHI requires the HDF4.1r5 library (binary) and the JHI5 requires
|
|
the HDF5.1.4.4 library (binary). These are not included in the Java source.
|
|
They can be obtained from:
|
|
<?php
|
|
include ("../../includes/footer.html");
|
|
?>
|