IcedTea
Encyclopedia
IcedTea is a build
Software build
In the field of computer software, the term software build refers either to the process of converting source code files into standalone software artifact that can be run on a computer, or the result of doing so...

 and integration
System integration
In engineering, system integration is the bringing together of the component subsystems into one system and ensuring that the subsystems function together as a system...

 project for OpenJDK
OpenJDK
OpenJDK is a free and open source implementation of the Java programming language. It is the result of an effort Sun Microsystems began in 2006...

 launched by Red Hat
Red Hat
Red Hat, Inc. is an S&P 500 company in the free and open source software sector, and a major Linux distribution vendor. Founded in 1993, Red Hat has its corporate headquarters in Raleigh, North Carolina with satellite offices worldwide....

 in June 2007. The initial goal was to make the Java
Java (programming language)
Java is a programming language originally developed by James Gosling at Sun Microsystems and released in 1995 as a core component of Sun Microsystems' Java platform. The language derives much of its syntax from C and C++ but has a simpler object model and fewer low-level facilities...

 OpenJDK
OpenJDK
OpenJDK is a free and open source implementation of the Java programming language. It is the result of an effort Sun Microsystems began in 2006...

 software which Sun Microsystems
Sun Microsystems
Sun Microsystems, Inc. was a company that sold :computers, computer components, :computer software, and :information technology services. Sun was founded on February 24, 1982...

 released as free software
Free software
Free software, software libre or libre software is software that can be used, studied, and modified without restriction, and which can be copied and redistributed in modified or unmodified form either without restriction, or with restrictions that only ensure that further recipients can also do...

 in 2007 usable without requiring any other software that is not free software and hence make it possible to add OpenJDK to Fedora and other Linux distribution
Linux distribution
A Linux distribution is a member of the family of Unix-like operating systems built on top of the Linux kernel. Such distributions are operating systems including a large collection of software applications such as word processors, spreadsheets, media players, and database applications...

s that insist on free software. This was met and a version of IcedTea based on OpenJDK was packaged with Fedora 8 in November 2007.

April 2008 saw the first release 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
Ubuntu (operating system)
Ubuntu is a computer operating system based on the Debian Linux distribution and distributed as free and open source software. It is named after the Southern African philosophy of Ubuntu...

 and Fedora in May 2008. The IcedTea package in these distributions has been renamed to OpenJDK
OpenJDK
OpenJDK is a free and open source implementation of the Java programming language. It is the result of an effort Sun Microsystems began in 2006...

 using the OpenJDK trademark notice. In June 2008, the Fedora build passed Sun's rigorous TCK
Technology Compatibility Kit
A Technology Compatibility Kit is a suite of tests that at least nominally checks a particular alleged implementation of a Java Specification Request for compliance...

 testing on x86 and x86-64
X86-64
x86-64 is an extension of the x86 instruction set. It supports vastly larger virtual and physical address spaces than are possible on x86, thereby allowing programmers to conveniently work with much larger data sets. x86-64 also provides 64-bit general purpose registers and numerous other...

.

History

This project was created following Sun’s release of its HotSpot
HotSpot
HotSpot is a Java virtual machine for desktops and servers, maintained and distributed by Oracle Corporation. It features techniques such as just-in-time compilation and adaptive optimization designed to improve performance.-History:...

 Virtual Machine
Virtual machine
A virtual machine is a "completely isolated guest operating system installation within a normal host operating system". Modern virtual machines are implemented with either software emulation or hardware virtualization or both together.-VM Definitions:A virtual machine is a software...

 and Java compiler
Javac
javac is the primary Java compiler, included in the Java Development Kit from Oracle Corporation.The compiler accepts source code conforming to the Java language specification and produces bytecode conforming to the Java Virtual Machine Specification .javac is itself written in Java...

 in November 2006, and most of the source code
Source code
In computer science, source code is text written using the format and syntax of the programming language that it is being written in. Such a language is specially designed to facilitate the work of computer programmers, who specify the actions to be performed by a computer mostly by writing source...

 of the class library
