%general-entities; ]> $LastChangedBy$ $Date$ IcedTea6-&icedtea6-version; IcedTea6 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. 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 . 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. 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 IcedTea6 Source &icedtea6-source-md5sum; &icedtea6-source-size; OpenJDK Source &openjdk-md5sum; &openjdk-size; JAF Source &jaf-md5sum; &jaf-size; JAXP Source &jaxp-md5sum; &jaxp-size; JAXWS Source &jaxws-md5sum; &jaxws-size; Estimated disk space required: &icedtea6-src-buildsize; Estimated build time: &icedtea6-time; Binary Package Information Binary download (x86): Download MD5 sum: &icedtea6-bin-md5sum-x86; Download size (binary): &icedtea6-bin-size-x86; Estimated disk space required: &icedtea6-bin-buildsize-x86; Binary download (x86_64): Download MD5 sum: &icedtea6-bin-md5sum-x64; Download size (binary): &icedtea6-bin-size-x64; Estimated disk space required: &icedtea6-bin-buildsize-x64; Additional Downloads Required Patches Required Jar Files Eclipse Java Complier &ecj-md5sum; &ecj-size; Rhino Java Script &rhino-md5sum; &rhino-size; Xalan &xalan-md5sum; &xalan-size; Xerces &xerces-md5sum; &xerces-size; IcedTea6 Dependencies Optional Runtime Dependencies (required for source installation) , , , and xulrunner. Additional Requirements (for source build, including optional requirements) , , , and User Notes: 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-&icedtea6-version;-bin && chown -R root:root /opt/icedtea6-&icedtea6-version;-bin Configure the temporary IcedTea6 installation with the following commands: export PATH_HOLD="${PATH}" && export JAVA_HOME="/opt/icedtea6-&icedtea6-version;-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 The source build of IcedTea6 requires . 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-&openjdk-build;.zip drops/ && cp -v ../jdk6-jaxp-&openjdk-build;.zip drops/ && cp -v ../jdk6-jaxws-&openjdk-build;.zip drops/ && cp -v ../openjdk-6-src-&openjdk-build;-&openjdk-date;.tar.gz . Apply a patch to allow building with an installed IcedTea6 as the bootstrap JDK: patch -Np1 -i ../icedtea6-&icedtea6-version;-upstream_fixes-1.patch Apply a patch to generate a valid cacerts file using the system CA certificates: patch -Np1 -i ../icedtea6-&icedtea6-version;-generate_cacerts-1.patch Apply a patch to fix the build when using a newer version of Xerces2: patch -Np1 -i ../icedtea6-&icedtea6-version;-xerces2_10-1.patch Apply a patch to replace fixed paths with ones appropriate for BLFS: patch -Np1 -i ../icedtea6-&icedtea6-version;-fixed_paths-1.patch Configure and build the package with the following commands: unset JAVA_HOME && ./autogen.sh && ./configure --with-jdk-home=/opt/icedtea6-&icedtea6-version;-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-&icedtea6-version; && chown -R root:root /opt/icedtea6-&icedtea6-version; 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 . 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 . 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-&icedtea6-version;-bin /opt/icedtea The information below assumes your system is set up using the instructions found in . 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 instructions to build the browser plugin. 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 Installed Libraries Installed Directory 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 $JAVA_HOME/lib/*, and $JAVA_HOME/jre/lib/* /opt/icedtea6-&icedtea6-version; Short Descriptions apt is an annotation processing tool. apt extcheck checks a specified jar file for title and version conflicts with any extensions installed in the IcedTea software. extcheck idlj generates Java bindings from a given IDL file. idlj jar combines multiple files into a single jar archive. jar jarsigner signs jar files and verifies the signatures and integrity of a signed jar file. jarsigner java launches a Java application by starting a Java runtime environment, loading a specified class and invoking its main method. java javac reads class and interface definitions, written in the Java programming language, and compiles them into bytecode class files. javac 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. javadoc javah generates C header and source files that are needed to implement native methods. javah javap disassembles a Java class file. javap java-rmi.cgi is the Java RMI client. java-rmi.cgi jconsole is a graphical console tool to monitor and manage both local and remote Java applications and virtual machines. jconsole jdb is a simple command-line debugger for Java classes. jdb jhat parses a java heap dump file and allows viewing in a webbrowser. jhat jinfo prints Java configuration information for a given Java process, core file, or a remote debug server. jinfo jmap prints shared object memory maps or heap memory details of a given process, core file, or a remote debug server. jmap jps lists the instrumented JVMs on the target system. jps jrunscript is a command line script shell. jrunscript jsadebugd attaches to a Java process or core file and acts as a debug server. jsadebugd jstack prints Java stack traces of Java threads for a given Java process, core file, or a remote debug server. jstack jstat displays performance statistics for an instrumented JVM. jstat jstatd is an RMI server application that monitors for the creation and termination of instrumented JVMs. jstatd keytool is a key and certificate management utility. keytool native2ascii converts files that contain non-supported character encoding into files containing Latin-1 or Unicode-encoded characters. native2ascii orbd is used to enable clients to transparently locate and invoke persistent objects on servers in the CORBA environment. orbd pack200 is a Java application that transforms a jar file into a compressed pack200 file using the Java gzip compressor. pack200 pluginappletviewer is a helper program for IcedTeaPlugin.so. pluginappletviewer policytool creates and manages a policy file graphically. policytool rmic generates stub and skeleton class files for remote objects from the names of compiled Java classes that contain remote object implementations. rmic rmid starts the activation system daemon. rmid rmiregistry creates and starts a remote object registry on the specified port on the current host. rmiregistry schemagen is a Java XML binding schema generator. schemagen serialver returns the serialVersionUID for one or more classes in a form suitable for copying into an evolving class. serialver servertool provides an ease-of-use interface for application programmers to register, unregister, startup and shutdown a server. servertool tnameserv starts the Java IDL name server. tnameserv unpack200 is a native implementation that transforms a packed file produced by pack200 into a jar file. unpack200 wsgen generates JAX-WS portable artifacts used in JAX-WS web services. wsgen wsimport generates JAX-WS portable artifacts. wsimport xjc is a Java XML binding compiler. xjc