OpenJDK
Lua error in Module:Infobox at line 314: malformed pattern (missing ']'). OpenJDK (Open Java Development Kit) is a free and open source implementation of the Java Platform, Standard Edition (Java SE).[1] It is the result of an effort Sun Microsystems began in 2006. The implementation is licensed under the GNU General Public License (GNU GPL) 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.[2][3][4] Google's next forthcoming Android also uses it.[5]
Contents
Components
The OpenJDK project consists of a number of components. Principally, these are the virtual machine (HotSpot), the Java Class Library and the Java compiler (javac).
The Web browser plugin and Web Start, which are 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.[6] The only currently available free plugin and Web Start implementation are those provided by IcedTea.
Supported JDK versions
OpenJDK was initially based only on the JDK 7 version of the Java platform.[7]
There are several separate OpenJDK projects:
- The OpenJDK 9 project, which is the basis for JDK 9.
- The OpenJDK 8 project, which is the basis for JDK 8, was released on 18 March 2014.
- The OpenJDK 8u project, which is based on JDK 8 and produces updates to the existing Java 8 releases.
- The OpenJDK 7u project, which is based on JDK 7 and produces updates to the existing Java 7 releases.
- The OpenJDK 6 project, which is based on JDK 7, retrofitted to provide an open-source version of Java 6.[8][9]
IcedTea and inclusion in software distributions
<templatestyles src="Module:Hatnote/styles.css"></templatestyles>
In order to bundle OpenJDK in Fedora and other free GNU/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.[10] It began life as an OpenJDK/GNU Classpath hybrid that could be used to bootstrap OpenJDK, replacing the encumbrances with code from GNU Classpath.[11][12]
On November 5, 2007, Red Hat signed both the Sun Contributor Agreement and the OpenJDK Community TCK License.[13] 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[14][15] and Ubuntu 8.04[16] distributions included IcedTea 6, based completely on free and open source code.[17] 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.[14] Ubuntu also first packaged IcedTea7[18] 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,[19][20] and it is now in stable.[21] OpenJDK is also available on openSUSE,[22] Red Hat Enterprise Linux and RHEL derivatives such as CentOS.[23]
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.[24] In July 2009, an IcedTea 6 binary build for Ubuntu 9.04 passed all of the compatibility tests in the Java SE 6 TCK.[25]
Since August 2008, OpenJDK 7 is runnable on Mac OS X and other BSD variants.[26]
History
<templatestyles src="Module:Hatnote/styles.css"></templatestyles>
Sun's promise and initial release
Sun announced in JavaOne 2006 that Java would become open-source software,[27][28] 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.[29]
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 (which includes the Java 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".[30] 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.[31]
Release of the class library
Following their promise to release a Java Development Kit (JDK) based almost completely on free and open source code in the first half of 2007,[32] 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.[33] Included in the list of encumbered parts were several major components of the Java graphical user interface (GUI). 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.[34] By the appearance of OpenJDK 6 in May 2008, less than 1% (the SNMP implementation,[35] which is not part of the Java specification) remained,[14] making it possible to build OpenJDK without any binary plugs.[35] The binary plug requirement was later dropped from OpenJDK 7 as part of b53 in April 2009.[36]
This was made possible, over the course of the first year, by the work of Sun Microsystems and the OpenJDK community. Each encumbrance[37] 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.[38]
Community improvements
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 Community Technology 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).[39]
Also on 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 is led by Kurt Miller and Greg Lewis and the Mac OS X porting project (based on the BSD one) 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.[40]
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.[41][42]
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[43]) Preferably, there should also be a jtreg[44] test demonstrating that the bug has been fixed. Initially, the external patch submission process was slow[45] and commits to the codebase were only made by Sun engineers, until September 2008.[46] 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.[47]
On 25 September 2013, Microsoft and Azul Systems collaborated to create Zulu,[48] a build of OpenJDK for users of the Windows Azure cloud. Zulu is available as a free download from the community site at Zulu.org. You can also get Zulu on Amazon Web Services,[49] via Canonical’s Juju Charm Store,[50] the Docker Hub,[51] and Azul Systems repositories.
Collaboration with IBM, Apple, and SAP
On October 11, 2010, IBM, by far the biggest participant in the Apache Harmony project, decided to join Oracle on the OpenJDK project, effectively shifting its efforts from Harmony to OpenJDK.[52][53] 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".[54]
On November 12, 2010, Apple Inc. (just three weeks after deprecating its own Java runtime port[55]) 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.[56]
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.[57]
In July 2011, SAP AG announced that SAP officially joined the OpenJDK project.[58]
Google's use
In December 2015, Google announced that OpenJDK would replace Apache Harmony as the Java libraries of the Android operating system.[59] Google has already used OpenJDK code, and released it as source code, with its own contributions in AOSP, telling US courts so (but commercial binary implementations using it are still some time off), and that it protects them against Oracle as OpenJDK is under the GPL.[5]
See also
- javac, Oracle Corporation's Java compiler, now under a GPL license
- HotSpot, Oracle Corporation's Java virtual machine, now under a GPL license
- Java Class Library
- Free Java implementations
- Java Platform, Standard Edition
- IcedTea
References
<templatestyles src="Reflist/styles.css" />
Cite error: Invalid <references>
tag; parameter "group" is allowed only.
<references />
, or <references group="..." />
External links
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Moving to OpenJDK as the official Java SE 7 Reference Implementation
- ↑ Java Platform, Standard Edition 7 Reference Implementations
- ↑ Java Platform, Standard Edition 8 Reference Implementations
- ↑ 5.0 5.1 Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ It will be (Open)JDK7 where OpenJDK==JDK | Java.net. Weblogs.java.net. Retrieved on 2013-08-09.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ 14.0 14.1 14.2 Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.[dead link]
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Announcing OpenJDK 6 Certification for Ubuntu 9.04 (jaunty)
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.[dead link]
- ↑ Lua error in package.lua at line 80: module 'strict' not found.[dead link]
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Oracle and Sun. Sun.com (2011-10-04). Retrieved on 2013-08-09.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ 35.0 35.1 Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Broad contributor agreement and TCK License pave way for a fully compatible, free and open source Java Development Kit for Red Hat Enterprise Linux
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.[dead link]
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- ↑ Lua error in package.lua at line 80: module 'strict' not found.
- Pages with reference errors
- Use mdy dates from June 2013
- Java platform
- Java (programming language)
- Java (programming language) libraries
- Java virtual machine
- Free software programmed in C++
- Free software programmed in Java (programming language)
- Free virtualization software
- Articles with dead external links from October 2010
- Articles with dead external links from December 2011