IcedTea6-1.9.7

Introduction to IcedTea6

IcedTea6 provides a build harness for the OpenJDK package, Oracle's recently open-sourced Java development environment. In order to provide a completely free runtime environment, similar to Oracle's closed distribution, the IcedTea6 package also provides free versions of the Java browser plugin, and Java Web Start application, which have not been open-sourced to date. IcedTea6 is useful for developing Java programs and provides a complete runtime environment to run Java programs.

[Note]

Note

The browser plugin and webstart implementation have been split off into a separate project. To provide a complete implementation in a source build, you will need to later install IcedTea-Web-1.0.1. The binary installation does contain IcedTea-Web components.

OpenJDK (and IcedTea6) 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 products. In similar fashion to the LGPL, which allows non-free programs to link to libraries provided by free software, the GNU General Public License, version 2, with the Classpath Exception allows third party programs to use classes provided by free software without the requirment that the third party software also be free. As with the LGPL, any modifictaions made to the free software portions of a third party application, must also be made freely availible.

[Note]

Note

The OpenJDK source bundle includes a very thorough, open source test suite titled JTreg. JTreg 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 OpenJDK project, it must pass a closed JCK/TCK test suite. No claims of compatibility, even partial compatibility, may be made without passing an approved test suite.

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 TCK. 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.

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 here.

Source Package Information

Binary Package Information

Additional Downloads

Required Patches

Required Jar Files

IcedTea6 Dependencies

Optional Runtime Dependencies (required for source installation)

ALSA Library-1.0.24.1, Cups-1.5.0, gtk+-2.24.8, Xorg Libraries, and Xulrunner-9.0.1

Additional Requirements (for source build, including optional requirements)

Apache Ant-1.8.1, UnZip-6.0, which-2.20, and Zip-3.0

User Notes: http://wiki.linuxfromscratch.org/blfs/wiki/icedtea6

Installation of IcedTea6

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.

IcedTea6 Binary Installation

Begin by extracting the appropriate binary tarball and changing to the extracted dirctory. Install the binary IcedTea6 with the following commands as the root user:

cp -R j2sdk-image /opt/icedtea6-1.9.7-bin &&
chown -R root:root /opt/icedtea6-1.9.7-bin

Configure the temporary IcedTea6 installation with the following commands:

export PATH_HOLD="${PATH}" &&
export JAVA_HOME="/opt/icedtea6-1.9.7-bin" &&
export CLASSPATH=".:/usr/share/java" &&
export PATH="${PATH}:${JAVA_HOME}/bin"

The binary version is now installed. If you don't want to compile the sources, skip ahead to the configuration section.

IcedTea6 Source Installation

[Note]

Note

The source build of IcedTea6 requires Apache Ant-1.8.1. You'll need to build that first to satisfy the reciprocal dependency, and return to this section to continue building IcedTea6.

Like other packages in BLFS, begin by extracting the IcedTea6 source package and changing into the extracted dirctory.

IcedTea6 requires several freely available jar files for the bootstrap compiler. You may leave these items in place after the build is complete, as they will be needed by other programs, or remove them if you choose. You can optionally choose not to install them at all, and provide the necessary configure options to find the files. Install the necessary tools with the following commands as the root user:

