Google
 

OpenJDK

OpenJDK is the effort by Sun Microsystems to release a fully buildable Java Development Kit based completely on free and open source code.

History

Sun's promise and initial release

Sun announced in JavaOne 2006 that Java would become Open Source, and on October 25, 2006, at the Oracle OpenWorld conference, Jonathan Schwartz said that the company was set to announce the open-sourcing of the core Java Platform within 30 to 60 days.

Sun released the Java HotSpot virtual machine and compiler as free software under the GNU General Public License on 13 November 2006, with a promise that the rest of the JDK (which includes the JRE) would be placed under the GPL by March 2007 ("except for a few components that Sun does not have the right to publish in source form under the GPL"). According to Richard Stallman, this would mean an end to the Java trap. Mark Shuttleworth called the initial press announcement, "A real milestone for the free software community".

Release of the class library

Following their promise to release a fully buildable JDK based almost completely on free and open source code in the first half of 2007 , Sun released the complete source code of the Class library under GPL on May 8, 2007, except some limited parts that were licensed by Sun from 3rd parties who did not want their code to be released under an open-source license.[5]. Included in the list of encumbered parts were several major components of the Java GUI system. Sun stated that their goal was to replace the parts that remain closed with alternative implementations and make the class library completely open.

Community improvements

On 2007-11-05, Red Hat announced an agreement with Sun Microsystems, signing Sun's broad contributor agreement (that covers participation in all Sun-led open source projects by all Red Hat engineers) and Sun's OpenJDK Community TCK License Agreement (That gives the company access to the test suite that determines whether a project based on openJDK complies with the Java SE 6 specification).

Also on November 2007, the porters group was created on OpenJDK to aid in efforts to port OpenJDK to different CPU architectures and operating systems. The BSD porting projects, led by Kurt Miller and Greg Lewis and the Mac OS X porting project (based on the BSD one) SoyLatte led by Landon Fuller have expressed interest in joining OpenJDK via the porters group and as of January 2008 are part of the mailing list discussions. Another project pending formalization on the porters group is the Haiku Java Team, led by Bryan Varner.

On December 2007, Sun moved the revision control of OpenJDK from TeamWare to Mercurial, as part of the process of releasing it to open source communities.

OpenJDK has comparatively very strict procedure of accepting code contributions from the side: every proposed contribution must be reviewed by two of Sun's engineers and have the automatic test demonstrating that feature has been fixed. This ensures the persistent high quality of the code but also means that even a trivial fix may take many weeks to approve.

Inclusion in Linux distributions

As of May 2008, the Fedora 9 and Ubuntu 8.04[15] distributions were released with OpenJDK, based completely on free and open source code[16].

OpenJDK doesn’t pass all of the compatibility tests in the Java SE 6 JCK yet, because of the remaining encumberences. They have however been reduced to 1%, and OpenJDK can run complex applications such as Netbeans, Eclipse, Glassfish, or JBoss.

Status


Supported JDK versions

OpenJDK was initially based only on the JDK 7.0 version of the Java platform.

Since February 15, 2008, there are two separate OpenJDK projects:

* The main OpenJDK project, which is based on the JDK 7.0 version of the Java platform,
* The JDK 6 project, which provide an Open-source version of Java 6.0.

Compiler and Virtual Machine

Sun's Java compiler, javac, and HotSpot (the virtual machine), are now under a GPL license.

Class library

As of October 2007, the parts of the Class library that remain proprietary and closed-source (4% as of May 2007 for OpenJDK 7, and 1% as of April 2008 and OpenJDK 6) are:

* some parts of the audio engine code (connection to underlying audio systems, and some implementations of higher level functionalities, such as a MIDI synthesizer),
* The Javascript plugin (even if the engine itself is open-source).

Since the first May 2007 release, Sun Microsystems has released as Open-source or replaced with Open-source alternatives some of the encumbered code:

* The majority of the audio engine code has been released as Open-source.
* All cryptography classes used in the Class library have been released as Open-source.[24]
* The code that scales and rasterizes fonts has been replaced by FreeType
* The native color management system has been replaced by LittleCMS. There is a pluggable layer in the JDK, so that the commercial version can use the old color management system and OpenJDK can use LittleCMS.
* The anti-aliasing graphics rasterizer code has been replaced by the Open-sourced Pisces renderer used in the phoneME project. This code is fully functional, but still needs some performance enhancements.

IcedTea

Because of the still encumbered components in the Class library, it is not yet possible to build OpenJDK only with free software components. In order to be able to do this before the whole class library is made free, and to be able to bundle OpenJDK in Fedora and other free Linux distributions, a project called IcedTea has been started by Red Hat. It is basically an OpenJDK/GNU Classpath hybrid that can be used to bootstrap OpenJDK using only Free Software.

IcedTea is a software development and integration project launched by Red Hat in June 2007.The goal is to make the OpenJDK software which Sun Microsystems released as free software in 2007 usable without requiring any other software that is not free software. For Red Hat, this would make it possible to add OpenJDK to the Fedora Linux distribution, as well as other distributions.

On November 05, 2007, Red Hat has signed both the Sun Contributor Agreement and the OpenJDK Community TCK License.One of the first benefits of this agreement is tighter alignment with the IcedTea project, which brings together Fedora and JBoss technologies in a Linux environment, IcedTea providing Free Software alternatives for the few remaining proprietary sections in the OpenJDK project.

As of March 2008, the Fedora 9 distribution will be released with OpenJDK 6 instead of IcedTea. Some of the stated reasons for this changes are:

* Sun has replaced most of the encumbrances for which IcedTea was providing replacements (there is still approximately 1% of encumbered code in the class library).
* OpenJDK 6 is a stable branch, whereas OpenJDK 7 is unstable and not expected to ship a stable release until 2009.
* Sun has licensed the OpenJDK trademark for use in Fedora.

As of April 2008, Ubuntu also focuses on their OpenJDK 6 IcedTea, showing less activity on their OpenJDK 7 IcedTea.

All text is available under the terms of the GNU Free Documentation License.