Jump to content

OpenJDK

From Alfawiki
OpenJDK
Company typeOpen-source project
IndustrySoftware development
Founded2006
FounderSun Microsystems
Area served
Worldwide
ProductsJava Development Kit (JDK)
OwnerOracle Corporation (after acquisition of Sun Microsystems)
Websiteopenjdk.java.net

OpenJDK (short for Open Java Development Kit) represents a free and open-source realization of the Java Platform, Standard Edition (Java SE). It was initially launched as a project by Sun Microsystems in 2006, before the company's acquisition by Oracle Corporation. Distributed under the terms of the GPL 2 with a linking exception, OpenJDK permits components connected to the Java Class Library to bypass typical GPL limitations. Since version 7, OpenJDK has served as the official reference implementation of Java SE and continues to be the most prevalent JDK distribution.

Sun's announcement and early releases

During JavaOne 2006, Sun revealed its intention to make Java open source. On October 25, 2006, Jonathan Schwartz confirmed that the core elements of the Java Platform would be released under an open-source license within one to two months.

Subsequently, on November 13, 2006, Sun published the Java HotSpot virtual machine along with its compiler as free software under the GPL. The company committed to releasing the entire JDK—including the Java Runtime Environment—under GPL by March 2007, excluding certain components for which redistribution rights were unavailable. This initiative aimed at removing vendor lock-in issues associated with Java, a goal supported by free-software advocate Richard Stallman.

Class library release

Fulfilling their 2007 pledge to provide an almost entirely open-source Java Development Kit (JDK), Sun made the full source code of the Java Class Library available under GPL on May 8, 2007. Nevertheless, some parts—mainly licensed from third-party vendors—remained proprietary and were excluded. These proprietary elements included significant portions of the Java graphical user interface (GUI). Sun intended to substitute these closed components with open-source alternatives to achieve a completely free class library.

At its initial release, roughly 4% of the OpenJDK class library was still proprietary. By May 2008, with OpenJDK 6, this figure dropped below 1%, mostly consisting of the SNMP implementation, which lies outside the official Java specifications—allowing OpenJDK builds without reliance on binary plugs. This dependency was fully eliminated in OpenJDK 7 (April 2009).

This transformation was driven by efforts from Sun Microsystems and the OpenJDK community throughout the first year following release. Each proprietary obstacle was either open-sourced or replaced. By December 2010, all binary plugs had been substituted with open-source equivalents, resulting in a completely open-source JDK free from proprietary binaries.

Community engagement and enhancements

On November 5, 2007, Red Hat signed Sun's broad contributor agreement, enabling its engineers to engage in all Sun-managed open-source projects. Red Hat also agreed to Sun's OpenJDK Community Technology Compatibility Kit (TCK) License Agreement, granting access to the official test suite that verifies conformance with the Java SE 6 specification.

That same month, November 2007, saw the formation of the Porters Group within OpenJDK aimed at facilitating porting efforts across various processor architectures and operating system platforms. Notable projects included the BSD port led by Kurt Miller and Greg Lewis and the Mac OS X port headed by Landon Fuller. Additionally, Bryan Varner’s team working on Haiku OS Java support was awaiting formal inclusion.

In December 2007, Sun migrated OpenJDK’s revision control system from TeamWare to Mercurial, later transitioning to Git and hosting on GitHub, which significantly boosted community involvement.

OpenJDK maintains rigorous contribution standards: all code submissions require review by an authorized committer and must be accompanied by signing the Sun/Oracle Contributor Agreement (SCA/OCA). Ideally, patches come with a test case using the jtreg framework that validates bug fixes. Initially, external contributions were infrequent and commits were restricted to Sun engineers until September 2008. By 2010, straightforward patches and backports could be integrated within hours.

An unofficial OpenJDK 6 port for OS/2 was released in 2011 and is included in its derivative distribution ArcaOS.

