IcedTea

From Infogalactic: the planetary knowledge core
Jump to: navigation, search

<templatestyles src="Module:Hatnote/styles.css"></templatestyles>

IcedTea for OpenJDK 8
Developer(s) GNU Classpath
Stable release 3.0.1 / April 23, 2016 (2016-04-23)
Written in C, C++ and Java
Operating system GNU/Linux, *BSD, Mac OS X, 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.classpath.org
IcedTea for OpenJDK 7
Developer(s) Red Hat & GNU Classpath
Stable release 2.6.6 / April 21, 2016 (2016-04-21)
Written in C, C++ and Java
Operating system GNU/Linux, *BSD, Mac OS X, 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.classpath.org
IcedTea for OpenJDK 6
Developer(s) Red Hat & GNU Classpath
Stable release 1.13.11 / May 4, 2016 (2016-05-04)
Written in C, C++ and Java
Operating system GNU/Linux, *BSD, Mac OS X, 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.classpath.org
IcedTea-Web
Developer(s) Red Hat & GNU Classpath
Stable release 1.6.2 / February 3, 2016 (2016-02-03)
Written in C++ and Java
Operating system GNU/Linux, *BSD, Mac OS X, Windows, Solaris
Type Java Web Start support and Java web plugin for applets
License GPL+linking exception
Website icedtea.classpath.org/wiki/IcedTea-Web
IcedTea-Sound
Developer(s) Red Hat & GNU Classpath
Stable release 1.0.1 / July 18, 2014 (2014-07-18)
Written in C and Java
Operating system GNU/Linux, *BSD, Mac OS X, Windows, Solaris
Type Sound support
License GPL+linking exception
Website icedtea.classpath.org/wiki/IcedTea-Sound

IcedTea is a build and integration project for OpenJDK launched by Red Hat in June 2007.[1] IcedTea-Web is a free software implementation of Java Web Start and the Java web browser 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.[2]

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[3] 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[4] on x86 and x86-64. IcedTea 2, the first version based on OpenJDK 7, was released in October 2011.[5] IcedTea 3, the first version based on OpenJDK 8, was released in April 2016.[6]

History

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.[7][8] 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.[9]

Following the announcement, the IcedTea project was started and was formally announced on June 7, 2007,[10] 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".[11]

On November 5, 2007, Red Hat signed both the Sun Contributor Agreement and the OpenJDK Community TCK License. The press release suggested that this would benefit the IcedTea project.[12] Simon Phipps suggested the possibility of IcedTea being hosted on openjdk.java.net,[13] 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.[14][15]

Since then, a number of patches from IcedTea have made their way into OpenJDK.[16][17]

On June 2008, it was announced that IcedTea6 (as the packaged version of OpenJDK on Fedora 9) has passed the Technology Compatibility Kit tests and can claim to be a fully compatible Java 6 implementation.[18] The project continues to track OpenJDK 6, OpenJDK 7 and OpenJDK 8 development in separate repositories, and contribute patches back upstream[19] where possible; the current state of each IcedTea patch is maintained on the IcedTea wiki.

Aims

The IcedTea project started with two aims:

  1. to make it possible for the GNU Compiler for Java to compile the OpenJDK code. OpenJDK presented a chicken-or-egg problem of itself being written in Java. Hence, developers needed an already-working Java compiler and runtime in order to build OpenJDK. Originally, only the existing proprietary Sun JDK met that requirement. Free distributions like Fedora can't depend on proprietary tools in order to build packages, so the IcedTea project had to make it possible to compile the code using free software. When this was done, the resulting IcedTea version of OpenJDK could be used to compile itself, thus escaping the need to use non-Free software for future compiling.[10][20]
  2. to provide free equivalents of the binary plugins that existed in OpenJDK because Sun was unable to release all the source code. As of March 2008, this is no longer necessary for IcedTea6, as the OpenJDK 6 build drops can be built with no binary plugins. With the release of b10,[21] which replaces the proprietary sound support with that from the Gervill project, a full implementation of Java 1.6 can be built without binary plugins. The only remaining binary plug is for SNMP support, which is an optional provider for the JMX architecture and not part of the specification. As of b53 in April 2009,[22] the same is true for OpenJDK 7. Outside the core of OpenJDK, binary plugins are still required for utilizing Java Web Start applets that run using the browser plugin (distinct from the core plugins discussed earlier); as of 2013, the only source code available that accomplishes this goal is the IcedTea-Web project.

