Developer(s) | GNU Classpath |
---|---|
Stable release | |
Repository | github |
Written in | C, C++ and Java |
Operating system | Linux, *BSD, macOS, Windows, Solaris |
Platform | IA-32, x86-64, ARM, AArch64, sparc, sparc64, ppc, ppc64, ppc64le, s390, s390x |
Type | Java virtual machine and Java Library |
License | GNU GPL+linking exception |
Website | icedtea |
Developer(s) | GNU Classpath (with Red Hat until 2.6.22) |
---|---|
Stable release | |
Repository | github |
Written in | C, C++ and Java |
Operating system | Linux, *BSD, macOS, Windows, Solaris |
Platform | IA-32, x86-64, ARM, AArch64, sparc, sparc64, ppc, ppc64, ppc64le, s390, s390x |
Type | Java virtual machine and Java Library |
License | GNU GPL+linking exception |
Website | icedtea |
Developer(s) | Red Hat & GNU Classpath |
---|---|
Final release | |
Repository | icedtea |
Written in | C, C++ and Java |
Operating system | Linux, *BSD, macOS, Windows, Solaris |
Platform | IA-32, x86-64, ARM, sparc, sparc64, ppc, ppc64, s390, s390x |
Type | Java virtual machine and Java Library |
License | GPL+linking exception |
Website | icedtea |
Developer(s) | Red Hat & GNU Classpath |
---|---|
Stable release | |
Repository | github |
Written in | C++ and Java |
Operating system | Linux, *BSD, OS X, Windows, Solaris |
Type | Java Web Start support and Java web plugin for applets |
License | GPL+linking exception |
Website | icedtea |
Developer(s) | Red Hat & GNU Classpath |
---|---|
Stable release | |
Repository | icedtea |
Written in | C and Java |
Operating system | Linux, *BSD, OS X, Windows, Solaris |
Type | Sound support |
License | GPL+linking exception |
Website | icedtea |
IcedTea is a build and integration project for OpenJDK launched by Red Hat in June 2007. [3] IcedTea also includes some addon libraries: IcedTea-Web is a free software implementation of Java Web Start and the Java web browser applet plugin. IcedTea-Sound is a collection of plugins for the Java sound subsystem, including the PulseAudio provider which used to be included with IcedTea. The Free Software Foundation recommends that all Java programmers use IcedTea as their development environment. [4]
Historically, the initial goal of the IcedTea project was to make the OpenJDK software, which Sun Microsystems released as free software in 2007, usable without requiring any proprietary software, and hence make it possible to add OpenJDK to Fedora and other Linux distributions that insist on free software. This goal was met, and a version of IcedTea based on OpenJDK was packaged with Fedora 8 in November 2007. April 2008 saw the first release [5] of a new variant, IcedTea6, which is based on Sun's build drops of OpenJDK6, a fork of the OpenJDK with the goal of being compatible with the existing JDK6. This was released in Ubuntu and Fedora in May 2008. The IcedTea package in these distributions has been renamed to OpenJDK using the OpenJDK trademark notice. In June 2008, the Fedora build passed Sun's rigorous TCK testing [6] on x86 and x86-64. IcedTea 2, the first version based on OpenJDK 7, was released in October 2011. [7] IcedTea 3, the first version based on OpenJDK 8, was released in April 2016. [8] Support for IcedTea 1 was dropped in January 2017. [9]
This project was created following Sun's release under open source licenses of its HotSpot Virtual Machine and Java compiler in November 2006, and most of the source code of the class library in May 2007. However, parts of the class library, such as font rendering, colour management and sound support, were only provided as proprietary binary plugins. This was because the source code for these plugins was copyrighted to third parties, rather than Sun Microsystems. [10] [11] The released parts were published under the terms of the GNU General Public License, a free software license.
Due to these missing components, it was not possible to build OpenJDK only with free software components. Sun aimed to negotiate with the license holders to allow this code to be released under a free software license, or failing that, to replace these proprietary elements with alternative implementations. With the plugins replaced, the class library would then be completely free. Sun has continued to use the proprietary code in their certified binary releases. [12]
Following the announcement, the IcedTea project was started and was formally announced on June 7, 2007, [13] with a build repository provided by the GNU Classpath team. The team could not call their software product "OpenJDK" because this is a trademark which was owned by Sun Microsystems. They instead decided to use the temporary name "IcedTea". [14]
On November 5, 2007, Red Hat signed both the Sun Contributor Agreement and the OpenJDK Community Technology Compatibility Kit (TCK) License. The press release suggested that this would benefit the IcedTea project. [15] Simon Phipps suggested the possibility of IcedTea being hosted on openjdk.java.net, [16] and Mark Reinhold noted that signing the copyright assignment could allow Red Hat to contribute parts of IcedTea to Sun for inclusion in the mainstream JDK. [17] [18]
Since then, a number of patches from IcedTea have made their way into OpenJDK. [19] [20]
In June 2008, it was announced that IcedTea6 (as the packaged version of OpenJDK on Fedora 9) has passed the (TCK) tests and can claim to be a fully compatible Java 6 implementation. [21] The project continues to track OpenJDK 6, OpenJDK 7 and OpenJDK 8 development in separate repositories, and contribute patches back upstream [22] where possible; the current state of each IcedTea patch is maintained on the IcedTea wiki.
The IcedTea project started with two aims:
IcedTea also provides a more familiar build system by providing a wrapper around the OpenJDK makefiles using the GNU Autotools. This removes the need to remember numerous environment variables for configuring the build. (The current IcedTea builds set roughly forty such variables for the underlying OpenJDK build.) It has also provided a place for early work on features which will eventually appear in the main OpenJDK builds such as Gervill [26] and for work on ports to other platforms.
IcedTea-web provides a free-software Java Web browser plugin. It was the first to work in 64-bit browsers under 64-bit Linux, a feature Sun's proprietary JRE later addressed. [27] This makes it suitable to enable support for Java applets in 64-bit Mozilla Firefox, among others. IcedTea-web also provides a free Java Web Start (Java Network Launching Protocol (JNLP)) implementation. Sun had promised to release their plugin and Web Start implementation as part of OpenJDK. [28] Despite pressure from the community, [29] Sun Microsystems did not succeed in doing so before the company was acquired by Oracle. Development on the IcedTea-web plugin continues, with the latest version of the next-generation plugin supporting Google's Chromium [30] in addition to Firefox. Since 2011, development takes place in the separate IcedTea-Web project. [31] As of April 2013, Oracle has kept the codebase of the Java plugin fully proprietary, [32] in contrast to the remainder of OpenJDK. As of December, 2017, IcedTea-Web 1.7.1 adds support for jdk9.
As of October 2018, Oracle has announced that public Java Web Start support will end with Java SE 11. [33] In March the icedtea-web source code was donated to the AdoptOpenJDK project. [34] Based on this the sources and issue management of IcedTea-Web were migrated to GitHub. One goal of the migration is to provide an integration for the Java 8 releases of AdoptOpenJDK, and provide JDK vendor independent installers for IcedTea-Web. The integration project is a cooperation between the AdoptOpenJDK community, Red Hat, and Karakun AG. The project for the installers is named OpenWebStart and first information can be found here.
From June 2007, IcedTea was able to build itself and pass a significant portion of Mauve, the GNU Classpath test suite. [35] In May 2008, support was added to IcedTea for running the Sun jtreg regression tests. [36]
IcedTea has become popular among package maintainers for the following Linux distributions. Currently (as of April 2012):
OpenJDK contained approximately (on release in May 2007) 4% encumbered code, [14] which was only packaged as binary plugins. These were required to build and use the JDK. OpenJDK 6 was released with only 1% encumbered code, and the encumbered sound support has also since been replaced. IcedTea6 is based on this release. IcedTea still provides its own web browser plugin and Web Start support, as Sun's implementation remains proprietary.
IcedTea 1.x and 2.x can compile OpenJDK using GNU Classpath-based solutions such as GCJ and optionally bootstraps itself using the HotSpot Java Virtual Machine and the javac Java compiler it just built. [45] For now, building IcedTea 3.x requires using IcedTea 2.x or 3.x, or an OpenJDK 7 or 8 build from another source.
Cross-architecture ports of HotSpot (OpenJDK's Virtual Machine) are difficult, because the code contains much assembly language, in addition to the C++ core. [46] The IcedTea project has developed a generic port of the HotSpot interpreter called zero-assembler Hotspot (or zero), [47] with almost no assembly code. [48] [49] This port is intended to allow the interpreter part of HotSpot to be very easily adapted to any Linux processor architecture. [50] The code of zero-assembler Hotspot was used for all the non-x86 ports of HotSpot (PPC, IA-64, S390 and ARM) from version 1.6 of IcedTea7. [51] [52] [53]
The IcedTea project has also developed a platform-independent just-in-time compiler called Shark for HotSpot, using LLVM, to complement Zero. [49] [54] This was included in upstream OpenJDK in August 2010. [55] A JIT for ARM32 was first included in 1.6.0 [56] and 2.1.1. [57] A native port to AArch64 from Red Hat [58] appeared in 2.4.6 [59] and a native PPC64 port from SAP/IBM [60] will be included in 2.5.0. [61] The PPC/AIX port is included upstream in OpenJDK from version 8u20, [62] and the AArch64 port will be included from version 9. [63]
The GNU Compiler for Java (GCJ) is a discontinued free compiler for the Java programming language. It was part of the GNU Compiler Collection.
GNU Classpath is a free software implementation of the standard class library for the Java programming language. Most classes from J2SE 1.4 and 5.0 are implemented. Classpath can thus be used to run Java-based applications. GNU Classpath is a part of the GNU Project. It was originally developed in parallel with libgcj due to license incompatibilities, but later the two projects merged.
Free Java implementations are software projects that implement Oracle's Java technologies and are distributed under free software licences, making them free software. Sun released most of its Java source code as free software in May 2007, so it can now almost be considered a free Java implementation. Java implementations include compilers, runtimes, class libraries, etc. Advocates of free and open source software refer to free or open source Java virtual machine software as free runtimes or free Java runtimes.
HotSpot, released as Java HotSpot Performance Engine, is a Java virtual machine for desktop and server computers, developed by Sun Microsystems which was purchased by and became a division of Oracle Corporation in 2010. Its features improved performance via methods such as just-in-time compilation and adaptive optimization. It is the de facto Java Virtual Machine, serving as the reference implementation of the Java programming language.
Apache Harmony is a retired open source, free Java implementation, developed by the Apache Software Foundation. It was announced in early May 2005 and on October 25, 2006, the board of directors voted to make Apache Harmony a top-level project. The Harmony project achieved 99% completeness for J2SE 5.0, and 97% for Java SE 6. The Android operating system has historically been a major user of Harmony, although since Android Nougat it increasingly relies on OpenJDK libraries.
JamVM is an open-source Java Virtual Machine (JVM) developed to be extremely small compared with other virtual machines (VMs) while conforming to the Java virtual machine specification version 2.
In computing, Java Web Start is a deprecated framework developed by Sun Microsystems that allows users to start application software for the Java Platform directly from the Internet using a web browser. The technology enables seamless version updating for globally distributed applications and greater control of memory allocation to the Java virtual machine.
The 389 Directory Server is a Lightweight Directory Access Protocol (LDAP) server developed by Red Hat as part of the community-supported Fedora Project. The name "389" derives from the port number used by LDAP.
A Technology Compatibility Kit (TCK) is a suite of tests that at least nominally checks a particular alleged implementation of a Java Specification Request (JSR) for compliance. It is one of the three required pieces for a ratified JSR in the Java Community Process, which are:
GlassFish is an open-source Jakarta EE platform application server project started by Sun Microsystems, then sponsored by Oracle Corporation, and now living at the Eclipse Foundation and supported by OmniFish, Fujitsu and Payara. The supported version under Oracle was called Oracle GlassFish Server. GlassFish is free software and was initially dual-licensed under two free software licences: the Common Development and Distribution License (CDDL) and the GNU General Public License (GPL) with the Classpath exception. After having been transferred to Eclipse, GlassFish remained dual-licensed, but the CDDL license was replaced by the Eclipse Public License (EPL).
Java is a set of computer software and specifications that provides a software platform for developing application software and deploying it in a cross-platform computing environment. Java is used in a wide variety of computing platforms from embedded devices and mobile phones to enterprise servers and supercomputers. Java applets, which are less common than standalone Java applications, were commonly run in secure, sandboxed environments to provide many features of native applications through being embedded in HTML pages.
The Java language has undergone several changes since JDK 1.0 as well as numerous additions of classes and packages to the standard library. Since J2SE 1.4, the evolution of the Java language has been governed by the Java Community Process (JCP), which uses Java Specification Requests (JSRs) to propose and specify additions and changes to the Java platform. The language is specified by the Java Language Specification (JLS); changes to the JLS are managed under JSR 901. In September 2017, Mark Reinhold, chief Architect of the Java Platform, proposed to change the release train to "one feature release every six months" rather than the then-current two-year schedule. This proposal took effect for all following versions, and is still the current release schedule.
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.
GNU IceCat, formerly known as GNU IceWeasel, is a completely free version of the Mozilla Firefox web browser distributed by the GNU Project. It is compatible with Linux, Windows, Android and macOS.
JavaFX is a software platform for creating and delivering desktop applications, as well as rich web applications that can run across a wide variety of devices. JavaFX has support for desktop computers and web browsers on Microsoft Windows, Linux, and macOS, as well as mobile devices running iOS and Android, through Gluon Mobile.
The Java Class Library (JCL) is a set of dynamically loadable libraries that Java Virtual Machine (JVM) languages can call at run time. Because the Java Platform is not dependent on a specific operating system, applications cannot rely on any of the platform-native libraries. Instead, the Java Platform provides a comprehensive set of standard class libraries, containing the functions common to modern operating systems.
Moonlight is a discontinued free and open source implementation for Linux and other Unix-based operating systems of the Microsoft Silverlight application framework, developed and then abandoned by the Mono Project. Like Silverlight, Moonlight was a web application framework which provided capabilities similar to those of Adobe Flash, integrating multimedia, graphics, animations and interactivity into a single runtime environment.
The Java Development Kit (JDK) is a distribution of Java technology by Oracle Corporation. It implements the Java Language Specification (JLS) and the Java Virtual Machine Specification (JVMS) and provides the Standard Edition (SE) of the Java Application Programming Interface (API). It is derivative of the community driven OpenJDK which Oracle stewards. It provides software for working with Java applications. Examples of included software are the Java virtual machine, a compiler, performance monitoring tools, a debugger, and other utilities that Oracle considers useful for Java programmers.
Fedora Linux is a popular Linux distribution developed by the Fedora Project. Fedora attempts to maintain a six-month release schedule, offering new versions in Spring and Fall, although some releases have experienced minor delays.
Now Sun is open sourcing most of the remaining components of the JDK, with the exception of a few encumbered components that we hope, with the community's help, can be re-implemented so that 100% of the OpenJDK code commons is available as free software... Sun will continue to use that code in commercial releases until it's replaced by fully-functional open-source alternatives
Oracle will not include Java Web Start in Java SE 11 (18.9 LTS) and later.
Shark is a platform-independent JIT for HotSpot, to complement the zero-assembler interpreter we've been using
We started an experimental port of OpenJDK without assembly language, using free software libraries to bridge the gaps. This experiment evolved to become the zero-assembly port of OpenJDK – Zero – and its just-in-time compiler Shark.