| OpenJDK | |
|---|---|
| Original author | Sun Microsystems |
| Developers | Oracle, OpenJDK and Java Community,Red Hat,Azul Systems,IBM,Microsoft,Amazon,Apple,SAP,Sullivan Delaby |
| Initial release | May 8, 2007; 18 years ago (2007-05-08) |
| Stable release | |
| Repository | |
| Written in | C++ andJava |
| Operating system | Linux,FreeBSD,macOS,Microsoft Windows,OpenIndiana,OpenVMS; several other ports in progress |
| Type | Java development kit |
| License | GPL-2.0-only withlinking exception |
| Website | openjdk |
OpenJDK (Open Java Development Kit) is afree and open-source implementation of theJava Platform, Standard Edition (Java SE).[2] It is the result of an effortSun Microsystems began in 2006, four years before the company was acquired byOracle Corporation. The implementation is licensed under theGNU General Public License 2 with alinking exception, preventing components that linked to theJava Class Library becoming subject to the terms of the GPL license. OpenJDK is the officialreference implementation of Java SE since version 7, and is the most popular distribution of the JDK.[3][4][5]
Sun announced inJavaOne 2006 that Java would become open-source software,[6][7] and on October 25, 2006, at the Oracle OpenWorld conference,Jonathan Schwartz said that the company intended to announce the open-sourcing of the coreJava Platform within 30 to 60 days.[8]
Sun released the JavaHotSpot virtual machine and compiler asfree software under theGNU General Public License on November 13, 2006, with a promise that the rest of the JDK (which includes theJava Runtime Environment) 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".[9] According to free-software advocateRichard Stallman, this would end the "Java trap", thevendor lock-in that he argues applied to Java and programs written in Java.[10]
Following their promise to release aJava Development Kit (JDK) based almost completely on free and open-source code in the first half of 2007,[11] Sun released the completesource 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 tore-license under the GPL.[12] Included in the list of encumbered parts were several major components of the Javagraphical user interface (GUI). Sun stated that it planned to replace the remainingproprietary 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.[13] By the appearance of OpenJDK 6 in May 2008, less than 1% (theSNMP implementation,[14] which is not part of the Java specification) remained,[15] making it possible to build OpenJDK without any binary plugs.[14] The binary plug requirement was later dropped from OpenJDK 7 as part of b53 in April 2009.[16]
This was made possible, over the course of the first year, by the work ofSun Microsystems and the OpenJDK community. Each encumbrance[17] was either released asfree and open-source software or replaced with an alternative. Beginning in December 2010, all the so-calledbinary plugs were replaced byopen-source replacements, making the whole JDK open sourced and thebinary plugs not necessary anymore.[18]
On November 5, 2007,Red Hat announced an agreement with Sun, signing Sun's broad contributor agreement (which covers participation in all Sun-led free and open-source software projects by all Red Hat engineers) and Sun's OpenJDK CommunityTechnology Compatibility Kit (TCK) License Agreement (which gives the company access to the test suite that determines whether a project based on OpenJDK complies with the Java SE 6 specification).[19]
Also in November 2007, thePorters Group was created on OpenJDK to aid in efforts to port OpenJDK to differentprocessor architectures andoperating systems. TheBSD porting project led by Kurt Miller and Greg Lewis and theMac OS X porting project (based on the BSD one) 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 theHaiku Java Team led by Bryan Varner.[20]
In December 2007, Sun moved therevision control of OpenJDK fromTeamWare toMercurial (and later toGit andGitHub), as part of the process of releasing it toopen-source communities.[21][22]
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 (SCA/OCA).[23] Preferably, there should also be ajtreg[24] test demonstrating the bug has been fixed. Initially, the external patch submission process was slow[25] and, until September 2008, commits to thecodebase were only made by Sun engineers.[26] The process has improved and, as of 2010[update], simple patches and backports from OpenJDK 7 to OpenJDK 6 can take place within hours rather than days.[27]
In 2011, an unofficial port of OpenJDK 6.0 to OS/2 was first released.[28] This port is included in the OS/2 derivativeArcaOS.[29]
On 25 September 2013, Microsoft andAzul Systems collaborated to create Zulu,[30] a build of OpenJDK for users of the Windows Azure cloud. Zulu is available as a free download from the community siteZulu.org. It is also possible to get Zulu on Amazon Web Services[31] via Canonical's Juju Charm Store,[32] the Docker Hub,[33] and Azul Systems repositories. Azul contributes bug fixes and enhancements back to the OpenJDK project and has several project committers on staff.[34] Red Hat resigned leadership of OpenJDK 6 at the beginning of 2017 and this was then taken up by Azul Systems.[35][36]
Since April 2016 there are unsupported community builds of OpenJDK forMicrosoft Windows onGitHub in the project ojdkbuild[37] which are released in pace with updates forOracle JDK. From build 8u151 on, the MSI-installer offers an optional component for usingJava Web Start based on theIcedTea-Web project.
In 2020, a port of OpenJDK 8 toOpenVMS on theItanium platform was released.[38]
The number of external contributions to OpenJDK is growing since project inception. OpenJDK 11, released in September 2018, received 20% of external fixes[39] and brought 17 new JEPs (features), out of which 3 were contributed by the community. Namely, JEP 315: "Improve Aarch64 Intrinsics" (contributed byBellSoft), JEP 318: "Epsilon: A No-Op Garbage Collector" (by Red Hat) and JEP 331: "Low-Overhead Heap Profiling" (contributed by Google).[40]
On October 11, 2010,IBM, by far the biggest participant in theApache Harmony project, decided to joinOracle on the OpenJDK project, effectively shifting its efforts from Harmony to OpenJDK.[41][42] 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".[43]
On November 12, 2010,Apple Inc. (just three weeks after deprecating its own Java runtime port[44]) 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.[45]
On January 11, 2011, the Mac OS X Port Project was created on OpenJDK, andApple made the first public contribution of code to the project. The initial Apple contribution built on the OpenJDKBSD port.[46]
In July 2011,SAP AG announced that SAP officially joined the OpenJDK project.[47]
The OpenJDK project produces a number of components: most importantly thevirtual machine (HotSpot), theJava Class Library and the Java compiler (javac).
The Web browser plugin andWeb Start, which form part ofOracle 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.[48]The only currently available free plugin and Web Start implementations as of 2016[update] are those provided byIcedTea.[citation needed]
OpenJDK 9+ supportsAOT compilation (jaotc) usingGraalVM (JEP 295).[49] The experimental-XX:+EnableJVMCIProduct flag enables the use of Graal JIT (JEP 317).[50]
OpenJDK was initially based only on theJDK 7 version of the Java platform.[51]
Since JDK 10, the effort to produce an open-source reference implementation of the Java SE Platform was moved over to the JDK Project.[52] 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.[53]
This sectionis missing information about presence of installer providing system integration (Windows registry, Mac framework, Linux MIME). Please expand the section to include this information. Further details may exist on thetalk page.(November 2020) |
Due to Oracle no longer releasing updates forlong-term support (LTS) releases under a permissive license, other organizations have begun to publish their own builds, both in regular and long-term support terms.[54][55][56] Many operating systems offer their own builds through theirpackage manager, including many Linux distributions, andMicrosoft Windows.
| Build | Organization | LTS | Permissive license | TCK tested | Built unmodified | Commercial support |
|---|---|---|---|---|---|---|
| Adoptium[57] (known as AdoptOpenJDK before 2021)[58] | Yes | Yes | Yes | Optional | Optional (IBM) | |
| Alibaba Dragonwell[59] | Alibaba | Yes | Yes | No | No | No |
| Amazon Corretto[60] | Amazon | Yes | Yes | Yes | Yes | Optional (on AWS) |
| Azul Zulu[61] | Azul Systems | Yes | Yes | Yes | No | Optional |
| BellSoft Liberica JDK[62] | BellSoft | Yes | Yes | Yes | No | Optional |
| Eclipse Temurin[63] | Adoptium | Yes | Yes | Yes | No | Optional (Azul, IBM, Red Hat) |
| IBM Java SDK[64] (moved to IBM Semeru Runtime Certified Edition at version 11) | IBM | Yes | No | Yes | No | Yes |
| IBM Semeru Runtime Certified Edition[65] | IBM | Yes | Yes[66][67] | Yes | No | Optional (IBM) |
| IBM Semeru Runtime Open Edition[65] | IBM | Yes | Yes[67] | No | No | Optional (IBM) |
| JetBrains Runtime[68] | JetBrains | Yes | Yes | No | No | No |
| Microsoft build of OpenJDK[69] | Microsoft | Yes | Yes | Yes | No | Optional (on Azure) |
| ojdkbuild[70] (Discontinued) | Yes | Yes | No | Yes | No | |
| OpenLogic OpenJDK[71] | OpenLogic | Yes | Yes | No[citation needed] | No | Optional |
| GraalVM Community Edition[72] | GraalVM | Yes | Yes | Yes | No | No |
| Oracle GraalVM Enterprise Edition[73] | Oracle | Yes | No | Yes | No | Yes |
| Oracle Java SE[74] | Oracle | Yes | No | Yes | No | Yes |
| Oracle OpenJDK[75] | Oracle | No[75] | Yes[76] | Yes | No[77][78] | No |
| Red Hat build of OpenJDK[79] | Red Hat | Yes | Yes | Yes | No | Yes |
| SAP SapMachine[80] | SAP | Yes | Yes | Yes | No | Optional (for SAP products) |
| Tencent Kona[81] | Tencent | Yes | Yes | Yes | No | Optional |
In order to bundle OpenJDK inFedora and otherfreeLinux distributions, OpenJDK needed to be buildable using onlyfree software components. Due to theencumbered components in theclass 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.[82]It began life as an OpenJDK/GNU Classpath hybrid that could be used tobootstrap OpenJDK, replacing the encumbrances with code from GNU Classpath.[83][84]
On November 5, 2007, Red Hat signed both the Sun Contributor Agreement and the OpenJDK CommunityTCK License.[85] One of the first benefits of this agreement is tighter alignment with the IcedTea project, which brings togetherFedora, the Linux distribution, andJBoss, 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, theFedora 9[15][86] andUbuntu 8.04[87]distributions included IcedTea 6, based completely onfree andopen source code.[88]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[89]) instead of IcedTea.[15]Ubuntu also first packaged IcedTea7[90] before later moving to IcedTea6. Packages for IcedTea6 were also created forDebian and included inLenny. On July 12, 2008,Debian accepted OpenJDK-6 in unstable,[91][92] and it later was included instable.[93] OpenJDK is also available onopenSUSE,[94]Red Hat Enterprise Linux and RHEL derivatives such asCentOS.[95]
In June 2008, Red Hat announced that the packaged binaries for OpenJDK onFedora 9, built using IcedTea 6, had passed theTechnology Compatibility Kit tests and could claim to be a fully compatible Java 6 implementation.[96] In July 2009, an IcedTea 6 binary build forUbuntu 9.04 passed all of the compatibility tests in the Java SE 6TCK.[97]
Since August 2008, OpenJDK 7 is usable onmacOS and otherBSD variants.[98]
OnAndroid Nougat, OpenJDK replaced the now-discontinuedApache Harmony as the Java libraries in the source code of themobile operating system.Google was in alegal dispute with Oracle over claims of copyright and patent infringement through its use of re-implementations of copyrighted Java APIs via Harmony. While also stating that this change was to create a more consistent platform between Java on Android and other platforms, the company admitted that the switch was motivated by the lawsuit, arguing that Oracle had authorized its use of the OpenJDK code by licensing it under the GPL.[99]
Thomas Fitzsimmons updated the Fedora 9 release notes source pages to reflect that Fedora 9 would ship with OpenJDK 6 instead of the IcedTea implementation of OpenJDK 7. Fedora 9 (Sulphur) is due to release in May 2008.
IBM will be shifting its development effort from the Apache Project Harmony to OpenJDK. For others who wish to do the same, we'll work together to make the transition as easy as possible. IBM will still be vigorously involved in other Apache projects.
Oracle and Apple today 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. OpenJDK will make Apple's Java technology available to open source developers so they can access and contribute to the effort.
I'm very happy to let you know that today we made the first public contribution of code to the OpenJDK project for Mac OS X. This initial contribution builds on the hard work of the BSD port, and initially has the same functionality. Today's contribution simply modifies the build process to create universal binary, and produces a .jdk bundle which is recognized by Java Preferences and the JVM detection logic in Mac OS X.
I'm really happy that as of today, SAP has signed the Oracle Contributor Agreement (OCA). This means that with immediate effect the SAP JVM developers can officially join the discussions on the various OpenJDK mailing lists and contribute patches and enhancements to the project.
AOT brings about a new tool called 'jaotc' which uses Graal as the backend (to generate code)
Sun did make that promise, and we plan to keep it. But in the six months since the November 2006 announcement, it has become clear that doing this is far more complex than just changing the license and publishing the source code.
{{cite web}}: CS1 maint: bot: original URL status unknown (link)