Other benefits

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[23] and for work on ports to other platforms.

IcedTea-Web

File:D.Iceweasel6.0.2-Addons-Plugins Knoppix6.7.1.png
IcedTea NPR plugin (based on IcedTea6) listed in Debian Iceweasel 6.0.2 (Knoppix 6.7.1)

IcedTea 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.[24] This makes it suitable to enable support for Java applets in 64-bit Mozilla Firefox, among others. IcedTea also provides a free Java Network Launching Protocol implementation. Sun has promised to release their plugin and Web Start implementation as part of OpenJDK, but so far have not done so,[25] despite pressure from the community.[26] Development on the IcedTea plugin continues, with the latest version of the next-generation plugin supporting Google's Chromium[27] in addition to Firefox. Since 2011, development takes place in the separate IcedTea-Web project.[28] As of April 2013, Oracle has kept the codebase of the Java plugin fully proprietary,[29] in contrast to the remainder of OpenJDK.

Progress and availability

From June 2007, IcedTea was able to build itself and pass a significant portion of Mauve, the GNU Classpath test suite.[30] In May 2008, support was added to IcedTea for running the Sun jtreg regression tests.[31] Availability on several Windows editions still remains unstable and unofficial.

IcedTea has become popular among package maintainers for the following Linux distributions. Currently (as of April 2012):

  • IcedTea is the default JVM in Ark Linux[32] and Arch Linux.[33]
  • It can be built and run under Debian.[34] Packages entered unstable on 12 July 2008.
  • IcedTea[7] was available in Fedora 8 and IcedTea6 appeared in Fedora 9 through to 17 as java-1.6.0-openjdk.[35] A java-1.7.0-openjdk package using the IcedTea 2.x OpenJDK forest, but not its build system, first appeared in Fedora 16.[36]
  • Binary and source packages for IcedTea6 and IcedTea 2.x are available in Gentoo's official repository. Installing a Java application by default pulls in IcedTea6 instead of sun-jdk because it can be installed without extra work from the user, as users have to manually agree to Oracle's EULA to download the sun-jdk.
  • IcedTea is available in Ubuntu 7.10 (Gutsy Gibbon), from the "universe" repository,[37] and IcedTea6 in 8.04 (Hardy Heron).[38] Starting with Ubuntu 11.04 only IcedTea is available.

Architecture

OpenJDK contained approximately (on release in May 2007) 4% encumbered code,[11] 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.[39] For now, building IcedTea 3.x requires using IcedTea 2.x or 3.x, or an OpenJDK 7 or 8 build from another source.

Platform support

