Home | Tutorial | Documentation | Distribution | Links |
JHOVE (pronounced "jove"), the JSTOR/Harvard Object Validation Environment, is an extensible software framework for performing format identification, validation, and characterization of digital objects.
Format validation conformance is determined at three levels: well-formedness, validity, and consistency.
For example, a TIFF object is well-formed if it starts with an 8 byte header followed by a sequence of Image File Directories (IFDs), each composed of a 2 byte entry count and a series of 8 byte tagged entries. The object is valid if it meets certain additional semantic-level rules, such as that an RGB file must have at least three sample values per pixel. The object is consistent with external NISO Z39.87 metadata if that metadata is consistent with the representation information of the object that is extracted by JHOVE.
The concept of distinguishing between well-formedness (syntactic correctness) and validity (semantic correctness) was taken from XML.
The set of characteristics reported by JHOVE about a digital object is known as the object's representation information, a concept introduced by the Open Archival Information System (OAIS) reference model [ISO/IEC 14721]. The standard representation information reported by JHOVE includes: file pathname or URI, last modification date, byte size, format, format version, MIME type, format profiles, and optionally, CRC32, MD5, and SHA-1 digests [CRC32, MD5, SHA-1].
The output from JHOVE is controlled by output handlers. JHOVE uses an extensible plug-in architecture; it can be configured at the time of its invocation to include whatever specific format modules and output handlers that are desired. The initial release of JHOVE includes modules for arbitrary byte streams, ASCII and UTF-8 encoded text, TIFF, HTML, XML, JPEG, JPEG2000, and PDF, AIFF and WAVE audio; and text and XML output handlers.
The JHOVE project was a collaboration of JSTOR and the Harvard University Library.
JHOVE is written in Java to conform to Java 2 Platform, Standard Edition (J2SE) 1.5. A J2SE 1.5-compliant Java Runtime Environment (JRE) is required for proper operation of JHOVE. JHOVE should be usable on any Unix, Windows, or OS X platform with the appropriate J2SE installation.
If you would like to recompile the JHOVE source code, then Apache Ant is necessary. Note that the JAVA_HOME environment variable must be appropriately assigned for Ant to function properly. (JHOVE was implemented and tested using ANT 1.5.1.)
JHOVE releases is distributed as gzip'ed tar files or ZIP files available from the JHOVE SourceForge site. When uncompressed and disaggregated, these result in the following installation directory structure:
jhove/ # JHOVE home directory COPYING # GNU Lesser General Public License (LGPL) LICENSE # JHOVE license information README RELEASENOTES # JHOVE release notes bin/ jhove.jar # JHOVE API package jhove-handler.jar # Standard output handler package jhove-module.jar # Standard module package JhoveApp.jar # JHOVE command-line application JhoveView.jar # JHOVE with Swing GUI front-end build.xml # Ant configuration file classes/ build.xml # Ant configuration file edu/ ... # JHOVE API packages Jhove.* # JHOVE main class ADump.* # AIFF dump utility class GDump.* # GIF dump utility class JDump.* # JPEG dump utility class J2Dump.* # JPEG2000 dump utility class PDump.* # PDF dump utility class TDump.* # TIFF dump utility class WDump.* # WAVE dump utility class conf/ jhove.conf # JHOVE configuration file doc/ *.html # API documentation ... examples/ # Sample files ascii/ ... pdf/ ... tiff/ ... utf-8/ ... adump* # AIFF dump Bourne shell driver script adump.bat* # AIFF dump Windows shell driver script gdump* # GIF dump Bourne shell driver script gdump.bat* # GIF dump Windows shell driver script jdump* # JPEG dump Bourne shell driver script jdump.bat* # JPEG dump Windows shell driver script j2dump* # JPEG 2000 dump Bourne shell driver j2dump.bat* # JPEG 2000 dump Windows shell driver script pdump* # PDF dump Bourne shell driver script pdump.bat* # PDF dump Windows shell driver script tdump* # TIFF dump Bourne shell driver script tdump.bat* # PDF dump Windows shell driver script pdump* # WAVE dump Bourne shell driver script pdump.bat* # WAVE dump Windows shell driver script
The following jar files are meant to be used for embedding JHOVE functionality into new applications or systems:
The following jar file is meant to be used with the stand-alone JHOVE application using a command-line interface. It contains the main Jhove class and the contents of jhove.jar, jhove-handler, and jhove-module.jar:
jhove.jar Contains the JHOVE API interfaces and classes jhove-handler.jar Contains the standard JHOVE output handlers jhove-module.jar Contains the standard JHOVE modules
The following jar file is meant to be used with the stand-alone JHOVE application using a Swing GUI interface. It contains the main JhoveView class and the contents of jhove.jar, jhove-handler, and jhove-module.jar:
JhoveApp.jar
JhoveView.jar
For proper operation, the <jhoveHome> element in the configuration file, jhove/conf/jhove.conf, must be edited to point to the absolute pathname of the JHOVE installation, or home, directory and the temporary directory (in which temporary files are created):
<jhoveHome>jhove-home-directory</jhoveHome> <tempDirectory>temporary-directory</tempDirectory>
The JHOVE home directory is the top-most directory in the distribution TAR or ZIP file. On Unix systems, /var/tmp is an appropriate temporary directory; on Windows, C:\Temp. For example, if the distribution TAR file is disaggregated on a Unix system in the directory "/users/stephen/ projects", then the configuration file should read:
<jhoveHome>/users/stephen/projects/jhove</jhoveHome> <tempDirectory>/var/tmp</jhoveHome>
In the JHOVE home directory, copy the JHOVE Bourne shell driver script template, "jhove.tmpl", to "jhove" (or the equivalent Windows shell script, "jhove_bat.tmpl" to "jhove.bat"), and set the JHOVE home directory, Java home directory, and Java interpreter:
where JHOVE_HOME is set to specify the absolute pathname of the JHOVE home directory; JAVA_HOME is set to specify the absolute pathname of the Java home directory; and JAVA is set to specify the absolute pathname of the Java interpreter. For example:JHOVE_HOME=jhove-home-directory JAVA_HOME=java-home-directory JAVA=java-interpreter
JHOVE_HOME=/users/[username]/projects/jhove JAVA_HOME=/usr/local/java/jdk1.6.0_20-32 JAVA=$JAVA_HOME/bin/java
In the Windows shell driver script, "jhove.bat", the equivalent three variables are:
SET JHOVE_HOME=jhove-home-directory SET JAVA_HOME=java-home-directory SET JAVA=%JAVA_HOME%\bin\java
For example:
SET JHOVE_HOME="C:\Program Files\jhove" SET JAVA_HOME="C:\Program Files\java\jdk1.6.0_20-32" SET JAVA=%JAVA_HOME%\bin\java
The quotation marks are necessary because of the embedded space characters. On Windows platforms it may also be necessary to add the Java bin subdirectory to the System PATH environment variable:
PATH=C:\Program Files\java\jdk1.6.0_20-32\bin;...Specific instructions on installing JHOVE in a Windows XP environment are available. For additional information on setting a Windows environment variable, consult your local documentation or system administrator.
Starting with version 1.8, it is no longer necessary to specify JAVA_HOME or JAVA in the Linux/Unix shell script, and starting with 1.9, it is no longer necessary to specify it in the Windows batch file.
At the time of its invocation, JHOVE performs dynamic configuration of its modules and output handlers based on a XML-formatted configuration file. The configuration file is specified by the first valid value defined as:
Here are some typical "user.home" locations for various operating systems with the default Java configuration:
Windows XP: C:\Documents and Settings\{username}
Windows Vista and 7: C:\Users\{username} or perhaps C:\{username}
Macintosh OS X: /Users/{username}
Unix: ~/
Note that the GUI interface only searches for the configuration file at the second and third locations listed above; it does not make use of the -c config option.
All format modules and output handlers must be specified in the XML-formatted configuration file, validatable against the XML Schema <http://hul.harvard.edu/ois/xml/xsd/jhove/jhoveConfig.xsd>. (In the following display, brackets [ and ] enclose optional configuration file elements.)
<?xml version="1.0"?> <jhoveConfig version="1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://hul.harvard.edu/ois/xml/ns/jhove/jhoveConfig" xsi:schemaLocation="http://hul.harvard.edu/ois/xml/ns/jhove/jhoveConfig http://hul.harvard.edu/ois/xml/xsd/jhove/jhoveConfig.xsd"> <jhoveHome>jhove-home-directory</jhoveHome> [ <defaultEncoding>encoding</defaultEncoding> ] [ <tempDirectory>directory</tempDirectory> ] [ <bufferSize>buffer</bufferSize> ] [ <mixVersion>version</mixVersion> ] [ <sigBytes>n</sigBytes> ] <module> <class>module-class-name</class> [ <init>optional-module-init-argument</init> ] [ <param>optional-module-parameter</param> ] ... </module> ... <outputHandler> <class>output-handler-class-name</class> </outputHandler> ... [ <logLevel>logging-level</logLevel> ] </jhoveConfig>
The optional <defaultEncoding> element specifies the default character encoding used by output handlers. This option can also be specified by the -e encoding command line argument. The default output encoding is UTF-8.
The optional <tempDirectory> element specifies the pathname of the directory in which temporary files are created. This option can also be specified by the -t directory command line argument. On most Unix systems, a reasonable temporary directory is "/var/tmp"; on Windows, "C:\temp".
The optional <bufferSize> element specifies the buffer size use for buffered I/O. This option can also be specified by the -b buffer command line argument.
The optional <mixVersion> element specifies the MIX schema version conformance for the output produced by the XML output handler. By default the handler output conforms to version 2.0 of the schema. For version 1.0 conformance, specify:
<mixVersion>1.0<mixVersion>
The optional <sigBytes> element specifies the maximum number of byte that JHOVE modules will examine looking for an internal signature (or magic number). The default value is 1024.
The optional <logLevel> element specifies the logging level, used by calls to the logging API. This option can also be specified by the -l log-level command line argument. The default is SEVERE.
All class names must be fully qualified with their package name, for example:
edu.harvard.hul.ois.jhove.module.AsciiModule edu.harvard.hul.ois.jhove.module.PdfModule edu.harvard.hul.ois.jhove.module.TiffModule edu.harvard.hul.ois.jhove.module.Utf8Module
The order in which format modules are defined is important; when performing a format identification operation, JHOVE will search for a matching module in the order in which the modules are defined in the configuration file. In general, the modules for more generic formats should come later in the list. For example, the standard module ASCII should be defined before the UTF-8 module, since all ASCII objects are, by definition, UTF-8 objects, but not vice versa.
The optional <init> element is used to pass a module-specific argument to a module at the time it is first instantiated within JHOVE. See the details for the individual modules to see if such an argument is defined. The use of the <init> argument is currently not defined for any of the standard JHOVE modules.
The optional and repeatable <param> element is used to pass a module-specific parameter to a module immediately prior to each invocation of the module's parse() method. See the details for the individual modules to see if such a parameter is defined.
In addition to the modules and output handlers specified in the configuration file, JHOVE is also always statically linked with the standard Bytestream module and Text and XML output handlers.
The JHOVE command-line interface is invoked by the Bourne shell script "jhove" (under Unix) or the Windows shell script "jhove.bat" (under Windows) in the JHOVE installation directory. This script properly sets the Java CLASSPATH and executes the Jhove class with the Java interpreter.
In the invocation syntax below, brackets [ and ] enclose optional arguments. In addition to the syntax specified in subsequent sections, any of the following standard options can also be used:
where... [-c config] [-h handler] [-e encoding] [-o output] [-x sax-class] [-t directory] [-b buffer] [-l loglevel]...
-c config specifies the pathname of the configuration file; -m module specifies the format module (defaults to checking all modules); -h handler specifies the output handler (defaults to TEXT, the standard Text handler); -e encoding specifies the character encoding used by the output handler (defaults to UTF-8); -o output specifies the output file pathname (defaults to standard output); -x sax-class specifies the SAX parser class name (defaults to the J2SE default); -t directory specifies the pathname of the directory in which temporary files are created (defaults to the current working directory); and -b buffer specifies the buffer size used for buffered I/O (defaults to the J2SE default). -l loglevel specifies the logging level (defaults to SEVERE).
Note that the temporary directory and buffer size and logging level can also be specified in the configuration file.
The following syntax is used to discover, or identify, the format of a digital object.
jhove ... [-ks] file-or-uri1 .. file-or-uriN
where the first ellipsis ... is a placeholder for any of the optional standard options defined above.
The digital object(s) can be specified as a file or directory pathname or as a URI. If a directory is specified, JHOVE will recursively walk through the directory. The optional -s flag specified that the identification should be performed solely on the basis of the internal signatures (e.g., magic numbers) associated with the formats, rather than by a complete parsing of the object. After the object's format has been identified, its representation information is displayed. The optional -k flag specifies that object checksum values should be calculated and displayed as part of the representation information.
If the file or URI contains spaces, then it must be enclosed in quotation marks, e.g.,
jhove ... "name with spaces"
If running in a Unix/Linux shell, the quotation marks must be escaped with backslashes, e.g.,
jhove ... \"name with spaces\"
This is clunky but unavoidable, because of the way Java processes command line input. Backslash-quoting the spaces doesn't work. The backslashes should be omitted with the Windows command line.
The following syntax is used to determine the validity of a digital object with respect to a particular format, and to display format-specific representation information.
jhove ... -m module [-kr] file-or-uri
where the ellipsis ... is a placeholder for any of the optional standard options defined above.
Many formats use numeric flags to specify format properties. By default, JHOVE will translate these numeric values into descriptive strings. For example, the TIFF compression value 2 corresponds to "CCITT Group 3 RLE". The optional -r flag specifies that the "raw" data values should be displayed, not the text labels. The optional -k flag specifies that object checksum values should be calculated and displayed as part of the representation information.
The class file implementing the named module must be found on the Java CLASSPATH at the time of invocation. Note that JHOVE recognizes module names in a case-insensitive manner: "ASCII-hul" and "ascii-hul" both specify the standard ASCII module.
The following syntax options display descriptive information about various components of JHOVE.
jhove ... jhove ... -m module jhove ... -H output-handler
where the ellipsis ... is a placeholder for any of the optional standard options defined above.
The first invocation option will display descriptive information about JHOVE itself, including a list of all loaded modules and output handlers. The second option will display descriptive information about the named module. The third option will display descriptive information about the named output handler.
The class file implementing the named module or output handler must be found on the Java CLASSPATH at the time of invocation. Note that JHOVE recognizes modules and output handler names in a case-insensitive manner: "ASCII-hul" and "ascii-hul" both specify the standard ASCII module.
The JHOVE Swing-based GUI interface is invoked from a command shell:
or by the appropriate mouse click behavior defined by the windowing system.java -jar bin/JhoveView.jar
The menu options are:
File Open file... Select file (equivalent to command line option: jhove ... file-or-uri) Open URL... Select URI (jhove ... file-or-uri) Close all document windows Close all open document windows Exit Terminate JHOVE Edit Select module Select JHOVE module (Any) AIFF-hul Select AIFF module (jhove ... -m aiff-hul ...) ASCII-hul Select ASCII module (jhove ... -m ascii-hul ...) BYTESTREAM Select BYTESTREAM module (jhove ... -m bytestream ...) GIF-hul Select GIF module (jhove ... -m gif-hul ...) HTML-hul Select HTML module (jhove ... -m html-hul ...) JPEG-hul Select JPEG module (jhove ... -m jpeg-hul ...) JPEG2000-hul Select JPEG 2000 module (jhove ... -m jpeg2000-hul ...) PDF-hul Select PDF module (jhove ... -m pdf-hul ...) TIFF-hul Select TIFF module (jhove ... -m tiff-hul ...) UTF8-hul Select UTF-8 module (jhove ... -m utf8-hul ...) WAVE-hul Select WAVE module (jhove ... -m wave-hul ...) XML-hul Select XML module (jhove ... -m xml-hul ...) Edit configuration... Edit configuration file Preferences... Set preferences (jhove ... [-kr] ...) Help About module... Display module descriptive information (jhove ... -m module) About Jhove... Display JHOVE descriptive information (jhove)
The initial JHOVE distribution includes the following standard modules.
The AIFF-hul module recognizes and validates the following public profiles:
The AIFF-hul module is invoked by the following command line option:
jhove ... -m aiff-hul ...
(Recall that JHOVE module names can be specified in a case-insensitive manner.)
AIFF representation information is formatted by the output handlers consistent with the proposed AES-X098B, Core audio metadata XML definition, currently under development by the Audio Engineering Society (AES) SC-03-06 Working Group on Digital Library and Archive Systems. Additional representation information includes the audio technical properties of all chunks.
Only digital objects consisting entirely of properly ASCII-encoded text (with byte values between 0x00 and 0x7F [ISO/IEC 646], ANSI X3.4, ECMA-6]) are well-formed and valid with respect to the ASCII-hul module.
The module is invoked by the following command line option:
jhove ... -m ascii-hul ...
(Recall that JHOVE module names can be specified in a case-insensitive manner.)
In addition to the standard representation information, the ASCII module includes the line endings used in the digital object: CR, LF, or CRLF.
By definition, all digital objects are always well-formed and valid with respect to the BYTESTREAM module.
The module is invoked by the following command line option:
jhove ... -m bytestream ...
(Recall that JHOVE module names can be specified in a case-insensitive manner.)
Regardless of the configuration options, JHOVE always statically loads the BYTESTREAM module.
The GIF-hul module recognizes and validates the following public profiles:
The GIF-hul module is invoked by the following command line option:
jhove ... -m gif-hul ...
(Recall that JHOVE module names can be specified in a case-insensitive manner.)
GIF representation information is formatted by the output handlers consistent with the NISO image metadata [NISO Z39.87].
The JPEG-hul module recognizes the following public profiles:
The JPEG-hul module is invoked by the following command line option:
jhove ... -m jpeg-hul ...
(Recall that JHOVE module names can be specified in a case-insensitive manner.)
JPEG representation information is formatted by the output handlers consistent with the NISO image metadata [NISO Z39.87].
The JPEG2000-hul module recognizes the following public profiles:
The JPEG2000-hul module is invoked by the following command line option:
jhove ... -m jpeg2000-hul ...
(Recall that JHOVE module names can be specified in a case-insensitive manner.)
JPEG representation information is formatted by the output handlers consistent with the NISO image metadata [NISO Z39.87]. Additional representation information includes the image technical properties of all boxes.
The PDF-hul module recognizes and validates the following public profiles:
Note: The PDF module does not parse the contents on streams, so it cannot determine conformance to PDF/A to the degree required by the Draft ISO standard.
The PDF-hul module is invoked by the following command line option:
jhove ... -m pdf-hul ...
(Recall that JHOVE module names can be specified in a case-insensitive manner.)
An optional parameter can be passed to the module via the <param> element in the configuration file. The parameter specifies a series of individual character flags:
a Display document annotations f Display document font information o Display document outline p Display document page structure
By default, document annotations, font information, and outlines are not displayed to reduce the size of the JHOVE output.
The TIFF-hul module recognizes and validates the following public profiles:
The TIFF-hul module is invoked by the following command line option:
jhove ... -m tiff-hul ...
(Recall that JHOVE module names can be specified in a case-insensitive manner.)
TIFF representation information is formatted by the output handlers consistent with the NISO image metadata [NISO Z39.87]. Additional representation information includes all TIFF tags.
Only digital objects consisting entirely of properly UTF-8-encoded text [Unicode] are well-formed and valid with respect to the UTF8-hul module.
The module is invoked by the following command line option:
jhove ... -m utf8-hul ...
(Recall that JHOVE module names can be specified in a case-insensitive manner.)
In addition to the standard representation information, the UTF-8 module includes the number of characters, the Unicode character blocks [Unicode blocks], and the line endings used in the digital object.
The WAVE-hul module recognizes and validates the following public profiles:
The WAVE-hul module is invoked by the following command line option:
jhove ... -m wave-hul ...
(Recall that JHOVE module names can be specified in a case-insensitive manner.)
WAVE representation information is formatted by the output handlers consistent with the proposed AES-X098B, Core audio metadata XML definition, currently under development by the Audio Engineering Society (AES) SC-03-06 Working Group on Digital Library and Archive Systems. Additional representation information includes the audio technical properties of all chunks.
The XML-hul module is invoked by the following command line option:
jhove ... -m xml-hul [-x sax-class] ...
(Recall that JHOVE module names can be specified in a case-insensitive manner.)
The XML-hul module can use any XML parser that conforms to the SAX2 interfaces. The actual parser used is the first valid value defined as:
The HTML-hul module is invoked by the following command line option:
jhove ... -m hml-hul ...
(Recall that JHOVE module names can be specified in a case-insensitive manner.)
The module recognizes and validates HTML 3.2, 4.0 (strict,
transitional and frameset), and 4.01 (strict, transitional
and frameset), as well as XHTML 1.0 and 1.1.
7 Standard Output Handlers
The initial JHOVE distribution includes the following standard output handlers.
The Text handler is the default output handler; if no other handler is explicitly specified, the Text handler is used.
jhove ... jhove ... -h text ...
(Recall that JHOVE output handlers can be specified in a case-insensitive manner.)
Regardless of the configuration options, JHOVE always statically loads the Text output handler.
The XML handler output is defined by the JHOVE schema <http://hul.harvard.edu/ois/xml/xsd/jhove/jhove.xsd>.
jhove ... -h xml ...
(Recall that JHOVE output handlers can be specified in a case-insensitive manner.)
The XML handler formats raster still image representation information according to the MIX schema [MIX] for the NISO image metadata [NISO Z39.87].
Note: Contrary to the NISO image metadata data dictionary, JHOVE defines XSamplingFrequency and YSamplingFrequency as rational values, not positive integers. This is necessary for images whose image length or width is not an integral ratio of the image source X or Y dimension.
Audio representation information is formatted according to the proposed AES-X098B, Core audio metadata XML definition, currently under development by the Audio Engineering Society (AES) SC-03-06 Working Group on Digital Library and Archive Systems.
Regardless of the configuration options, JHOVE always statically loads the XML output handler.
The Audit handler should be invoked against a directory (or directories) without specifying a module. The handler produces an XML-formatted summary of all of the files in the directory, e.g.:
It is intended that the Audit handler will form the basis for other, more interesting handlers.<?xml version="1.0" encoding="UTF-8"?> <jhove xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://hul.harvard.edu/ois/xml/ns/jhove" xsi:schemaLocation="http://hul.harvard.edu/ois/xml/ns/jhove http://hul.harvard.edu/ois/xml/xsd/jhove/1.3/jhove.xsd" name="Jhove" release="1.0 (beta 3)" date="2005-02-04"> <date>2005-02-10T09:37:11-05:00</date> <audit> <file mime="application/pdf" status="valid">jhove/examples/pdf/AA_Banner-single.pdf</file> <file mime="text/plain; charset=US-ASCII" status="valid">jhove/examples/pdf/AA_Banner.pdf</file> <file mime="text/plain; charset=US-ASCII" status="valid">jhove/examples/pdf/README</file> <file mime="application/pdf" status="valid">jhove/examples/pdf/bedfordcompressed.pdf</file> <file mime="application/pdf" status="valid">jhove/examples/pdf/fallforum03.pdf</file> <file mime="application/pdf" status="valid">jhove/examples/pdf/imd.pdf</file> <file mime="application/pdf" status="well-formed">jhove/examples/pdf/ddap/DDAP_Singlev3.pdf</file> <file mime="application/pdf" status="well-formed">jhove/examples/pdf/ddap/DDAP_Spreadv3.pdf</file> <file mime="text/plain; charset=US-ASCII" status="valid">jhove/examples/pdf/ddap/README</file> </audit> </jhove> <!-- Summary by MIME type: application/pdf: 6 (4,2) text/plain; charset=US-ASCII: 9 (9,0) Total: 15 (13,2) --> <!-- Summary by directory: jhove/examples/pdf: 6 (6,0) + 0,0 jhove/examples/pdf/ddap: 3 (1,2) + 0,0 Total: 9 (7,2) + 0,0 --> <!-- Elapsed time: 0:00:05 -->
jhove ... -h audit ...
(Recall that JHOVE output handlers can be specified in a case-insensitive manner.)
Regardless of the configuration options, JHOVE always statically loads the Audit output handler.
JhoveBase
creates a logger named
"edu.harvard.hul.ois.jhove", and any module which invokes the
ModuleBase constructor creates a logger named
"edu.harvard.hul.ois.jhove.module". The logging level
can be set either with the logLevel element of the configuration
file or with the -l parameter in the command line. Permissible
logging levels are OFF, SEVERE, WARNING, INFO, CONFIG, FINE, FINER
FINEST, and ALL. The default logging level is SEVERE.
See the Sun
logging overview for more information on logging.
JHOVE is made available under the GNU Lesser General Public License (LGPL).
Development of JHOVE was funded in part by the Andrew W. Mellon Foundation through a grant to JSTOR for the recently launched Electronic-Archiving Initiative.
The JHOVE logo is based on a manipulated three-color filter image of Jupiter and its moon Ganymede (P-20945C, Voyager 1-9, January 31, 1979) produced by the Jet Propulsion Laboratory from images taken by the Voyager 1 spacecraft on January 24, 1979. The original image and caption are made available from NASA by the National Space Science Data Center.
Home | Tutorial | Documentation | Distribution | Links |