Java on Fedora
Fedora uses a Free software stack that consists of OpenJDK, GNU Compiler for Java, GNU classpath and the Eclipse Java compiler to implement Java. See our JavaFAQ for more information on that. Note that AOT compilation using GCJ has been deprecated (made optional) and new packages or updated ones will be built with OpenJDK in a regular Java compilation to bytecodes.
Software mentioned on this page may come in different packaging formats. Fedora's own packages (RPM) are easy to install (with Yum) and installation instructions can be found from Docs/Drafts/SoftwareManagementGuide. Third party packages may be in archive formats (.zip, tar) and then case specific instructions should be provided.
Java Runtime Environments (JRE)
Java's history is well known to consist different JRE implementations and wide variety of combinations which work together. Different implementations can be installed simultaneously to Fedora and activated one at the time. Activation is done using the Alternatives system (also used to change some other subsystems). Java's subsystem name is surprisingly java and typical commands include:
# alternatives --display java
# alternatives --config java
See alternative's own documentation for more information for usage and parts involved.
Should be noted that JRE implementations installed outside Fedora distribution, may not support alternatives and thus not be visible there. Then the symbolic links under directory /etc/alternatives must be manually fixed.
OpenJDK and project IcedTea
Fedora has shipped OpenJDK as default JRE implementation since Fedora release 9. It's based on Sun Microsystem's JavaOne open source release and complemented by Red Hat's IcedTea project that implements the missing third party components that Sun could not release under free License.
OpenJDK package name on Fedora is java-1.6.0-openjdk.
GNU GCJ+GIJ for Java
GCJ JRE package on Fedora is java-1.5.0-gcj.
Sun Microsystems Java SE
Original Sun Microsystem's Java SE (Standard Edition) can be downloaded directly from http://www.java.com/en/download/ and installed manually.
Fedora's JRE in browser environment can be tested using the following test pages:
Firefox detected plugin list can be seen by typing the url:
Firefox can be run in debug mode as follows:
$ ICEDTEAPLUGIN_DEBUG=true firefox <URL above> 2>&1 | tee console.log
This will write the standard output also to a file which can be attached to a bug reports.
OpenJDK does not ship the Java console anymore, but one can be found from Firefox Web Developer add-on which is installed separately to the Firefox. Add-ons are installed using Firefox's own software component management system, not Fedora's RPM.
Java Develoment Tools (SDK)
See our Eclipse page for an integrated development environment platform that itself is written in Java and has plugin support for many programming languages.
Fedora includes a somewhat customized version of Maven in the distribution. The customization is purely to make Maven work well in offline mode with the rest of the system. Details on how packagers can use this customized Maven are located at Java/JPPMavenReadme . We are in the process of upgrading from maven2 2.0.4 to maven2 2.0.8 (ETA = F12). Once that is achieved we will proceed immediately to maven2 2.0.9 and then to 2.0.10. The reason for going by steps is that it is easier to bootstrap a maven2 release from the previous one. Also related to maven2, a feasibility study is being performed to change the installation of Java packages to become a valid maven2 repository. We will no longer have to modify maven2 (not even with our small patch), and it wil be easier to support parallel installation of either "legacy" or "progressive" versions of Java packages. Once some positive results are obtained, it will be discussed on the fedora-devel-java-list.
Java Server Side Environments
Fedora ships Apache Tomcat as part of standard distribution.
Apache Tomcat package name on Fedora is tomcat6.
Teaching and Learning Java
As part of planning and implementing new 100% FLOSS Java components into Fedora, this draft document has been opened to give developers a place to teach each other about best practices, patterns, etc.