Java Class Library
The Java Class Library is a set of dynamically loadable libraries that Java applications can call at run time. Because the Java Platform is not dependent on any specific operating system, applications cannot rely on any of the existing libraries...

 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 3rd parties, rather than Sun Microsystems. The released parts were published under the terms of the GNU General Public License
GNU General Public License
The GNU General Public License is the most widely used free software license, originally written by Richard Stallman for the GNU Project....

, a free software license.

Due to these missing components, it was not possible to build OpenJDK only with Free software
Free software
Free software, software libre or libre software is software that can be used, studied, and modified without restriction, and which can be copied and redistributed in modified or unmodified form either without restriction, or with restrictions that only ensure that further recipients can also do...

 components. Sun aimed to negotiate with the license holders to allow this code to be released under a Free 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.

Following the announcement, the IcedTea project was started and was formally announced on June 7, 2007, with a build repository provided by the GNU Classpath
GNU Classpath
GNU Classpath is a project aiming to create a free software implementation of the standard class library for the Java programming language. Despite the massive size of the library to be created, the majority of the task is already done, including Swing, CORBA, and other major parts. The Classpath...

 team. The team could not call their software product "OpenJDK
OpenJDK
OpenJDK is a free and open source implementation of the Java programming language. It is the result of an effort Sun Microsystems began in 2006...

"
because this is a trademark
Trademark
A trademark, trade mark, or trade-mark is a distinctive sign or indicator used by an individual, business organization, or other legal entity to identify that the products or services to consumers with which the trademark appears originate from a unique source, and to distinguish its products or...

 owned by Sun Microsystems
Sun Microsystems
Sun Microsystems, Inc. was a company that sold :computers, computer components, :computer software, and :information technology services. Sun was founded on February 24, 1982...

. They instead decided to use the temporary name "IcedTea".

On November 5, 2007, Red Hat signed both the Sun Contributor Agreement and the OpenJDK Community TCK
Technology Compatibility Kit
A Technology Compatibility Kit is a suite of tests that at least nominally checks a particular alleged implementation of a Java Specification Request for compliance...

 License. The press release suggested that this would benefit the IcedTea project. Simon Phipps
Simon Phipps (programmer)
Simon Phipps is a computer scientist and web and open source advocate.Phipps was instrumental in IBM's involvement in the Java programming language, founding IBM's Java Technology Center. He left IBM for Sun Microsystems in 2000, taking leadership of Sun's open source programme from Danese Cooper...

 suggested the possibility of IcedTea being hosted on openjdk.java.net, 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.

Since then, a number of patches from IcedTea6 have made their way into OpenJDK6.

On June 2008, it was announced that IcedTea6 (as the packaged version of OpenJDK
OpenJDK
OpenJDK is a free and open source implementation of the Java programming language. It is the result of an effort Sun Microsystems began in 2006...

 on Fedora 9) has passed the Technology Compatibility Kit
Technology Compatibility Kit
A Technology Compatibility Kit is a suite of tests that at least nominally checks a particular alleged implementation of a Java Specification Request for compliance...

 tests and can claim to be a fully compatible Java 6 implementation. The project continues to track both OpenJDK6 and OpenJDK7 development in separate repositories, and contribute patches back upstream
where possible; the current state of each IcedTea patch is maintained on the IcedTea wiki.

The aims

Specifically, the IcedTea project started with two aims. One was to make it possible for the GNU Compiler for Java to compile
Compiler
A compiler is a computer program that transforms source code written in a programming language into another computer language...

 the OpenJDK code. The problem was that the only program which could compile the OpenJDK software was the existing proprietary Sun JDK. 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
Free software
Free software, software libre or libre software is software that can be used, studied, and modified without restriction, and which can be copied and redistributed in modified or unmodified form either without restriction, or with restrictions that only ensure that further recipients can also do...

. 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.

The second task was 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 OpenJDK6 build drops can be built with no binary plugins. With the release of b10, 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, the same is true for OpenJDK7.

