glfs/general/prog/j2sdk.xml

570 lines
21 KiB
XML
Raw Normal View History

<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
"http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd" [
<!ENTITY % general-entities SYSTEM "../../general.ent">
%general-entities;
<!ENTITY j2sdk-download-source "http://www.sun.com/software/communitysource/j2se/java2/download.html">
<!ENTITY j2sdk-download-binary "http://java.sun.com/j2se/1.4.2/download.html">
<!ENTITY j2sdk-source-md5sum "http://anduin.linuxfromscratch.org/sources/BLFS/SVN/I-K/j2sdk-&j2sdk-src-version;.md5sums">
<!ENTITY j2sdk-bin-md5sum "a55a9150977de7d5c7f78d29593a8b8c">
<!ENTITY j2sdk-bin-size "36.4 MB">
<!ENTITY j2sdk-src-size "55.1 MB (three .zip files)">
<!ENTITY j2sdk-src-buildsize "1285 MB">
<!ENTITY j2sdk-time "29.57 SBU">
]>
<sect1 id="j2sdk" xreflabel="J2SDK-&j2sdk-src-version;">
<sect1info>
<othername>$LastChangedBy$</othername>
<date>$Date$</date>
</sect1info>
<?dbhtml filename="j2sdk.html" ?>
<title><application>J2<acronym>SDK</acronym></application>-&j2sdk-src-version;</title>
<indexterm zone="j2sdk">
<primary sortas="a-J2SDK">J2SDK</primary>
</indexterm>
<sect2>
<title>Introduction to
<application>J2<acronym>SDK</acronym></application></title>
<para>The <application>J2<acronym>SDK</acronym></application> package contains
Sun's <application>Java</application> development environment. This is useful
for developing <application>Java</application> programs and provides the
runtime environment necessary to run <application>Java</application> programs.
It also includes a plug-in for browsers so that they can be
<application>Java</application> aware.</para>
<para>The <acronym>JDK</acronym> comes in two flavors, a precompiled binary
and a source package. Previously, the plugin included in the
<acronym>JDK</acronym> binary package was unusable on <acronym>LFS</acronym>
owing to incompatibilities with <acronym>GCC</acronym>-3 compiled browsers.
This is not the case anymore.</para>
<para>The source package requires registration at the Sun developer site and
accepting the Sun Community Source License. The source code cannot be
downloaded from some countries, so for users from those countries, the binary
may be the only option.</para>
<para>Even if you plan on compiling the <acronym>JDK</acronym> source, you will
need to download the binary version to bootstrap the <acronym>JDK</acronym>
build. Follow the link below to download both source and binary packages. When
downloading the source (two files required), also download the
<application>Mozilla</application> headers package available at the same
location. To build from source, you'll end up downloading a total of four
files.</para>
<sect3><title>Package information</title>
<itemizedlist spacing='compact'>
<listitem><para>Binary download:
<ulink url="&j2sdk-download-binary;"/></para></listitem>
<listitem><para>Source download:
<ulink url="&j2sdk-download-source;"/></para></listitem>
<listitem><para>Version used (binary):
&j2sdk-bin-version;</para></listitem>
<listitem><para>Download MD5 sum (binary):
&j2sdk-bin-md5sum;</para></listitem>
<listitem><para>Download MD5 sum (source):
<ulink url="&j2sdk-source-md5sum;"/></para></listitem>
<listitem><para>Download size (binary):
&j2sdk-bin-size;</para></listitem>
<listitem><para>Download size (source):
&j2sdk-src-size;</para></listitem>
<listitem><para>Estimated disk space required:
&j2sdk-src-buildsize;</para></listitem>
<listitem><para>Estimated build time:
&j2sdk-time;</para></listitem></itemizedlist>
</sect3>
<sect3><title>Additional downloads</title>
<itemizedlist spacing='compact'>
<listitem><para><ulink
url="&patch-root;/j2sdk-&j2sdk-src-version;-fix_inline_asm-1.patch"/></para>
</listitem>
<listitem><para><ulink
url="&patch-root;/j2sdk-&j2sdk-src-version;-gcc33-1.patch"/></para>
</listitem>
<listitem><para><ulink
url="&patch-root;/j2sdk-&j2sdk-src-version;-motif_mkmsgcat-1.patch"/></para>
</listitem>
<listitem><para><ulink
url="&patch-root;/j2sdk-&j2sdk-src-version;-nptl-1.patch"/></para>
</listitem>
<listitem><para><ulink
url="&patch-root;/j2sdk-&j2sdk-src-version;-remove_debug_image-1.patch"/></para>
</listitem>
<listitem><para><ulink
url="&patch-root;/j2sdk-&j2sdk-src-version;-remove_fixed_paths-1.patch"/></para>
</listitem>
<listitem><para><ulink
url="&patch-root;/j2sdk-&j2sdk-src-version;-static_cxx-1.patch"/></para>
</listitem>
<listitem><para><ulink
url="&patch-root;/j2sdk-&j2sdk-src-version;-ash-1.patch"/>
(Only required if /bin/sh is symlinked to <xref linkend="ash"/>)</para>
</listitem>
</itemizedlist>
</sect3>
<sect3><title><application>J2SDK</application> dependencies</title>
<sect4><title>Required</title>
<para>X (<xref linkend="xfree86"/> or <xref linkend="xorg"/>),
<xref linkend="zip"/>,
<xref linkend="unzip"/>,
<xref linkend="cpio"/>,
<xref linkend="alsa"/>,
<xref linkend="tcsh"/> and
<xref linkend="gcc3"/></para>
</sect4>
</sect3>
</sect2>
<sect2>
<title>Installation of <application>J2SDK</application></title>
<para>Both versions will be installed in parallel. You may choose to keep
either or both.</para>
<para>Installation of the precompiled <acronym>JDK</acronym> is easy:
create a directory to install from, copy the .bin there, and run the
following commands:</para>
<screen><userinput><command>export VERSION=&j2sdk-bin-version; &amp;&amp;
export MV=`echo $VERSION | cut -d "_" -f 1,1` &amp;&amp;
export V=`echo ${VERSION} | sed -e "s/\./_/g"` &amp;&amp;
sed -i "s:^PATH=.*::" j2sdk-${V}-linux-i?86.bin &amp;&amp;
chmod +x j2sdk-${V}-linux-i?86.bin &amp;&amp;
mkdir -p bin &amp;&amp;
ln -sf /bin/true bin/more &amp;&amp;
yes | PATH=$PWD/bin:$PATH ./j2sdk-${V}-linux-i?86.bin &amp;&amp;
cd j2sdk${VERSION}</command></userinput></screen>
<para>Now, as the root user:</para>
<screen><userinput role='root'><command>install -d /opt/j2sdk/j2sdk-precompiled-${MV} &amp;&amp;
mv * /opt/j2sdk/j2sdk-precompiled-${MV}
chown -R root:root /opt/j2sdk/j2sdk-precompiled-${MV}</command></userinput></screen>
<para>The binary version is now installed.</para>
<para>If you don't want to compile the source or are not in a position to
download the source owing to license restrictions, skip ahead to the
configuration section.</para>
<para>Add the recently installed <acronym>JDK</acronym> to the path.</para>
<screen><userinput><command>export JAVA_HOME=/opt/j2sdk/j2sdk-precompiled-${MV} &amp;&amp;
export PATH=$PATH:${JAVA_HOME}/bin</command></userinput></screen>
<para>Unzip the sources:</para>
<screen><userinput><command>mkdir j2sdk-build &amp;&amp;
cd j2sdk-build &amp;&amp;
VERSION=&j2sdk-src-version; &amp;&amp;
V=`echo $VERSION | sed -e "s/\./_/g"` &amp;&amp;
unzip ../j2sdk-${V}-src-scsl.zip &amp;&amp;
unzip ../j2sdk-${V}-mozilla_headers-unix.zip &amp;&amp;
unzip ../j2sdk-${V}-bin-scsl.zip</command></userinput></screen>
<para>Apply all the patches downloaded above.</para>
<screen><userinput><command>for PATCH in ../j2sdk-&j2sdk-src-version;*.patch
do
patch -Np1 -i $PATCH
done</command></userinput></screen>
<para>Set/unset some variables which affect the build:</para>
<screen><userinput><command>export ALT_BOOTDIR="$JAVA_HOME" &amp;&amp;
unset JAVA_HOME &amp;&amp;
unset CLASSPATH
unset CFLAGS
unset CXXFLAGS
unset LDFLAGS
export ALT_DEVTOOLS_PATH="/usr/bin" &amp;&amp;
export BUILD_NUMBER="blfs-`date +%s`" &amp;&amp;
export DEV_ONLY=true &amp;&amp;
export ALT_MOZILLA_PATH=$PWD &amp;&amp;
export INSANE=true &amp;&amp;
export MAKE_VERBOSE=true &amp;&amp;
export ALT_CACERTS_FILE=${ALT_BOOTDIR}/jre/lib/security/cacerts
export PATH_HOLD=$PATH
export PATH=/opt/gcc-&gcc3-version;/bin:$PATH</command></userinput></screen>
<warning><para>Setting CFLAGS/CXXFLAGS/LDFLAGS is guaranteed to make the build
fail. If you are interested in optimizing the build, set
OTHER_CFLAGS/OTHER_CXXFLAGS/OTHER_LDFLAGS instead.</para></warning>
<para>Additionally, if you would like to make in parallel, add the following
(adjust <envar>MAKE_PARALLEL</envar> to your liking):</para>
<screen><userinput><command>export HOTSPOT_BUILD_JOBS=$MAKE_PARALLEL</command></userinput></screen>
<para>If the included <application>Motif</application> doesn't build properly,
the error is noticed much later in the build. A solution is to build the
<application>Motif</application> library before compiling the
<application>J2<acronym>SDK</acronym></application>.</para>
<screen><userinput><command>cd motif/lib/Xm &amp;&amp;
make &amp;&amp;
cd ../../..</command></userinput></screen>
<para>Build <application>J2SDK</application> with the following
commands. There will be a lot of messages about missing files that look like
errors. As long as the build doesn't stop, the messages are harmless, so
ignore them.</para>
<screen><userinput><command>cd control/make &amp;&amp;
make &amp;&amp;
cd ../build/linux-i?86</command></userinput></screen>
<para>Now, as the root user, install <application>J2SDK</application>:</para>
<screen><userinput role='root'><command>cp -a j2sdk-image /opt/j2sdk/j2sdk-&j2sdk-src-version; &amp;&amp;
chown -R root:root /opt/j2sdk/j2sdk-&j2sdk-src-version;</command></userinput></screen>
<para>Restore the environment using the following commands:</para>
<screen><userinput><command>unset VERSION &amp;&amp;
unset MV &amp;&amp;
unset V &amp;&amp;
unset ALT_BOOTDIR &amp;&amp;
unset ALT_DEVTOOLS_PATH &amp;&amp;
unset BUILD_NUMBER &amp;&amp;
unset DEV_ONLY &amp;&amp;
unset ALT_MOZILLA_PATH &amp;&amp;
unset INSANE &amp;&amp;
unset MAKE_VERBOSE &amp;&amp;
unset ALT_CACERTS_FILE &amp;&amp;
export PATH=$PATH_HOLD &amp;&amp;
unset PATH_HOLD</command></userinput></screen>
</sect2>
<sect2>
<title>Command explanations</title>
<para><command>export ALT_BOOTDIR="$JAVA_HOME"</command>: This var sets
the location of the bootstrap <acronym>JDK</acronym>.</para>
<para><command>export ALT_MOZILLA_PATH=$PWD</command>: This sets the
variable that points to where you unzipped the
<application>Mozilla</application> headers.</para>
<para><command>export ALT_DEVTOOLS_PATH="/usr/bin"</command>: This
changes the location where the build finds the needed executables.</para>
<para><command>export BUILD_NUMBER="blfs-`date +%s`"</command>: This will
help you identify this compiled version of the runtime environment and
virtual machine by appending this information to the version in the
output to <command>java -version</command>.</para>
<para><command>export DEV_ONLY=true</command>: This command
eliminates compiling the documentation and a dependency for
<application>rpm</application>.</para>
<para><command>unset JAVA_HOME</command>: This clears the
<envar>JAVA_HOME</envar> variable as recommended by the build
instructions.</para>
<para><command>unset CLASSPATH</command>: This clears the
<envar>CLASSPATH</envar> variable as per the recommendations in the build
instructions.</para>
<para><command>unset CFLAGS...</command>: These flags cause miscompilation
of the build. Never set these.</para>
<para><command>export INSANE=true</command>: Unless you specify that you
are insane the build will not proceed. The certified platform for the build is
Redhat 6.1. The above variable ensures that all the errors related to
compiling on a non-certified platform will be converted to warnings.</para>
<para><command>export MAKE_VERBOSE=true</command>: Allows the current
compilation command to be displayed on the console.</para>
<para><command>export ALT_CACERTS_FILE...</command>: Specifies the
certificate file to use.</para>
</sect2>
<sect2>
<title>Configuring <application>J2SDK</application></title>
<sect3><title>Configuration Information</title>
<para>There are now two Java 2 <acronym>SDK</acronym>'s installed in
<filename>/opt/j2sdk</filename>. You should decide on which one you
would like to use as the default. For example if you decide to use the source
compiled <application>J2SDK</application>, do the following:</para>
<screen><userinput><command>ln -nsf j2sdk-&j2sdk-src-version; /opt/j2sdk/j2sdk</command></userinput></screen>
<para>Add the following lines to your shell startup file (e.g.,
<filename>/etc/profile</filename>).</para>
<screen><userinput>export JAVA_HOME=/opt/j2sdk/j2sdk
export PATH=$PATH:$JAVA_HOME/bin</userinput></screen>
<para>Add <filename>$JAVA_HOME/man</filename> to your
<envar>MANPATH</envar> variable or to
<filename>/etc/man.conf</filename></para>
<para>The <application>Java</application> plugin is in the directory
<filename class="directory">$JAVA_HOME/jre/plugin/i?86/ns610/</filename>.
Make a symbolic link to the file in that directory from your plugins directory.
Note that the plugin must be a symlink for it to work. If not, the browsers
just crash when you attempt to load a <application>Java</application>
plugin.</para>
</sect3>
<sect3><title>Handling CLASSPATH</title>
<para>When compiling packages, the <envar>CLASSPATH</envar> environment
variable is used by the <acronym>JDK</acronym> to locate classes at
compile-time and run-time. It is tedious to add all the classes used to the
<envar>CLASSPATH</envar> manually. You may add the following lines to your
shell startup file to set <envar>CLASSPATH</envar> automatically to include
all JAR files in a specified directory, which in the example below is
<filename>/usr/lib/auto-java-classpath</filename>.</para>
<screen><userinput>AUTO_CLASSPATH_DIR=/usr/lib/auto-java-classpath
if [ -z $CLASSPATH ]
then
CLASSPATH=.:$AUTO_CLASSPATH_DIR
else
CLASSPATH=$CLASSPATH:.:$AUTO_CLASSPATH_DIR
fi
for i in $(ls $AUTO_CLASSPATH_DIR/*.jar 2>/dev/null)
do
CLASSPATH=$CLASSPATH:$i
done</userinput></screen>
</sect3>
</sect2>
<sect2>
<title>Contents</title>
<segmentedlist>
<segtitle>Installed Programs</segtitle>
<segtitle>Installed Libraries</segtitle>
<segtitle>Installed Directory</segtitle>
<seglistitem>
<seg>appletviewer, extcheck, idlj, jar, jarsigner, java, javac, javadoc,
javah, javap, jdb, keytool, native2ascii, orbd, policytool, rmic, rmid,
rmiregistry, serialver, servertool and tnameserv</seg>
<seg><envar>$JAVA_HOME</envar>/lib/*, <envar>$JAVA_HOME</envar>/jre/lib/*
and libjavaplugin_oji.so</seg>
<seg>/opt/j2sdk</seg>
</seglistitem>
</segmentedlist>
<variablelist>
<bridgehead renderas="sect3">Short Descriptions</bridgehead>
<?dbfo list-presentation="list"?>
<varlistentry id="appletviewer">
<term><command>appletviewer</command></term>
<listitem><para>runs <application>Java</application> applets outside of the
context of a browser.</para>
<indexterm zone="j2sdk appletviewer">
<primary sortas="b-appletviewer">appletviewer</primary>
</indexterm></listitem>
</varlistentry>
<varlistentry id="extcheck">
<term><command>extcheck</command></term>
<listitem><para>checks a specified <filename>JAR</filename> file for title
and version conflicts with any extensions installed in the
<acronym>JDK</acronym> software.</para>
<indexterm zone="j2sdk extcheck">
<primary sortas="b-extcheck">extcheck</primary>
</indexterm></listitem>
</varlistentry>
<varlistentry id="idlj">
<term><command>idlj</command></term>
<listitem><para>generates <application>Java</application> bindings from a
given <acronym>IDL</acronym> file.</para>
<indexterm zone="j2sdk 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 <acronym>JAR</acronym>
archive file.</para>
<indexterm zone="j2sdk jar">
<primary sortas="b-jar">jar</primary>
</indexterm></listitem>
</varlistentry>
<varlistentry id="jarsigner">
<term><command>jarsigner</command></term>
<listitem><para>signs <filename>JAR</filename> (Java ARchive) files and
verifies the signatures and integrity of a signed
<filename>JAR</filename>.</para>
<indexterm zone="j2sdk jarsigner">
<primary sortas="b-jarsigner">jarsigner</primary>
</indexterm></listitem>
</varlistentry>
<varlistentry id="java">
<term><command>java</command></term>
<listitem><para>launches a <application>Java</application> application by
starting a <application>Java</application> runtime environment, loading a
specified class and invoking its main method.</para>
<indexterm zone="j2sdk 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
<application>Java</application> programming language, and compiles them into
bytecode class files.</para>
<indexterm zone="j2sdk 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
<application>Java</application> source files and produces a corresponding set
of <acronym>HTML</acronym> pages describing the classes, interfaces,
constructors, methods, and fields.</para>
<indexterm zone="j2sdk javadoc">
<primary sortas="b-javadoc">javadoc</primary>
</indexterm></listitem>
</varlistentry>
<varlistentry id="javah">
<term><command>javah</command></term>
<listitem><para>generates <application>C</application> header and source files
that are needed to implement native methods.</para>
<indexterm zone="j2sdk javah">
<primary sortas="b-javah">javah</primary>
</indexterm></listitem>
</varlistentry>
<varlistentry id="javap">
<term><command>javap</command></term>
<listitem><para>disassembles a <application>Java</application> class
file.</para>
<indexterm zone="j2sdk javap">
<primary sortas="b-javap">javap</primary>
</indexterm></listitem>
</varlistentry>
<varlistentry id="jdb">
<term><command>jdb</command></term>
<listitem><para>is a simple command-line debugger for
<application>Java</application> classes.</para>
<indexterm zone="j2sdk jdb">
<primary sortas="b-jdb">jdb</primary>
</indexterm></listitem>
</varlistentry>
<varlistentry id="keytool">
<term><command>keytool</command></term>
<listitem><para>is a key and certificate management utility.</para>
<indexterm zone="j2sdk 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="j2sdk 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 <acronym>CORBA</acronym>
environment.</para>
<indexterm zone="j2sdk orbd">
<primary sortas="b-orbd">orbd</primary>
</indexterm></listitem>
</varlistentry>
<varlistentry id="policytool">
<term><command>policytool</command></term>
<listitem><para>creates and manages a policy file graphically.</para>
<indexterm zone="j2sdk 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 <application>Java</application> classes that
contain remote object implementations.</para>
<indexterm zone="j2sdk 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="j2sdk 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="j2sdk rmiregistry">
<primary sortas="b-rmiregistry">rmiregistry</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="j2sdk 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="j2sdk servertool">
<primary sortas="b-servertool">servertool</primary>
</indexterm></listitem>
</varlistentry>
<varlistentry id="tnameserv">
<term><command>tnameserv</command></term>
<listitem><para>starts the <application>Java</application>
<acronym>IDL</acronym> name server.</para>
<indexterm zone="j2sdk tnameserv">
<primary sortas="b-tnameserv">tnameserv</primary>
</indexterm></listitem>
</varlistentry>
</variablelist>
</sect2>
</sect1>