OpenJDK (Open Java Development Kit) is a free and open-source implementation of the Java Platform, Standard Edition (Java SE). It is the result of an effort Sun Microsystems began in 2006. The implementation is licensed under the GPL-2.0-only with a linking exception. Were it not for the GPL linking exception, components that linked to the Java Class Library would be subject to the terms of the GPL license. OpenJDK is the official reference implementation of Java SE since version 7.
Components
The OpenJDK project produces a number of components: most importantly the virtual machine (HotSpot), the Java Class Library and the Java compiler (javac).
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 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 (JEP 295). The experimental flag enables the use of Graal JIT (JEP 317).
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 (LTS) releases under a permissive license, others have begun offering builds. Linux distributions have always offered their own builds, and Windows also offers one now, which can be installed with the Windows Package Manager. For example, to install OpenJDK 17:
winget install Microsoft.OpenJDK.17
IcedTea and inclusion in software distributions
In order to bundle OpenJDK in Fedora and other free Linux distributions, OpenJDK needed to be buildable using only free software components. Due to the encumbered components in the class library and implicit assumptions within the build system that the JDK being used to build OpenJDK was a Sun JDK, this was not possible. To achieve openness, Red Hat started the IcedTea project in June 2007. It began life as an OpenJDK/GNU Classpath hybrid that could be used to bootstrap OpenJDK, replacing the encumbrances with code from GNU Classpath.
On November 5, 2007, Red Hat 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, the Linux distribution, and JBoss, the application server, technologies in a Linux environment. IcedTea provided free software alternatives for the few remaining proprietary sections in the OpenJDK project.
In May 2008, the Fedora 9 and Ubuntu 8.04
distributions included IcedTea 6, based completely on free and open source code. Fedora 9 was the first version to be shipped with IcedTea6, based on the OpenJDK6 sources from Sun rather than OpenJDK7. It was also the first to use OpenJDK for the package name (via the OpenJDK trademark agreement) instead of IcedTea. Ubuntu also first packaged IcedTea7 before later moving to IcedTea6. Packages for IcedTea6 were also created for Debian and included in Lenny. On July 12, 2008, Debian accepted OpenJDK-6 in unstable, and it later was included in stable. OpenJDK is also available on openSUSE, Red Hat Enterprise Linux and RHEL derivatives such as CentOS.
In June 2008, Red Hat announced that the packaged binaries for OpenJDK on Fedora 9, built using IcedTea 6, had passed the Technology Compatibility Kit tests and could claim to be a fully compatible Java 6 implementation. In July 2009, an IcedTea 6 binary build for Ubuntu 9.04 passed all of the compatibility tests in the Java SE 6 TCK.
Since August 2008, OpenJDK 7 is usable on macOS and other BSD variants.