Other benefits

IcedTea provides a free software
Free software
Free software, software libre or libre software is software that can be used, studied, and modified without restriction, and which can be copied and redistributed in modified or unmodified form either without restriction, or with restrictions that only ensure that further recipients can also do...

 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. This makes it suitable to enable support for Java applet
Java applet
A Java applet is an applet delivered to users in the form of Java bytecode. Java applets can run in a Web browser using a Java Virtual Machine , or in Sun's AppletViewer, a stand-alone tool for testing applets...

s in 64-bit Mozilla Firefox, among others. IcedTea also provides the only Free
Free software
Free software, software libre or libre software is software that can be used, studied, and modified without restriction, and which can be copied and redistributed in modified or unmodified form either without restriction, or with restrictions that only ensure that further recipients can also do...

 Java Web Start
Java Web Start
In computing, Java Web Start is a framework developed by Sun Microsystems that allows users to start application software for the Java Platform directly from the Internet using a web browser....

 implementation by means of continued development of Netx. Sun has made continued promises about releasing their plugin and Web Start implementation as part of OpenJDK, but have so far failed to deliver, despite continued pressure from the community. Development on the IcedTea plugin continues, with the latest version of the next-generation plugin supporting Google's Chromium
Chromium (web browser)
Chromium is the open source web browser project from which Google Chrome draws its source code. The project's hourly Chromium snapshots appear essentially similar to the latest builds of Google Chrome aside from the omission of certain Google additions, most noticeable among them: Google's...

. Current development takes place in the separate IcedTea-Web project.

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 a large number of 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 and for work on ports to other platforms.

Progress and availability

From June 2007, IcedTea was able to build itself and pass a significant portion of Mauve
Mauve (test suite)
Mauve is a project to provide a free software test suite for the Java class libraries. Mauve is developed by the members of Kaffe, GNU Classpath, GCJ, and other projects. Unlike a similar project, JUnit, Mauve is designed to run on various experimental Java virtual machines, where some features may...

, the GNU Classpath
GNU Classpath
GNU Classpath is a project aiming to create a free software implementation of the standard class library for the Java programming language. Despite the massive size of the library to be created, the majority of the task is already done, including Swing, CORBA, and other major parts. The Classpath...

 test suite. In May 2008, support was added to IcedTea for running the Sun jtreg
JavaTest harness
The JavaTest harness is a regression tests framework specifically designed by Sun Microsystems to tests the reference Java platform implementation....

 regression tests. Availability on Windows, including Windows 7 as well as previous versions, still remains problematic.

IcedTea has become popular among package maintainers for the following *NIX distributions,
Currently:
  • IcedTea is the default JVM in Ark Linux
    Ark Linux
    Ark Linux is a Linux distribution maintained by a group of volunteers and aims to be easy to install and use. Its default desktop environment is KDE.Ark Linux is available both as an installable CD and as a Live CD, and is free software.-Principles:...

    , and Arch Linux
    Arch Linux
    Arch Linux is an independently developed, Linux-based operating system for i686 and x86-64 computers. It is composed predominantly of free and open source software, and supports community involvement....

    .

  • IcedTea is available in CRUX PPC from release 2.4, and actually there are binary ppc and ppc64 packages too.

  • IcedTea is available in Ubuntu
    Ubuntu (operating system)
    Ubuntu is a computer operating system based on the Debian Linux distribution and distributed as free and open source software. It is named after the Southern African philosophy of Ubuntu...

     7.10 (Gutsy Gibbon), from the "universe" repository, and IcedTea6 in 8.04 (Hardy Heron).

  • IcedTea[7] was available in Fedora
    Fedora (operating system)
    Fedora is a RPM-based, general purpose collection of software, including an operating system based on the Linux kernel, developed by the community-supported Fedora Project and sponsored by Red Hat...

     8 and IcedTea6 appears in Fedora 9, 10, 11, 12 and 13 as java-1.6.0-openjdk.

  • A binary package for IcedTea6 is available in Gentoo's
    Gentoo Linux
    Gentoo Linux is a computer operating system built on top of the Linux kernel and based on the Portage package management system. It is distributed as free and open source software. Unlike a conventional software distribution, the user compiles the source code locally according to their chosen...

     official repository, but was marked unstable until recently. Continued development on source ebuilds for Gentoo for both IcedTea6 and IcedTea7 occurs in the Java Project Overlay. 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 Oracles EULA to download the sun-jdk.

  • It can be built and run under Debian
    Debian
    Debian is a computer operating system composed of software packages released as free and open source software primarily under the GNU General Public License along with other free software licenses. Debian GNU/Linux, which includes the GNU OS tools and Linux kernel, is a popular and influential...

    . Binary packages were submitted on 20 April 2008 but were rejected due to licensing problems with some files. A new package was uploaded in June 2008 and entered unstable on 12 July 2008.