On September 25, 2013, Microsoft partnered with Azul Systems to introduce Zulu—an OpenJDK build optimized specifically for Windows Azure cloud environments. Zulu is freely accessible via Zulu.org and distributed through Amazon Web Services via Canonical's Juju Charm Store, Docker Hub, and Azul’s own repositories. Azul actively contributes bug fixes and improvements back into OpenJDK and employs several committers involved in the project. Following Red Hat’s withdrawal from leading OpenJDK 6 in early 2017, Azul Systems took over this responsibility.

Since April 2016, community-supported OpenJDK builds for Microsoft Windows have been available on GitHub through the ojdkbuild project and are released alongside Oracle JDK updates. Beginning with build 8u151, its MSI installer optionally includes a component for Java Web Start, based on the IcedTea-Web initiative.

A port of OpenJDK 8 for OpenVMS running on Itanium hardware was introduced in 2020.

The volume of external contributions to OpenJDK has grown steadily over time. The September 2018 release of OpenJDK 11 incorporated around 20% fixes originating from outside contributors and introduced seventeen new JEPs (Java Enhancement Proposals). Among these community-driven features were JEP 315 ("Improve Aarch64 Intrinsics" developed by BellSoft), JEP 318 ("Epsilon: A No-Op Garbage Collector" contributed by Red Hat), and JEP 331 ("Low-Overhead Heap Profiling" provided by Google).

Partnerships with IBM, Apple, and SAP

On October 11, 2010, IBM, previously the top contributor to the Apache Harmony initiative, redirected its efforts towards the OpenJDK project. This move aligned IBM with Oracle, marking a departure from Harmony. Bob Sutor, IBM's lead for Linux and open source initiatives, confirmed this strategic realignment aimed at consolidating open source Java development.

Shortly thereafter, on November 12, 2010, Apple Inc. collaborated with Oracle to introduce the OpenJDK project tailored for Mac OS X, following Apple's decision to phase out its proprietary Java runtime. Apple provided essential elements for implementing Java SE 7 on Mac OS X, such as both 32-bit and 64-bit HotSpot JVMs, class libraries, networking infrastructure, and a foundation for a new graphical client interface. This partnership enabled open source developers to access Apple's Java technologies.

By January 11, 2011, Apple publicly contributed code to the OpenJDK Mac OS X Port Project for the first time. This contribution built upon the existing BSD port and improved the build system to support universal binaries compatible with Mac OS X Java tools.

In July 2011, SAP AG formally became a member of OpenJDK by signing the Oracle Contributor Agreement. This agreement permitted SAP's JVM development team to actively submit patches and enhancements to the project.

Core Components

OpenJDK delivers fundamental elements including the virtual machine (HotSpot), the Java Class Library, and the Java compiler (javac).

Notably absent from OpenJDK are the Web browser plugin and Web Start, which are part of Oracle Java. Although Sun Microsystems initially intended to release these components as open source, neither Sun nor Oracle Corporation has done so. The only freely available implementations of these features come from IcedTea.

Starting with OpenJDK 9 and later versions, support for AOT compilation using GraalVM (as specified in JEP 295) was introduced. Additionally, an experimental flag enables the Graal JIT compiler (per JEP 317).

OpenJDK Releases

The initial OpenJDK release was based on the JDK 7 version of the Java platform.

From JDK 10 onward, development of the open-source reference implementation for the Java SE Platform transitioned to the JDK Project. Unlike prior JDK Release Projects, this continuous effort delivers all subsequent JDK feature releases following a strict six-month time-driven schedule.

OpenJDK Distributions

Following Oracle's discontinuation of updates for long-term support (LTS) releases under a permissive license, multiple organizations now provide their own OpenJDK builds offering both regular and LTS versions. These builds are commonly distributed through package managers across many Linux distributions and Windows platforms.

