OpenJDK


OpenJDK is a free and open-source implementation of the Java Platform, Standard Edition. It is the result of an effort Sun Microsystems began in 2006, four years before the company was acquired by Oracle Corporation. The implementation is licensed under the GNU General Public License 2 with a linking exception, preventing components that linked to the Java Class Library becoming subject to the terms of the GPL license. OpenJDK is the official reference implementation of Java SE since version 7, and is the most popular distribution of the JDK.

History

Sun's promise and initial release

announced in JavaOne 2006 that Java would become open-source software, and on October 25, 2006, at the Oracle OpenWorld conference, Jonathan Schwartz said that the company intended 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 November 13, 2006, with a promise that the rest of the JDK 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 free-software advocate Richard Stallman, this would end the "Java trap", the vendor lock-in that he argues applied to Java and programs written in Java.

Release of the class library

Following their promise to release a Java Development Kit based almost completely on free and open-source code in the first half of 2007, Sun released the complete source code of the Java Class Library under the GPL on May 8, 2007, except for some limited parts that had been licensed to Sun by third parties and Sun was unable to re-license under the GPL. Included in the list of encumbered parts were several major components of the Java graphical user interface. Sun stated that it planned to replace the remaining proprietary components with alternative implementations and to make the class library completely free.
When initially released in May 2007, 4% of the OpenJDK class library remained proprietary. By the appearance of OpenJDK 6 in May 2008, less than 1% remained, making it possible to build OpenJDK without any binary plugs. The binary plug requirement was later dropped from OpenJDK 7 as part of b53 in April 2009.
This was made possible, over the course of the first year, by the work of Sun Microsystems and the OpenJDK community. Each encumbrance was either released as free and open-source software or replaced with an alternative. Beginning in December 2010, all the so-called binary plugs were replaced by open-source replacements, making the whole JDK open sourced and the binary plugs not necessary anymore.

Community improvements

On November 5, 2007, Red Hat announced an agreement with Sun, signing Sun's broad contributor agreement and Sun's OpenJDK Community Technology Compatibility Kit License Agreement.
Also in November 2007, the Porters Group was created on OpenJDK to aid in efforts to port OpenJDK to different processor architectures and operating systems. The BSD porting project led by Kurt Miller and Greg Lewis and the Mac OS X porting project led by Landon Fuller have expressed interest in joining OpenJDK via the Porters Group. As of January 2008, both are part of the mailing list discussions. Another project pending formalization on the Porters Group is the Haiku Java Team led by Bryan Varner.
In 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 strict procedures of accepting code contributions: every proposed contribution must be reviewed by another OpenJDK committer and the contributor must have signed the Sun/Oracle Contributor Agreement. Preferably, there should also be a jtreg test demonstrating the bug has been fixed. Initially, the external patch submission process was slow and, until September 2008, commits to the codebase were only made by Sun engineers. The process has improved and,, simple patches and backports from OpenJDK 7 to OpenJDK 6 can take place within hours rather than days.
In 2011, an unofficial port of OpenJDK 6.0 to OS/2 was first released. This port is included in the OS/2 derivative ArcaOS.
On 25 September 2013, Microsoft and Azul Systems collaborated to create Zulu, a build of OpenJDK for users of the Windows Azure cloud. Zulu is available as a free download from the community site . It is also possible to get Zulu on Amazon Web Services via Canonical's Juju Charm Store, the Docker Hub, and Azul Systems repositories. Azul contributes bug fixes and enhancements back to the OpenJDK project and has several project committers on staff. Red Hat resigned leadership of OpenJDK 6 at the beginning of 2017 and this was then taken up by Azul Systems.
Since April 2016 there are unsupported community builds of OpenJDK for Microsoft Windows on GitHub in the project ojdkbuild which are released in pace with updates for Oracle JDK. From build 8u151 on, the MSI-installer offers an optional component for using Java Web Start based on the IcedTea-Web project.
In 2020, a port of OpenJDK 8 to OpenVMS on the Itanium platform was released.
The number of external contributions to OpenJDK is growing since project inception. OpenJDK 11, released in September 2018, received 20% of external fixes and brought 17 new JEPs, out of which 3 were contributed by the community. Namely, JEP 315: "Improve Aarch64 Intrinsics", JEP 318: "Epsilon: A No-Op Garbage Collector" and JEP 331: "Low-Overhead Heap Profiling".

Collaboration with IBM, Apple, and SAP

On October 11, 2010, IBM, the biggest participant in the Apache Harmony project, decided to join Oracle on the OpenJDK project, effectively shifting its efforts from Harmony to OpenJDK. Bob Sutor, IBM's head of Linux and open source, blogged that "IBM will be shifting its development effort from the Apache Project Harmony to OpenJDK".
On November 12, 2010, Apple Inc. and Oracle Corporation announced the OpenJDK project for Mac OS X. Apple will contribute most of the key components, tools and technology required for a Java SE 7 implementation on Mac OS X, including a 32-bit and 64-bit HotSpot-based Java virtual machine, class libraries, a networking stack and the foundation for a new graphical client.
On January 11, 2011, the Mac OS X Port Project was created on OpenJDK, and Apple made the first public contribution of code to the project. The initial Apple contribution built on the OpenJDK BSD port.
In July 2011, SAP AG announced that SAP officially joined the OpenJDK project.

Components

The OpenJDK project produces a number of components: most importantly the virtual machine, the Java Class Library and the Java compiler.
The Web browser plugin and Web Start, which form part of Oracle Java, are not included in OpenJDK. Sun previously indicated that they would try to open-source these components, but neither Sun nor Oracle Corporation have done so.
The only currently available free plugin and Web Start implementations are those provided by IcedTea.
OpenJDK 9+ supports AOT compilation using GraalVM. The experimental flag enables the use of Graal JIT.

OpenJDK versions

OpenJDK was initially based only on the JDK 7 version of the Java platform.
Since JDK 10, the effort to produce an open-source reference implementation of the Java SE Platform was moved over to the JDK Project. Unlike past JDK Release Projects, which produced just one feature release and then terminated, this long-running project will produce all future JDK feature releases and will ship a feature release every six months according to a strict, time-based model.

OpenJDK builds

Due to Oracle no longer releasing updates for long-term support releases under a permissive license, other organizations have begun to publish their own builds, both in regular and long-term support terms. Many operating systems offer their own builds through their package manager, including many Linux distributions, and Microsoft Windows.
BuildOrganizationPermissive
license
TCK
tested
Built
unmodified
Commercial
support
Adoptium
Alibaba DragonwellAlibaba
Amazon CorrettoAmazon
Azul ZuluAzul Systems
BellSoft Liberica JDKBellSoft
Eclipse TemurinAdoptium
IBM Java SDK
IBM
IBM Semeru Runtime Certified EditionIBM
IBM Semeru Runtime Open EditionIBM
JetBrains RuntimeJetBrains
Microsoft build of OpenJDKMicrosoft
ojdkbuild
OpenLogic OpenJDKOpenLogic
GraalVM Community EditionGraalVM
Oracle GraalVM Enterprise EditionOracle
Oracle Java SEOracle
Oracle OpenJDKOracle
Red Hat build of OpenJDKRed Hat
SAP SapMachineSAP
Tencent KonaTencent