Architecture

OpenJDK
OpenJDK
OpenJDK is a free and open source implementation of the Java programming language. It is the result of an effort Sun Microsystems began in 2006...

 contained approximately (on release in May 2007) 4% encumbered code, which was only packaged as binary plugins. These were required to build and use the JDK. OpenJDK6 was released with only 1% encumbered code, and the encumbered sound support has also since been replaced. IcedTea6 is based on this release. IcedTea6 still provides its own web browser plugin and Web Start support, as Sun's implementation remains proprietary
Proprietary software
Proprietary software is computer software licensed under exclusive legal right of the copyright holder. The licensee is given the right to use the software under certain conditions, while restricted from other uses, such as modification, further distribution, or reverse engineering.Complementary...

.

IcedTea can compile OpenJDK using GNU Classpath
GNU Classpath
GNU Classpath is a project aiming to create a free software implementation of the standard class library for the Java programming language. Despite the massive size of the library to be created, the majority of the task is already done, including Swing, CORBA, and other major parts. The Classpath...

-based solutions such as GCJ and optionally bootstraps itself using the HotSpot
HotSpot
HotSpot is a Java virtual machine for desktops and servers, maintained and distributed by Oracle Corporation. It features techniques such as just-in-time compilation and adaptive optimization designed to improve performance.-History:...

 Java Virtual Machine
Java Virtual Machine
A Java virtual machine is a virtual machine capable of executing Java bytecode. It is the code execution component of the Java software platform. Sun Microsystems stated that there are over 4.5 billion JVM-enabled devices.-Overview:...

 and the javac
Javac
javac is the primary Java compiler, included in the Java Development Kit from Oracle Corporation.The compiler accepts source code conforming to the Java language specification and produces bytecode conforming to the Java Virtual Machine Specification .javac is itself written in Java...

 Java compiler
Java compiler
A Java compiler is a compiler for the Java programming language. The most common form of output from a Java compiler is Java class files containing platform-neutral Java bytecode...

 it just built.

Zero and Shark

Ports of HotSpot
HotSpot
HotSpot is a Java virtual machine for desktops and servers, maintained and distributed by Oracle Corporation. It features techniques such as just-in-time compilation and adaptive optimization designed to improve performance.-History:...

 (OpenJDK
OpenJDK
OpenJDK is a free and open source implementation of the Java programming language. It is the result of an effort Sun Microsystems began in 2006...

's Virtual Machine
Java Virtual Machine
A Java virtual machine is a virtual machine capable of executing Java bytecode. It is the code execution component of the Java software platform. Sun Microsystems stated that there are over 4.5 billion JVM-enabled devices.-Overview:...

) are difficult because the code contains a lot of assembly
Assembly language
An assembly language is a low-level programming language for computers, microprocessors, microcontrollers, and other programmable devices. It implements a symbolic representation of the machine codes and other constants needed to program a given CPU architecture...

 in addition to the C++