Build Organization LTS Permissive
license
TCK
tested
Built
unmodified
Commercial
support
Template:Rh | AdoptOpenJDK
(renamed Eclipse Temurin in 2021)
Yes Yes Yes Template:Optional Template:Optional (IBM)
Template:Rh | Alibaba Dragonwell Alibaba Yes Yes No No No
Template:Rh | Amazon Corretto Amazon Yes Yes Yes Yes Template:Optional (AWS)
Template:Rh | Azul Zulu Azul Systems Yes Yes Yes No Template:Optional
Template:Rh | BellSoft Liberica JDK BellSoft Yes Yes Yes No Template:Optional
Template:Rh | Eclipse Temurin Adoptium Yes Yes Yes No Template:Optional (Azul, IBM, Red Hat)
Template:Rh | IBM Java SDK
(currently IBM Semeru Runtime Certified Edition at version 11)
IBM Yes No Yes No Yes
Template:Rh | IBM Semeru Runtime Certified Edition IBM Yes Yes Yes No Template:Optional (IBM)
Template:Rh | IBM Semeru Runtime Open Edition IBM Yes Yes No No Template:Optional (IBM)
Template:Rh | JetBrains Runtime JetBrains Yes Yes No No No
Template:Rh | Microsoft Build of OpenJDK Microsoft Yes Yes Yes No Template:Optional (Azure)
Template:Rh | ojdkbuild
(Discontinued)
Yes Yes No Yes No

-

Template:Rh | OpenLogic OpenJDK

style="background:#9EFF9E;color:black;vertical-align:middle;text-align:center;" class="table-yes"|Yes

style="background:#9EFF9E;color:black;vertical-align:middle;text-align:center;" class="table-yes"|Yes

style="background:#FFC7C7;color:black;vertical-align:middle;text-align:center;" class="table-no"|NoTemplate:Cn-needed

style="background:#FFC7C7;color:black;vertical-align:middle;text-align:center;" class="table-no"|No

Template:Optional

-

Template:Rh | GraalVM Community Edition

style="background:#9EFF9E;color:black;vertical-align:middle;text-align:center;" class="table-yes"|Yes

style="background:#9EFF9E;color:black;vertical-align:middle;text-align:center;" class="table-yes"|Yes

style="background:#9EFF9E;color:black;vertical-align:middle;text-align:center;" class="table-yes"|Yes

style="background:#FFC7C7;color:black;vertical-align:middle;text-align:center;" class="table-no"|No

style="background:#FFC7C7;color:black;vertical-align:middle;text-align:center;" class="table-no"|No

-

Template:Rh | Oracle GraalVM Enterprise Edition

Oracle Corporation

style="background:#9EFF9E;color:black;vertical-align:middle;text-align:center;" class="table-yes"|Yes

style="background:#FFC7C7;color:black;vertical-align:middle;text-align:center;" class="table-no"|No

style="background:#9EFF9E;color:black;vertical-align:middle;text-align:center;" class="table-yes"|Yes

style="background:#FFC7C7;color:black;vertical-align:middle;text-align:center;" class="table-no"|No

style="background:#9EFF9E;color:black;vertical-align:middle;text-align:center;" class="table-yes"|Yes

-

Template:Rh | Oracle Java SE

Oracle Corporation

style="background:#9EFF9E;color:black;vertical-align:middle;text-align:center;" class="table-yes"|Yes

style="background:#FFC7C7;color:black;vertical-align:middle;text-align:center;" class="table-no"|No

style="background:#9EFF9E;color:black;vertical-align:middle;text-align:center;" class="table-yes"|Yes

style="background:#FFC7C7;color:black;vertical-align:middle;text-align:center;" class="table-no"|No

style="background:#9EFF9E;color:black;vertical-align:middle;text-align:center;" class="table-yes"|Yes

-

Template:Rh | Oracle OpenJDK

Oracle Corporation

style="background:#FFC7C7;color:black;vertical-align:middle;text-align:center;" class="table-no"|No

style="background:#9EFF9E;color:black;vertical-align:middle;text-align:center;" class="table-yes"|Yes

style="background:#9EFF9E;color:black;vertical-align:middle;text-align:center;" class="table-yes"|Yes

style="background:#FFC7C7;color:black;vertical-align:middle;text-align:center;" class="table-no"|No

