glfs/general/prog/openjdk.xml
Bruce Dubbs f533b0df7c Update to OpenJDJ-1.7.0.9/IcedTea-2.3.3.
Fix minor problem in aalib m4 file.
Fix minor problem when installing docbook xsl docs.


git-svn-id: svn://svn.linuxfromscratch.org/BLFS/trunk/BOOK@10761 af4574ff-66df-0310-9fd7-8a98e5e911e0
2012-10-22 17:15:03 +00:00

978 lines
37 KiB
XML

<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % general-entities SYSTEM "../../general.ent">
%general-entities;
<!ENTITY anduin-download "http://anduin.linuxfromscratch.org/files/BLFS/OpenJDK-&openjdk-version;">
<!ENTITY openjdk-download-binary-x86 "&anduin-download;/OpenJDK-&openjdk-version;-i686-bin.tar.xz">
<!ENTITY openjdk-bin-md5sum-x86 "d52b7a6b1b0fcc065c661efc22022f86">
<!ENTITY openjdk-bin-size-x86 "159 MB">
<!ENTITY openjdk-bin-buildsize-x86 "464 MB">
<!ENTITY openjdk-download-binary-x64 "&anduin-download;/OpenJDK-&openjdk-version;-x86_64-bin.tar.xz">
<!ENTITY openjdk-bin-md5sum-x64 "d67f23dedd26d8b8fd5c0dd007cd5e37">
<!ENTITY openjdk-bin-size-x64 "134 MB">
<!ENTITY openjdk-bin-buildsize-x64 "358 MB">
<!ENTITY icedtea-download "http://icedtea.classpath.org/download/source/icedtea-&icedtea-version;.tar.gz">
<!ENTITY icedtea-md5sum "26a514047494c8697bb97eac10d83bae">
<!ENTITY icedtea-size "4.9 MB">
<!ENTITY corba-download "&anduin-download;/corba.tar.gz">
<!ENTITY corba-md5sum "be19ef74664ce672417a4ba0f91f3d04">
<!ENTITY corba-size "1.4 MB">
<!ENTITY hotspot-download "&anduin-download;/hotspot.tar.gz">
<!ENTITY hotspot-md5sum "91dec9320e95b0ab8fe00cfb5389d335">
<!ENTITY hotspot-size "9.2 MB">
<!ENTITY jaxp-download "&anduin-download;/jaxp.tar.gz">
<!ENTITY jaxp-md5sum "75c2b17d0e37b1a9aa5d913487b7da98">
<!ENTITY jaxp-size "3.7 MB">
<!ENTITY jaxws-download "&anduin-download;/jaxws.tar.gz">
<!ENTITY jaxws-md5sum "61bdab3bb55e5ab6c12cb3a0daecc199">
<!ENTITY jaxws-size "2.7 MB">
<!ENTITY jdk-download "&anduin-download;/jdk.tar.gz">
<!ENTITY jdk-md5sum "a2a793aea6d01d00150a78246a29967a">
<!ENTITY jdk-size "43 MB">
<!ENTITY langtools-download "&anduin-download;/langtools.tar.gz">
<!ENTITY langtools-md5sum "6cc42ee41fd64f531ec4aea256b67495">
<!ENTITY langtools-size "2.3 MB">
<!ENTITY openjdk-download "&anduin-download;/openjdk.tar.gz">
<!ENTITY openjdk-md5sum "43f1697a104ea383083ef7ce305b4f60">
<!ENTITY openjdk-size "128 KB">
<!ENTITY rhino-download "ftp://ftp.mozilla.org/pub/mozilla.org/js/rhino1_7R3.zip">
<!ENTITY rhino-md5sum "99d94103662a8d0b571e247a77432ac5">
<!ENTITY rhino-size "4.5 MB">
<!ENTITY openjdk-buildsize "5.0-7.2 GB">
<!ENTITY openjdk-time "45 SBU (an additional 130 SBU for testsuite)">
]>
<sect1 id="openjdk" xreflabel="OpenJDK-&openjdk-version;">
<?dbhtml filename="openjdk.html" ?>
<sect1info>
<othername>$LastChangedBy$</othername>
<date>$Date$</date>
</sect1info>
<title>OpenJDK-&openjdk-version;</title>
<indexterm zone="openjdk">
<primary sortas="a-OpenJDK">OpenJDK</primary>
</indexterm>
<sect2 role="package">
<title>Introduction to OpenJDK and IcedTea</title>
<para><application>IcedTea</application> provides a build harness for the
<application>OpenJDK</application> package, Oracle's open-sourced
<application>Java</application> development environment. In order to
provide a completely free runtime environment, similar to Oracle's closed
distribution, the <application>IcedTea</application> build harness also
provides free, and arguably better versions of parts of the JDK which
have not been open-sourced to date. <application>OpenJDK</application> is
useful for developing <application>Java</application> programs and provides
a complete runtime environment to run <application>Java</application>
programs.</para>
&lfs72_checked;
<note><para>The browser plugin and webstart implementation have been split
off into a separate project. To provide a complete implementation, you will
need to later install <xref linkend="icedtea-web"/>.</para></note>
<para>OpenJDK is GPL'd code, however, it should be explained that there has
been a special exception made for non-free projects to use these classes in
their proprietary products. In similar fashion to the LGPL, which
allows non-free programs to link to libraries provided by free software,
the <ulink url="http://openjdk.java.net/legal/gplv2+ce.html">GNU
General Public License, version 2, with the Classpath Exception</ulink>
allows third party programs to use classes provided by free software
without the requirement that the third party software also be free. As with
the LGPL, any modifications made to the free software portions of a
third party application, must also be made freely available.</para>
<note>
<para>The IcedTea build environment includes a very thorough, open source
test suite titled <application>JTreg</application>.
<application>JTreg</application> is intended to test the just built JDK
for reasonable compatibility with the closed Oracle JDK. However, in
order for an independent implementation to claim compatibility, including
the Oracle sponsored <application>OpenJDK</application> project, it must
pass a closed <application>JCK/TCK</application> test suite. No claims
of compatibility, even partial compatibility, may be made without
passing an approved test suite.</para>
<para>Oracle does provide free community access, on a case by case basis,
to a closed toolkit to ensure 100% compatibility with its proprietary JDK.
The binary version provided here has not been tested against the
<ulink url="http://openjdk.java.net/groups/conformance/JckAccess/jck-access.html">
TCK</ulink>. Any version that is built using the instructions given,
cannot claim to be compatible with the proprietary JDK, without the user
applying for, and completing the compatibility tests themselves.</para>
<para>With that in mind, the binaries produced using this build method are
regularly tested against the TCK by the members listed on the site above.
In addition to the community license above, an educational, non-commercial
license for the TCK can be obtained from
<ulink url="http://www.oracle.com/technetwork/java/index-137188.html">
here</ulink>.</para>
</note>
<bridgehead renderas="sect3">Source Package Information</bridgehead>
<itemizedlist spacing="compact">
<listitem>
<para>IcedTea Source Package
<simplelist>
<member>Download: <ulink url="&icedtea-download;"/></member>
<member>Download MD5 sum: &icedtea-md5sum;</member>
<member>Download Size: &icedtea-size;</member>
</simplelist>
</para>
</listitem>
</itemizedlist>
<para>The following may be downladed separately or be done as a
part of the <userinput>make</userinput> process.</para>
<itemizedlist spacing="compact">
<listitem>
<para>Corba Source
<simplelist>
<member>Download: <ulink url="&corba-download;"/></member>
<member>Download MD5 sum: &corba-md5sum;</member>
<member>Download Size: &corba-size;</member>
</simplelist>
</para>
</listitem>
<listitem>
<para>Hotspot Source
<simplelist>
<member>Download: <ulink url="&hotspot-download;"/></member>
<member>Download MD5 sum: &hotspot-md5sum;</member>
<member>Download Size: &hotspot-size;</member>
</simplelist>
</para>
</listitem>
<listitem>
<para>IcedTea Build Source
<simplelist>
<member>Download: <ulink url="&openjdk-download;"/></member>
<member>Download MD5 sum: &openjdk-md5sum;</member>
<member>Download Size: &openjdk-size;</member>
</simplelist>
</para>
</listitem>
<listitem>
<para>JAXP Source
<simplelist>
<member>Download: <ulink url="&jaxp-download;"/></member>
<member>Download MD5 sum: &jaxp-md5sum;</member>
<member>Download Size: &jaxp-size;</member>
</simplelist>
</para>
</listitem>
<listitem>
<para>JAXWS Source
<simplelist>
<member>Download: <ulink url="&jaxws-download;"/></member>
<member>Download MD5 sum: &jaxws-md5sum;</member>
<member>Download Size: &jaxws-size;</member>
</simplelist>
</para>
</listitem>
<listitem>
<para>Langtools Source
<simplelist>
<member>Download: <ulink url="&langtools-download;"/></member>
<member>Download MD5 sum: &langtools-md5sum;</member>
<member>Download Size: &langtools-size;</member>
</simplelist>
</para>
</listitem>
<listitem>
<para>OpenJDK Source
<simplelist>
<member>Download: <ulink url="&jdk-download;"/></member>
<member>Download MD5 sum: &jdk-md5sum;</member>
<member>Download Size: &jdk-size;</member>
</simplelist>
</para>
</listitem>
<listitem>
<para>Estimated disk space required: &openjdk-buildsize;</para>
</listitem>
<listitem>
<para>Estimated build time: &openjdk-time;</para>
</listitem>
</itemizedlist>
<bridgehead renderas="sect3">Binary Package Information</bridgehead>
<itemizedlist spacing="compact">
<listitem>
<para>Binary download (x86):
<ulink url="&openjdk-download-binary-x86;"/></para>
</listitem>
<listitem>
<para>Download MD5 sum: &openjdk-bin-md5sum-x86;</para>
</listitem>
<listitem>
<para>Download size (binary): &openjdk-bin-size-x86;</para>
</listitem>
<listitem>
<para>Estimated disk space required: &openjdk-bin-buildsize-x86;</para>
</listitem>
</itemizedlist>
<itemizedlist spacing="compact">
<listitem>
<para>Binary download (x86_64):
<ulink url="&openjdk-download-binary-x64;"/></para>
</listitem>
<listitem>
<para>Download MD5 sum: &openjdk-bin-md5sum-x64;</para>
</listitem>
<listitem>
<para>Download size (binary): &openjdk-bin-size-x64;</para>
</listitem>
<listitem>
<para>Estimated disk space required: &openjdk-bin-buildsize-x64;</para>
</listitem>
</itemizedlist>
<bridgehead renderas="sect3">Additional Downloads</bridgehead>
<bridgehead renderas="sect4">Required Patches</bridgehead>
<itemizedlist spacing='compact'>
<listitem>
<para><ulink
url="&patch-root;/icedtea-&icedtea-version;-add_cacerts-1.patch"/></para>
</listitem>
<listitem>
<para><ulink
url="&patch-root;/icedtea-&icedtea-version;-fixed_paths-1.patch"/></para>
</listitem>
<listitem>
<para><ulink
url="&patch-root;/icedtea-&icedtea-version;-fix_tests-1.patch"/></para>
</listitem>
</itemizedlist>
<bridgehead renderas="sect4">Required JAR</bridgehead>
<itemizedlist spacing='compact'>
<listitem>
<para>Rhino Java Script
<simplelist>
<member>Download: <ulink url="&rhino-download;"/></member>
<member>Download MD5 sum: &rhino-md5sum;</member>
<member>Download Size: &rhino-size;</member>
</simplelist>
</para>
</listitem>
</itemizedlist>
<bridgehead renderas="sect3">OpenJDK Dependencies</bridgehead>
<bridgehead renderas="sect4">Optional Runtime Dependencies (required for
source installation)</bridgehead>
<para role="optional">
<xref linkend="cacerts"/>,
<xref linkend="cups"/>,
<xref linkend="gtk3"/>,
<xref linkend="giflib"/>,
<xref linkend="pulseaudio"/>,
<xref linkend="xorg7-lib"/> and
<xref linkend="nspr"/>.
</para>
<bridgehead renderas="sect4">Additional Requirements
(for source build, including optional requirements)</bridgehead>
<para role="required">
<xref linkend="apache-ant"/>,
<xref linkend="cpio"/>,
<xref linkend="unzip"/>,
<xref linkend="wget"/>,
<xref linkend="which"/>, and
<xref linkend="zip"/></para>
<para condition="html" role="usernotes">User Notes:
<ulink url="&blfs-wiki;/openjdk"/></para>
</sect2>
<sect2 role="installation">
<title>Installation of OpenJDK</title>
<para>The instructions below install both the binary and source versions.
You may stop after installing the binary version or continue on installing
the source version. You can choose to keep either or both.</para>
<bridgehead renderas="sect3">OpenJDK Binary Installation</bridgehead>
<para>Begin by extracting the appropriate binary tarball and changing to
the extracted directory. Install the binary
<application>OpenJDK</application> with the following commands as the
<systemitem class="username">root</systemitem> user:</para>
<screen role="root"><userinput>install -vdm755 /opt/OpenJDK-&openjdk-version;-bin &amp;&amp;
mv -v * /opt/OpenJDK-&openjdk-version;-bin &amp;&amp;
chown -R root:root /opt/OpenJDK-&openjdk-version;-bin</userinput></screen>
<para>Configure the temporary <application>OpenJDK</application>
installation with the following commands:</para>
<screen><userinput>export CLASSPATH=.:/usr/share/java &amp;&amp;
export PATH="PATH:/opt/OpenJDK-&openjdk-version;-bin/bin</userinput></screen>
<para>The binary version is now installed. If you don't want to compile the
sources, skip ahead to the configuration section.</para>
<bridgehead renderas="sect3">OpenJDK Source Installation</bridgehead>
<note><para>The source build of OpenJDK requires
<xref linkend="apache-ant"/>. You'll need to build that first to satisfy
the circular dependency, and return to this section to continue building
OpenJDK.</para></note>
<para>Unlike other packages in BLFS, the <application>OpenJDK</application>
source packages are distributed in multiple downloads. Since the IcedTea
build harness will be used to build <application>OpenJDK</application>,
begin by extracting the IcedTea package and changing into the
extracted directory.</para>
<para>The IcedTea <application>OpenJDK</application> distribution requires
that <filename>js.jar</filename> (from the Rhino package) be in place in
order to provide a java-script implementation for the free JDK. If you have
not installed the js.jar file in another way, do so with the following
commands as the <systemitem class="username">root</systemitem> user:</para>
<screen role="root"><userinput>unzip ../rhino1_7R3.zip &amp;&amp;
install -v -d -m755 /usr/share/java &amp;&amp;
install -v -m755 rhino1_7R3/*.jar /usr/share/java</userinput></screen>
<para>As mentioned previously, <application>OpenJDK</application> is
composed of several individual projects of the proprietary
<application>JDK</application> that have been relicensed under an open
source license. If you have already downoaded all of the individual
components, place them into the source tree with the following commands:</para>
<screen><userinput>cp -v ../corba.tar.gz . &amp;&amp;
cp -v ../hotspot.tar.gz . &amp;&amp;
cp -v ../jaxp.tar.gz . &amp;&amp;
cp -v ../jaxws.tar.gz . &amp;&amp;
cp -v ../jdk.tar.gz . &amp;&amp;
cp -v ../langtools.tar.gz . &amp;&amp;
cp -v ../openjdk.tar.gz .</userinput></screen>
<para>Apply a patch to generate a valid cacerts file using the system CA
certificates:</para>
<screen><userinput>patch -Np1 -i ../icedtea-&icedtea-version;-add_cacerts-1.patch</userinput></screen>
<para>Apply a patch to replace fixed paths with ones appropriate for
BLFS:</para>
<screen><userinput>patch -Np1 -i ../icedtea-&icedtea-version;-fixed_paths-1.patch</userinput></screen>
<para>Apply a patch to exclude known broken tests from the test suite:</para>
<screen><userinput>patch -Np1 -i ../icedtea-&icedtea-version;-fix_tests-1.patch</userinput></screen>
<para>Configure and build the package with the following commands:</para>
<screen><userinput>unset JAVA_HOME &amp;&amp;
./autogen.sh &amp;&amp;
./configure --with-jdk-home=/opt/OpenJDK-&openjdk-version;-bin \
--enable-nss \
--enable-pulse-java &amp;&amp;
make</userinput></screen>
<note><para>If you have not installed the tarballs specified above,
they will be automatically downloaded here.</para></note>
<para>To test the results, issue: <command>make jtregcheck</command>. The
included version of <application>jtreg</application> is old, and the test
suite is also very dependent on the host system and the environment that it
is run in. You should expect to see anywhere between 40 and 100 failures in
jdk with up to 10 errors in the tests themselves. The majority of the
6000+ tests should pass. The reason for the greatly varying results is due
to how stringent the testing environment must be. Varying architectures,
different versions of dependent libraries, unexpected X Window environment
and window managers, the CA certificates used to generate the
<filename>cacerts</filename> file, and even any user input or power
management or screen saver interruptions during the testing can lead to
various failures. While the known broken tests have been removed, with the
fix_tests patch above, the graphics tests failures cannot be pre-determined
(short of removing them all). The best bet for the minimal number of
failures is to run the test suite in a framebuffer on a different screen
(Xvfb). Even still, Disk I/O can cause failures.</para>
<para>Install the package with the following commands as the
<systemitem class="username">root</systemitem> user:</para>
<screen role="root"><userinput>chmod 0644 openjdk.build/j2sdk-image/lib/sa-jdi.jar &amp;&amp;
cp -R openjdk.build/j2sdk-image /opt/OpenJDK-&openjdk-version; &amp;&amp;
chown -R root:root /opt/OpenJDK-&openjdk-version;</userinput></screen>
</sect2>
<sect2 role="commands">
<title>Command Explanations</title>
<para><command>./autogen.sh</command>: This command forces rebuilding of
auto-generated files to account for new options added to
<filename>configure</filename>.</para>
<para><parameter>--with-jdk-home</parameter>: This switch provides the
location of the temporary <application>JDK</application>.</para>
<para><parameter>--enable-pulse-java</parameter>: This switch enables
building of the pulseaudio libraries (needed to provide a complete
implementation that is reasonably compatible with the proprietary
JDK).</para>
<para><command>chmod -v 0644 ...sa-jdi.jar</command>: Fix permissions
in a generated file so all users can access it.</para>
</sect2>
<sect2 role="configuration">
<title>Configuring OpenJDK</title>
<sect3>
<title>Configuration Information</title>
<para>There are now two <application>OpenJDK</application> SDKs
installed in <filename>/opt</filename>. You should decide on which one
you would like to use as the default. For example if you decide to use
the precompiled <application>OpenJDK</application>, do the following as
the <systemitem class="username">root</systemitem> user:</para>
<screen role="root"><userinput>ln -v -nsf OpenJDK-&openjdk-version;-bin /opt/jdk</userinput></screen>
<para>The information below assumes your system is set up using the
instructions found in <quote><xref
linkend="postlfs-config-profile"/></quote>. You may need to extract the
relevant information below and incorporate it into your system's startup
files if your system is set up differently.</para>
<para>Add the following <filename>openjdk.sh</filename> shell startup
file to the <filename>/etc/profile.d</filename> directory with the
following commands as the <systemitem class="username">root</systemitem>
user:</para>
<screen role="root"><userinput>cat &gt; /etc/profile.d/openjdk.sh &lt;&lt; "EOF"
<literal># Begin /etc/profile.d/openjdk.sh
# Set JAVA_HOME directory
JAVA_HOME=/opt/jdk
# Adjust PATH
pathappend $JAVA_HOME/bin PATH
# Auto Java CLASSPATH
# Copy jar files to, or create symlinks in this directory
AUTO_CLASSPATH_DIR=/usr/share/java
pathprepend . CLASSPATH
for dir in `find ${AUTO_CLASSPATH_DIR} -type d 2>/dev/null`; do
pathappend $dir CLASSPATH
done
for jar in `find ${AUTO_CLASSPATH_DIR} -name "*.jar" 2>/dev/null`; do
pathappend $jar CLASSPATH
done
export JAVA_HOME CLASSPATH
unset AUTO_CLASSPATH_DIR dir jar
# End /etc/profile.d/openjdk.sh</literal>
EOF</userinput></screen>
<para>Finally, add the man pages to <application>man_db</application>'s
configuration. As the <systemitem class="username">root</systemitem>
user:</para>
<screen><userinput>cat &gt;&gt; /etc/man_db.conf &lt;&lt; "EOF" &amp;&amp;
<literal>MANDATORY_MANPATH /opt/jdk/man
MANPATH_MAP /opt/jdk/bin /opt/jdk/man
MANDB_MAP /opt/jdk/man /var/cache/man/jdk</literal>
EOF
mandb -c /opt/OpenJDK/man</userinput></screen>
</sect3>
</sect2>
<sect2 role="content">
<title>Contents</title>
<segmentedlist>
<segtitle>Installed Programs</segtitle>
<segtitle>Installed Libraries</segtitle>
<segtitle>Installed Directory</segtitle>
<seglistitem>
<seg>appletviewer, apt, extcheck, idlj, jar,
jarsigner, java, javac, javadoc, javah, javap, java-rmi.cgi,
jcmd, jconsole, jdb, jhat, jinfo, jmap, jps,
jrunscript, jsadebugd, jstack, jstat, jstatd, keytool,
native2ascii, orbd, pack200, policytool, rmic, rmid, rmiregistry,
schemagen, serialver, servertool, tnameserv, unpack200,
wsgen, wsimport, and xjc</seg>
<seg>/opt/OpenJDK-&openjdk-version;/lib/*, and
/opt/OpenJDK-&openjdk-version;/jre/lib/*</seg>
<seg>/opt/OpenJDK-&openjdk-version;</seg>
</seglistitem>
</segmentedlist>
<variablelist>
<bridgehead renderas="sect3">Short Descriptions</bridgehead>
<?dbfo list-presentation="list"?>
<?dbhtml list-presentation="table"?>
<varlistentry id="appletviewer">
<term><command>appletviewer</command></term>
<listitem>
<para>allows you to run applets outside of a web browser.</para>
<indexterm zone="openjdk appletviewer">
<primary sortas="b-appletviewer">appletviewer</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="apt">
<term><command>apt</command></term>
<listitem>
<para>is an annotation processing tool.</para>
<indexterm zone="openjdk apt">
<primary sortas="b-apt">apt</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="extcheck">
<term><command>extcheck</command></term>
<listitem>
<para>checks a specified jar file for title and version conflicts
with any extensions installed in the
<application>OpenJDK</application> software.</para>
<indexterm zone="openjdk extcheck">
<primary sortas="b-extcheck">extcheck</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="idlj">
<term><command>idlj</command></term>
<listitem>
<para>generates Java bindings from a given IDL file.</para>
<indexterm zone="openjdk idlj">
<primary sortas="b-idlj">idlj</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="jar">
<term><command>jar</command></term>
<listitem>
<para>combines multiple files into a single jar archive.</para>
<indexterm zone="openjdk jar">
<primary sortas="b-jar">jar</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="jarsigner">
<term><command>jarsigner</command></term>
<listitem>
<para>signs jar files and verifies the signatures and integrity
of a signed jar file.</para>
<indexterm zone="openjdk jarsigner">
<primary sortas="b-jarsigner">jarsigner</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="java">
<term><command>java</command></term>
<listitem>
<para>launches a Java application by starting a Java runtime
environment, loading a specified class and invoking its main
method.</para>
<indexterm zone="openjdk java">
<primary sortas="b-java">java</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="javac">
<term><command>javac</command></term>
<listitem>
<para>reads class and interface definitions, written in the
Java programming language, and compiles them into bytecode
class files.</para>
<indexterm zone="openjdk javac">
<primary sortas="b-javac">javac</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="javadoc">
<term><command>javadoc</command></term>
<listitem>
<para>parses the declarations and documentation comments in a
set of Java source files and produces a corresponding set of
HTML pages describing the classes, interfaces,constructors,
methods, and fields.</para>
<indexterm zone="openjdk javadoc">
<primary sortas="b-javadoc">javadoc</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="javah">
<term><command>javah</command></term>
<listitem>
<para>generates C header and source files
that are needed to implement native methods.</para>
<indexterm zone="openjdk javah">
<primary sortas="b-javah">javah</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="javap">
<term><command>javap</command></term>
<listitem>
<para>disassembles a Java class file.</para>
<indexterm zone="openjdk javap">
<primary sortas="b-javap">javap</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="java-rmi.cgi">
<term><command>java-rmi.cgi</command></term>
<listitem>
<para>is the Java RMI client.</para>
<indexterm zone="openjdk java-rmi.cgi">
<primary sortas="b-java-rmi.cgi">java-rmi.cgi</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="jcmd">
<term><command>jcmd</command></term>
<listitem>
<para>is a utility to send diagnostic command requests to a running
Java Virtual Machine.</para>
<indexterm zone="openjdk jcmd">
<primary sortas="b-jcmd">jcmd</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="jconsole">
<term><command>jconsole</command></term>
<listitem>
<para>is a graphical console tool to monitor and manage both
local and remote Java applications and virtual machines.</para>
<indexterm zone="openjdk jconsole">
<primary sortas="b-jconsole">jconsole</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="jdb">
<term><command>jdb</command></term>
<listitem>
<para>is a simple command-line debugger for Java classes.</para>
<indexterm zone="openjdk jdb">
<primary sortas="b-jdb">jdb</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="jhat">
<term><command>jhat</command></term>
<listitem>
<para>parses a java heap dump file and allows viewing
in a web browser.</para>
<indexterm zone="openjdk jhat">
<primary sortas="b-jhat">jhat</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="jinfo">
<term><command>jinfo</command></term>
<listitem>
<para>prints Java configuration information for a given Java
process, core file, or a remote debug server.</para>
<indexterm zone="openjdk jinfo">
<primary sortas="b-jinfo">jinfo</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="jmap">
<term><command>jmap</command></term>
<listitem>
<para>prints shared object memory maps or heap memory details
of a given process, core file, or a remote debug server.</para>
<indexterm zone="openjdk jmap">
<primary sortas="b-jmap">jmap</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="jps">
<term><command>jps</command></term>
<listitem>
<para>lists the instrumented JVMs on the target system.</para>
<indexterm zone="openjdk jps">
<primary sortas="b-jps">jps</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="jrunscript">
<term><command>jrunscript</command></term>
<listitem>
<para>is a command line script shell.</para>
<indexterm zone="openjdk jrunscript">
<primary sortas="b-jrunscript">jrunscript</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="jsadebugd">
<term><command>jsadebugd</command></term>
<listitem>
<para>attaches to a Java process or core file and acts as a
debug server.</para>
<indexterm zone="openjdk jsadebugd">
<primary sortas="b-jsadebugd">jsadebugd</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="jstack">
<term><command>jstack</command></term>
<listitem>
<para>prints Java stack traces of Java threads for a given
Java process, core file, or a remote debug server.</para>
<indexterm zone="openjdk jstack">
<primary sortas="b-jstack">jstack</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="jstat">
<term><command>jstat</command></term>
<listitem>
<para>displays performance statistics for an instrumented JVM.</para>
<indexterm zone="openjdk jstat">
<primary sortas="b-jstat">jstat</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="jstatd">
<term><command>jstatd</command></term>
<listitem>
<para>is an RMI server application that monitors for the creation
and termination of instrumented JVMs.</para>
<indexterm zone="openjdk jstatd">
<primary sortas="b-jstatd">jstatd</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="keytool">
<term><command>keytool</command></term>
<listitem>
<para>is a key and certificate management utility.</para>
<indexterm zone="openjdk keytool">
<primary sortas="b-keytool">keytool</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="native2ascii">
<term><command>native2ascii</command></term>
<listitem>
<para> converts files that contain non-supported character encoding
into files containing Latin-1 or Unicode-encoded characters.</para>
<indexterm zone="openjdk native2ascii">
<primary sortas="b-native2ascii">native2ascii</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="orbd">
<term><command>orbd</command></term>
<listitem>
<para>is used to enable clients to transparently locate and invoke
persistent objects on servers in the CORBA environment.</para>
<indexterm zone="openjdk orbd">
<primary sortas="b-orbd">orbd</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="pack200">
<term><command>pack200</command></term>
<listitem>
<para>is a Java application that transforms a jar file into a
compressed pack200 file using the Java gzip compressor.</para>
<indexterm zone="openjdk pack200">
<primary sortas="b-pack200">pack200</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="policytool">
<term><command>policytool</command></term>
<listitem>
<para>creates and manages a policy file graphically.</para>
<indexterm zone="openjdk policytool">
<primary sortas="b-policytool">policytool</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="rmic">
<term><command>rmic</command></term>
<listitem>
<para>generates stub and skeleton class files for remote objects
from the names of compiled Java classes that contain remote
object implementations.</para>
<indexterm zone="openjdk rmic">
<primary sortas="b-rmic">rmic</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="rmid">
<term><command>rmid</command></term>
<listitem>
<para>starts the activation system daemon.</para>
<indexterm zone="openjdk rmid">
<primary sortas="b-rmid">rmid</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="rmiregistry">
<term><command>rmiregistry</command></term>
<listitem>
<para>creates and starts a remote object registry on the specified
port on the current host.</para>
<indexterm zone="openjdk rmiregistry">
<primary sortas="b-rmiregistry">rmiregistry</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="schemagen">
<term><command>schemagen</command></term>
<listitem>
<para>is a Java XML binding schema generator.</para>
<indexterm zone="openjdk schemagen">
<primary sortas="b-schemagen">schemagen</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="serialver">
<term><command>serialver</command></term>
<listitem>
<para>returns the serialVersionUID for one or more classes in a
form suitable for copying into an evolving class.</para>
<indexterm zone="openjdk serialver">
<primary sortas="b-serialver">serialver</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="servertool">
<term><command>servertool</command></term>
<listitem>
<para>provides an ease-of-use interface for application programmers
to register, unregister, startup and shutdown a server.</para>
<indexterm zone="openjdk servertool">
<primary sortas="b-servertool">servertool</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="tnameserv">
<term><command>tnameserv</command></term>
<listitem>
<para>starts the Java IDL name server.</para>
<indexterm zone="openjdk tnameserv">
<primary sortas="b-tnameserv">tnameserv</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="unpack200">
<term><command>unpack200</command></term>
<listitem>
<para>is a native implementation that transforms a packed file
produced by <application>pack200</application> into a jar
file.</para>
<indexterm zone="openjdk unpack200">
<primary sortas="b-unpack200">unpack200</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="wsgen">
<term><command>wsgen</command></term>
<listitem>
<para>generates JAX-WS portable artifacts used in JAX-WS
web services.</para>
<indexterm zone="openjdk wsgen">
<primary sortas="b-wsgen">wsgen</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="wsimport">
<term><command>wsimport</command></term>
<listitem>
<para>generates JAX-WS portable artifacts.</para>
<indexterm zone="openjdk wsimport">
<primary sortas="b-wsimport">wsimport</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="xjc">
<term><command>xjc</command></term>
<listitem>
<para>is a Java XML binding compiler.</para>
<indexterm zone="openjdk xjc">
<primary sortas="b-xjc">xjc</primary>
</indexterm>
</listitem>
</varlistentry>
</variablelist>
</sect2>
</sect1>