C++
C++ is a statically typed, free-form, multi-paradigm, compiled, general-purpose programming language. It is regarded as an intermediate-level language, as it comprises a combination of both high-level and low-level language features. It was developed by Bjarne Stroustrup starting in 1979 at Bell...

 core. The IcedTea project has developed a generic port of the HotSpot interpreter
Interpreter (computing)
In computer science, an interpreter normally means a computer program that executes, i.e. performs, instructions written in a programming language...

 called zero-assembler Hotspot (or zero), with almost no assembly code. This port is intended to allow the interpreter part of HotSpot to be very easily adapted to any Linux
Linux
Linux is a Unix-like computer operating system assembled under the model of free and open source software development and distribution. The defining component of any Linux system is the Linux kernel, an operating system kernel first released October 5, 1991 by Linus Torvalds...

 processor architecture. The code of zero-assembler Hotspot is used for all the non-x86
X86 architecture
The term x86 refers to a family of instruction set architectures based on the Intel 8086 CPU. The 8086 was launched in 1978 as a fully 16-bit extension of Intel's 8-bit based 8080 microprocessor and also introduced segmentation to overcome the 16-bit addressing barrier of such designs...

 ports of HotSpot (PPC
PowerPC
PowerPC is a RISC architecture created by the 1991 Apple–IBM–Motorola alliance, known as AIM...

, IA64
Itanium
Itanium is a family of 64-bit Intel microprocessors that implement the Intel Itanium architecture . Intel markets the processors for enterprise servers and high-performance computing systems...

, S390 and ARM
ARM architecture
ARM is a 32-bit reduced instruction set computer instruction set architecture developed by ARM Holdings. It was named the Advanced RISC Machine, and before that, the Acorn RISC Machine. The ARM architecture is the most widely used 32-bit ISA in numbers produced...

) since version 1.6 of IcedTea7.

The IcedTea project is now developing a platform-independent
Cross-platform
In computing, cross-platform, or multi-platform, is an attribute conferred to computer software or computing methods and concepts that are implemented and inter-operate on multiple computer platforms...

 just-in-time compiler
Just-in-time compilation
In computing, just-in-time compilation , also known as dynamic translation, is a method to improve the runtime performance of computer programs. Historically, computer programs had two modes of runtime operation, either interpreted or static compilation...

 called Shark for HotSpot, using Low Level Virtual Machine
Low Level Virtual Machine
The Low Level Virtual Machine is a compiler infrastructure written in C++ that is designed for compile-time, link-time, run-time, and "idle-time" optimization of programs written in arbitrary programming languages...

, to complement Zero. Completing this work will make the Java Virtual Machine
Java Virtual Machine
A Java virtual machine is a virtual machine capable of executing Java bytecode. It is the code execution component of the Java software platform. Sun Microsystems stated that there are over 4.5 billion JVM-enabled devices.-Overview:...

 independent of the CPU
Central processing unit
The central processing unit is the portion of a computer system that carries out the instructions of a computer program, to perform the basic arithmetical, logical, and input/output operations of the system. The CPU plays a role somewhat analogous to the brain in the computer. The term has been in...

  architecture.

See also

  • Free Java implementations
    Free Java implementations
    Free Java implementations are software projects that implement Oracle's Java technologies and are distributed under free software licences, thus making them free software...

  • GNU Classpath
    GNU Classpath
    GNU Classpath is a project aiming to create a free software implementation of the standard class library for the Java programming language. Despite the massive size of the library to be created, the majority of the task is already done, including Swing, CORBA, and other major parts. The Classpath...

  • Java Class Library
    Java Class Library
    The Java Class Library is a set of dynamically loadable libraries that Java applications can call at run time. Because the Java Platform is not dependent on any specific operating system, applications cannot rely on any of the existing libraries...

  • OpenJDK
    OpenJDK
    OpenJDK is a free and open source implementation of the Java programming language. It is the result of an effort Sun Microsystems began in 2006...

  • Apache Harmony
    Apache Harmony
    Apache Harmony was an 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...


External links

The source of this article is wikipedia, the free encyclopedia.  The text of this article is licensed under the GFDL.
 
x
OK