awips2/nativeLib/rary.cots.hdf5/docs/hdf-object/index.html
root 9bb8decbcf Initial revision of AWIPS2 11.9.0-7p5
Former-commit-id: 133dc97f67 [formerly a02aeb236c] [formerly 9f19e3f712] [formerly 06a8b51d6d [formerly 9f19e3f712 [formerly 64fa9254b946eae7e61bbc3f513b7c3696c4f54f]]]
Former-commit-id: 06a8b51d6d
Former-commit-id: 377dcd10b9 [formerly 3360eb6c5f]
Former-commit-id: 8e80217e59
2012-01-06 08:55:05 -06:00

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>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</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>&nbsp;</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");
?>