style="background:#FFC7C7;color:black;vertical-align:middle;text-align:center;" class="table-no"|No

-

Template:Rh | Red Hat build of OpenJDK

Red Hat

style="background:#9EFF9E;color:black;vertical-align:middle;text-align:center;" class="table-yes"|Yes

style="background:#9EFF9E;color:black;vertical-align:middle;text-align:center;" class="table-yes"|Yes

style="background:#9EFF9E;color:black;vertical-align:middle;text-align:center;" class="table-yes"|Yes

style="background:#FFC7C7;color:black;vertical-align:middle;text-align:center;" class="table-no"|No

style="background:#9EFF9E;color:black;vertical-align:middle;text-align:center;" class="table-yes"|Yes

-

Template:Rh | SAP SapMachine

SAP

style="background:#9EFF9E;color:black;vertical-align:middle;text-align:center;" class="table-yes"|Yes

style="background:#9EFF9E;color:black;vertical-align:middle;text-align:center;" class="table-yes"|Yes

style="background:#9EFF9E;color:black;vertical-align:middle;text-align:center;" class="table-yes"|Yes

style="background:#FFC7C7;color:black;vertical-align:middle;text-align:center;" class="table-no"|No

Template:Optional (SAP products)

-

Template:Rh | Tencent KonaJDK

Tencent

style="background:#9EFF9E;color:black;vertical-align:middle;text-align:center;" class="table-yes"|Yes

style="background:#9EFF9E;color:black;vertical-align:middle;text-align:center;" class="table-yes"|Yes

style="background:#9EFF9E;color:black;vertical-align:middle;text-align:center;" class="table-yes"|Yes

style="background:#FFC7C7;color:black;vertical-align:middle;text-align:center;" class="table-no"|No

Template:Optional


IcedTea and Distribution Inclusion

To incorporate OpenJDK into Fedora and other free Linux distributions, it was necessary to ensure the build process relied solely on free software components. Initially, this was unfeasible due to proprietary parts within the class library and the presumption that the JDK used to compile OpenJDK was a Sun JDK. To overcome these challenges, Red Hat initiated the IcedTea project in June 2007. This effort started as a hybrid combining OpenJDK with GNU Classpath, intended to bootstrap OpenJDK by substituting encumbered elements with GNU Classpath code.

On November 5, 2007, Red Hat formalized its commitment by signing both the Sun Contributor Agreement and the OpenJDK Community TCK License. This alignment facilitated IcedTea’s integration with Fedora and JBoss projects, offering free software replacements for proprietary OpenJDK components.

By May 2008, IcedTea 6—composed entirely of open-source code—was included in Fedora 9 and Ubuntu 8.04 releases. Fedora 9 marked the first distribution to utilize OpenJDK 6 source code from Sun instead of OpenJDK 7 and adopted the OpenJDK package name under trademark agreement. Ubuntu initially distributed IcedTea7 before transitioning back to IcedTea6. Debian incorporated IcedTea6 in its Lenny release and introduced OpenJDK-6 into its unstable branch in July 2008, eventually promoting it to stable. Additionally, OpenJDK became accessible on openSUSE,Cite error: Invalid <ref> tag; refs with no name must have content Red Hat Enterprise Linux, and related derivatives such as CentOS.

In June 2008, Red Hat announced that Fedora 9’s OpenJDK binaries built via IcedTea 6 had successfully passed TCK testing, confirming full compliance with Java 6 standards. By July 2009, an IcedTea 6 build for Ubuntu 9.04 similarly cleared all Java SE 6 TCK evaluations.

Starting August 2008, OpenJDK 7 became operational on macOS along with various BSD-based operating systems.

Within Android Nougat, OpenJDK replaced the now-obsolete Apache Harmony as the foundation for Java libraries in the operating system’s source code. This transition aimed to harmonize Java platform implementations and address Google's legal dispute with Oracle concerning Java API usage. Google asserted that Oracle had granted permission to use OpenJDK code under GPL licensing terms.

See also

External links