mkdir jarfiles &&
cd jarfiles &&
unzip ../../rhino1_7R2.zip &&
unzip ../../xalan-j_2_7_1-bin.zip &&
unzip ../../Xerces-J-bin.2.11.0.zip &&
install -v -d -m755 /usr/share/java &&
install -v -m755 rhino1_7R2/*.jar /usr/share/java &&
install -v -m755 xalan-j_2_7_1/*.jar /usr/share/java &&
install -v -m755 xerces-2_11_0/*.jar /usr/share/java &&
install -v -m755 ../../ecj-3.6.1.jar /usr/share/java &&
ln -s ecj-3.6.1.jar /usr/share/java/ecj.jar &&
ln -s xalan.jar /usr/share/java/xalan2.jar &&
cd .. &&
rm -r jarfiles

IcedTea6 is composed of several individual components of the proprietary JDK that have been relicensed under an open source license. Put all of the individual components into the source tree with the following commands:

mkdir drops &&
cp -v ../jdk6-jaf-b20.zip drops/ &&
cp -v ../jdk6-jaxp-b20.zip drops/ &&
cp -v ../jdk6-jaxws-b20.zip drops/ &&
cp -v ../openjdk-6-src-b20-21_jun_2010.tar.gz .

Apply a patch to allow building with an installed IcedTea6 as the bootstrap JDK:

patch -Np1 -i ../icedtea6-1.9.7-upstream_fixes-1.patch

Apply a patch to generate a valid cacerts file using the system CA certificates:

patch -Np1 -i ../icedtea6-1.9.7-generate_cacerts-1.patch

Apply a patch to fix the build when using a newer version of Xerces2:

patch -Np1 -i ../icedtea6-1.9.7-xerces2_10-1.patch

Apply a patch to replace fixed paths with ones appropriate for BLFS:

patch -Np1 -i ../icedtea6-1.9.7-fixed_paths-1.patch

Configure and build the package with the following commands:

unset JAVA_HOME &&
./autogen.sh &&
./configure --with-jdk-home=/opt/icedtea6-1.9.7-bin \
            --enable-cacerts \
            --disable-plugin \
            --disable-webstart &&
make

To test the results, issue: make check. The included version of jtreg is old, and the test suite is also very dependent on the host system. You should expect to see 6 or 7 failures and 1 error in the langtools tests, and 20 to 23 failures in jdk with up to 3 errors. The other 4700+ tests should pass. The reason for the variable results is due to different architechtures, versions of dependent libraries, and even the CA certificates used to generate the cacerts file.

Install the package with the following commands as the root user:

cp -R openjdk.build/j2sdk-image /opt/icedtea6-1.9.7 &&
chown -R root:root /opt/icedtea6-1.9.7

Command Explanations

./autogen.sh: This command forces rebuilding of auto-generated files to account for new options added to configure.

--with-jdk-home: This switch provides the location of the temporary JDK.

--enable-cacerts: This switch enables the build to generate a cacerts file, from the system installed CA certificates, suitable for use by IcedTea6.

--disable-plugin: This switch disables building of the included Java browser plugin. The included plugin and webstart implementation has been split off into a separate project IcedTea-Web-1.0.1. Omit this switch if you do not wish to build IcedTea-Web separately.

--disable-webstart: This switch disables building of the included webstart implementation. As noted above, webstart has split off into a separate project IcedTea-Web-1.0.1. Omit this switch if you do not wish to build IcedTea-Web separately.

Configuring IcedTea6

Configuration Information

There are now two IcedTea6 SDKs installed in /opt. You should decide on which one you would like to use as the default. For example if you decide to use the precompiled IcedTea6, do the following as the root user:

ln -v -nsf icedtea6-1.9.7-bin /opt/icedtea

The information below assumes your system is set up using the instructions found in “The Bash Shell Startup Files”. 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.

Add the following icedtea.sh shell startup file to the /etc/profile.d directory with the following commands as the root user:

cat > /etc/profile.d/icedtea.sh << "EOF"
# Begin /etc/profile.d/icedtea.sh

# Set JAVA_HOME directory
JAVA_HOME=/opt/icedtea

# 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

export JAVA_HOME CLASSPATH
unset AUTO_CLASSPATH_DIR
unset dir

# End /etc/profile.d/icedtea.sh
EOF

If you've installed only the binary distribution, the Java plugin is located at $JAVA_HOME/jre/lib/<arch>/IcedTeaPlugin.so. Make a symbolic link to the file in that directory from your browser(s) plugins directory. If you've built from source, move on to the IcedTea-Web-1.0.1 instructions to build the browser plugin.

[Important]

Important

The plugin must be a symlink for it to work. If not, the browsers will crash when you attempt to load a Java application.

Contents

Installed Programs: apt, extcheck, idlj, HtmlConverter, jar, jarsigner, java, javac, javadoc, javah, javap, java-rmi.cgi, 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
Installed Libraries: $JAVA_HOME/lib/*, and $JAVA_HOME/jre/lib/*
Installed Directory: /opt/icedtea6-1.9.7

Short Descriptions

apt

is an annotation processing tool.

extcheck

checks a specified jar file for title and version conflicts with any extensions installed in the IcedTea software.

idlj

generates Java bindings from a given IDL file.

jar

combines multiple files into a single jar archive.

jarsigner

signs jar files and verifies the signatures and integrity of a signed jar file.

java

launches a Java application by starting a Java runtime environment, loading a specified class and invoking its main method.

javac

reads class and interface definitions, written in the Java programming language, and compiles them into bytecode class files.

javadoc

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.

javah

generates C header and source files that are needed to implement native methods.

javap

disassembles a Java class file.

java-rmi.cgi

is the Java RMI client.

jconsole

is a graphical console tool to monitor and manage both local and remote Java applications and virtual machines.

jdb

is a simple command-line debugger for Java classes.

jhat

parses a java heap dump file and allows viewing in a webbrowser.

jinfo

prints Java configuration information for a given Java process, core file, or a remote debug server.

jmap

prints shared object memory maps or heap memory details of a given process, core file, or a remote debug server.

jps

lists the instrumented JVMs on the target system.

jrunscript

is a command line script shell.

jsadebugd

attaches to a Java process or core file and acts as a debug server.

jstack

prints Java stack traces of Java threads for a given Java process, core file, or a remote debug server.

jstat

displays performance statistics for an instrumented JVM.

jstatd

is an RMI server application that monitors for the creation and termination of instrumented JVMs.

keytool

is a key and certificate management utility.

native2ascii

converts files that contain non-supported character encoding into files containing Latin-1 or Unicode-encoded characters.

orbd

is used to enable clients to transparently locate and invoke persistent objects on servers in the CORBA environment.

pack200

is a Java application that transforms a jar file into a compressed pack200 file using the Java gzip compressor.

pluginappletviewer

is a helper program for IcedTeaPlugin.so.

policytool

creates and manages a policy file graphically.

rmic

generates stub and skeleton class files for remote objects from the names of compiled Java classes that contain remote object implementations.

rmid

starts the activation system daemon.

rmiregistry

creates and starts a remote object registry on the specified port on the current host.

schemagen

is a Java XML binding schema generator.

serialver

returns the serialVersionUID for one or more classes in a form suitable for copying into an evolving class.

servertool

provides an ease-of-use interface for application programmers to register, unregister, startup and shutdown a server.

tnameserv

starts the Java IDL name server.

unpack200

is a native implementation that transforms a packed file produced by pack200 into a jar file.

wsgen

generates JAX-WS portable artifacts used in JAX-WS web services.

wsimport

generates JAX-WS portable artifacts.

xjc

is a Java XML binding compiler.

Last updated on 2011-10-26 21:29:54 +0000