Cross-architecture ports of HotSpot (OpenJDK's Virtual Machine) are difficult, because the code contains much assembly language, in addition to the C++ core.[40] The IcedTea project has developed a generic port of the HotSpot interpreter called zero-assembler Hotspot (or zero),[41] with almost no assembly code.[42][43] This port is intended to allow the interpreter part of HotSpot to be very easily adapted to any Linux processor architecture.[44] 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.[45][46][47]

The IcedTea project has also developed a platform-independent just-in-time compiler called Shark for HotSpot, using LLVM, to complement Zero.[43][48] This was included in upstream OpenJDK in August 2010.[49] A JIT for ARM32 was first included in 1.6.0[50] and 2.1.1.[51] A native port to AArch64 from Red Hat[52] appeared in 2.4.6[53] and a native PPC64 port from SAP/IBM[54] will be included in 2.5.0.[55] The PPC/AIX port is included upstream in OpenJDK from version 8u20,[56] and the AArch64 port will be included from version 9.[57]

See also

References

  1. Lua error in package.lua at line 80: module 'strict' not found.
  2. Lua error in package.lua at line 80: module 'strict' not found.
  3. Lua error in package.lua at line 80: module 'strict' not found.
  4. Lua error in package.lua at line 80: module 'strict' not found.
  5. Lua error in package.lua at line 80: module 'strict' not found.
  6. Lua error in package.lua at line 80: module 'strict' not found.
  7. Lua error in package.lua at line 80: module 'strict' not found.
  8. See also Java Class Library Licensing
  9. Lua error in package.lua at line 80: module 'strict' not found.
  10. 10.0 10.1 Lua error in package.lua at line 80: module 'strict' not found.
  11. 11.0 11.1 Lua error in package.lua at line 80: module 'strict' not found.
  12. Lua error in package.lua at line 80: module 'strict' not found.
  13. Lua error in package.lua at line 80: module 'strict' not found.
  14. Lua error in package.lua at line 80: module 'strict' not found.
  15. Lua error in package.lua at line 80: module 'strict' not found.
  16. Lua error in package.lua at line 80: module 'strict' not found.
  17. Lua error in package.lua at line 80: module 'strict' not found.
  18. Lua error in package.lua at line 80: module 'strict' not found.
  19. Lua error in package.lua at line 80: module 'strict' not found.
  20. Lua error in package.lua at line 80: module 'strict' not found.
  21. Lua error in package.lua at line 80: module 'strict' not found.
  22. Lua error in package.lua at line 80: module 'strict' not found.
  23. Lua error in package.lua at line 80: module 'strict' not found.
  24. Java SE 6 Update 12 Release Notes. Java.sun.com. Retrieved on 2013-07-18.
  25. Lua error in package.lua at line 80: module 'strict' not found.
  26. Lua error in package.lua at line 80: module 'strict' not found.
  27. Lua error in package.lua at line 80: module 'strict' not found.
  28. Lua error in package.lua at line 80: module 'strict' not found.
  29. Lua error in package.lua at line 80: module 'strict' not found.
  30. Lua error in package.lua at line 80: module 'strict' not found.
  31. Lua error in package.lua at line 80: module 'strict' not found.
  32. Lua error in package.lua at line 80: module 'strict' not found.
  33. Lua error in package.lua at line 80: module 'strict' not found.
  34. Lua error in package.lua at line 80: module 'strict' not found.
  35. Lua error in package.lua at line 80: module 'strict' not found.
  36. Lua error in package.lua at line 80: module 'strict' not found.
  37. Lua error in package.lua at line 80: module 'strict' not found.
  38. Lua error in package.lua at line 80: module 'strict' not found.
  39. Lua error in package.lua at line 80: module 'strict' not found.
  40. Lua error in package.lua at line 80: module 'strict' not found.
  41. Lua error in package.lua at line 80: module 'strict' not found.
  42. Lua error in package.lua at line 80: module 'strict' not found.
  43. 43.0 43.1 Lua error in package.lua at line 80: module 'strict' not found.
  44. Lua error in package.lua at line 80: module 'strict' not found.
  45. Lua error in package.lua at line 80: module 'strict' not found.
  46. Lua error in package.lua at line 80: module 'strict' not found.
  47. Lua error in package.lua at line 80: module 'strict' not found.
  48. Lua error in package.lua at line 80: module 'strict' not found.
  49. Lua error in package.lua at line 80: module 'strict' not found.
  50. Lua error in package.lua at line 80: module 'strict' not found.
  51. Lua error in package.lua at line 80: module 'strict' not found.
  52. Lua error in package.lua at line 80: module 'strict' not found.
  53. Lua error in package.lua at line 80: module 'strict' not found.
  54. Lua error in package.lua at line 80: module 'strict' not found.
  55. Lua error in package.lua at line 80: module 'strict' not found.
  56. Lua error in package.lua at line 80: module 'strict' not found.
  57. Lua error in package.lua at line 80: module 'strict' not found.

External links