Free Java implementations
Encyclopedia
Free Java implementations are software projects that implement Oracle's Java technologies and are distributed under free software licences, thus 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.
Some advocates in this movement prefer not to use the term "Java" as it has trademark
issues associated with it. Hence, even
though it is a "free Java movement", the term "free Java runtimes" is avoided by them.
Since then, the free software movement
developed other java compilers, most notably the GNU Compiler for Java. Others include ECJ the Eclipse
Java Compiler, which is maintained by the Eclipse Foundation
, and Jikes
, which is no longer actively maintained. Since the GCC 4.3
release, GCJ (its Java compiler) is using the ECJ parser
front-end for parsing Java.
Examples of free runtime environments include Kaffe
, SableVM
, and gcj.
GNU Classpath
is the main free software class library
for Java. Most free runtimes use GNU Classpath as their class library.
In May 2005, Apache Harmony
was announced, however, the project chose the Apache License, which was at the time incompatible with all existing free Java implementations.
Another event in May 2005 was the announcement that OpenOffice.org 2.0 would depend on Java features which free software implementations couldn't provide. Red Hat solved this problem by extending the free software implementations to be adequate for their purposes.
Notable applications that already worked with free software Java implementations before November 2006 include OpenOffice.org
and Vuze
, both of which work when compiled with GCJ.
, under the GNU General Public License
.
As of September 2007, as well as javac, Sun has released the code of HotSpot
(the virtual machine
) and almost all the Java Class Library
as free software.
Following their promise to release a fully buildable JDK
based almost completely on free and open source code in the first half of 2007, Sun released the complete source code
of the Class library under the GPL on May 8, 2007, except some limited parts that were licensed by Sun from 3rd parties who did not want their code to be released under a free software licence. Sun has stated that it aims to replace the parts that remain proprietary and closed source with alternative implementations and make the class library completely free and open source. Since there's some encumbered code
in the JDK, Sun will continue to use that code in commercial releases until it's replaced by fully functional free and open-source alternatives.
and less than 1% as of May 2008 in OpenJDK 6
)
is the SNMP
implementation.
Since the first May 2007 release, Sun Microsystems
, with the help of the community, has released as free software or replaced with free software alternatives almost all the encumbered code:
Because of these previously encumbered components, it was not possible to build OpenJDK
only with free software components. In order to be able to do this before the whole class library
is made free, and to be able to bundle OpenJDK
in Fedora Core
and other free Linux
distributions, a project called IcedTea
has been started by Red Hat
. It is basically an OpenJDK/GNU Classpath
hybrid that can be used to bootstrap OpenJDK using only free software.
As of March 2008, the Fedora 9
distribution has been released with OpenJDK 6 instead of IcedTea. Some of the stated reasons for this changes are:
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.
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...
. 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
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:...
software as free runtimes or free Java runtimes.
Some advocates in this movement prefer not to use the term "Java" as it has 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...
issues associated with it. Hence, even
though it is a "free Java movement", the term "free Java runtimes" is avoided by them.
Mid-90s to 2006
Probably the first free project to offer substantial parts of Java platform functionality was guavac, which began some time before November 1995.Since then, the free software movement
Free software movement
The free software movement is a social and political movement with the goal of ensuring software users' four basic freedoms: the freedom to run their software, to study and change their software, and to redistribute copies with or without changes. The alternative terms "software libre", "open...
developed other java compilers, most notably the GNU Compiler for Java. Others include ECJ the Eclipse
Eclipse (software)
Eclipse is a multi-language software development environment comprising an integrated development environment and an extensible plug-in system...
Java Compiler, which is maintained by the Eclipse Foundation
Eclipse Foundation
The Eclipse Foundation is a not-for-profit, member supported corporation that hosts the open-source Eclipse Projects and helps cultivate both an open source community and an ecosystem of complementary products and services...
, and Jikes
Jikes
Jikes is an open source Java compiler written in C++. It is no longer being updated.The original version was developed by David L. "Dave" Shields and Philippe Charles at IBM but was quickly transformed into an open source project contributed to by an active community of developers. Initially hosted...
, which is no longer actively maintained. Since the GCC 4.3
GNU Compiler Collection
The GNU Compiler Collection is a compiler system produced by the GNU Project supporting various programming languages. GCC is a key component of the GNU toolchain...
release, GCJ (its Java compiler) is using the ECJ parser
Parsing
In computer science and linguistics, parsing, or, more formally, syntactic analysis, is the process of analyzing a text, made of a sequence of tokens , to determine its grammatical structure with respect to a given formal grammar...
front-end for parsing Java.
Examples of free runtime environments include Kaffe
Kaffe
Kaffe is a clean room design of a Java Virtual Machine. It comes with a subset of the Java Platform, Standard Edition , Java API, and tools needed to provide a Java runtime environment. Like most other Free Java virtual machines, Kaffe uses GNU Classpath as its class library.Kaffe, first released...
, SableVM
SableVM
SableVM is a clean room implementation of Java bytecode interpreter implementing the Java virtual machine specification, second edition.SableVM was designed to be a robust, extremely portable, efficient, and fully specifications-compliant Java Virtual Machine that would be easy to maintain and to...
, and gcj.
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...
is the main free software 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...
for Java. Most free runtimes use GNU Classpath as their class library.
In May 2005, 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...
was announced, however, the project chose the Apache License, which was at the time incompatible with all existing free Java implementations.
Another event in May 2005 was the announcement that OpenOffice.org 2.0 would depend on Java features which free software implementations couldn't provide. Red Hat solved this problem by extending the free software implementations to be adequate for their purposes.
Notable applications that already worked with free software Java implementations before November 2006 include OpenOffice.org
OpenOffice.org
OpenOffice.org, commonly known as OOo or OpenOffice, is an open-source application suite whose main components are for word processing, spreadsheets, presentations, graphics, and databases. OpenOffice is available for a number of different computer operating systems, is distributed as free software...
and Vuze
Vuze
Vuze is a BitTorrent client used to transfer files via the BitTorrent protocol. Vuze is written in Java, and uses the Azureus Engine. In addition to downloading data linked to by .torrent files, Azureus allows users to view, publish and share original DVD and HD quality video content...
, both of which work when compiled with GCJ.
Sun's November 2006 announcement
In 13 November 2006, Sun released its compiler, javacJavac
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...
, under 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....
.
As of September 2007, as well as javac, Sun has released the code 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:...
(the 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 almost all the 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...
as free software.
Following their promise to release a fully buildable JDK
Java Development Kit
The Java Development Kit is an Oracle Corporation product aimed at Java developers. Since the introduction of Java, it has been by far the most widely used Java SDK. On 17 November 2006, Sun announced that it would be released under the GNU General Public License , thus making it free software...
based almost completely on free and open source code in the first half of 2007, Sun released the complete 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 under the GPL on May 8, 2007, except some limited parts that were licensed by Sun from 3rd parties who did not want their code to be released under a free software licence. Sun has stated that it aims to replace the parts that remain proprietary and closed source with alternative implementations and make the class library completely free and open source. Since there's some encumbered code
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...
in the JDK, Sun will continue to use that code in commercial releases until it's replaced by fully functional free and open-source alternatives.
After the May 2007 code release
As of May 2008, the only part of the Class library that remains proprietary (4% as of May 2007 for OpenJDK 7,and less than 1% as of May 2008 in OpenJDK 6
)
is the SNMP
Simple Network Management Protocol
Simple Network Management Protocol is an "Internet-standard protocol for managing devices on IP networks. Devices that typically support SNMP include routers, switches, servers, workstations, printers, modem racks, and more." It is used mostly in network management systems to monitor...
implementation.
Since the first May 2007 release, 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...
, with the help of the community, has released as free software or replaced with free software alternatives almost all the encumbered code:
- All the audio engine code, including the software synthetizerMusical Instrument Digital InterfaceMIDI is an industry-standard protocol, first defined in 1982 by Gordon Hall, that enables electronic musical instruments , computers and other electronic equipment to communicate and synchronize with each other...
, has been released as open-source. The closed-source software synthesizer has been replaced by a new synthesizer developed specifically for OpenJDK called Gervill, - All cryptographyCryptographyCryptography is the practice and study of techniques for secure communication in the presence of third parties...
classes used in the Class library have been released as free software, - The code that scales and rasterizesRasterisationRasterisation is the task of taking an image described in a vector graphics format and converting it into a raster image for output on a video display or printer, or for storage in a bitmap file format....
fontsComputer fontA computer font is an electronic data file containing a set of glyphs, characters, or symbols such as dingbats. Although the term font first referred to a set of metal type sorts in one style and size, since the 1990s it is generally used to refer to a scalable set of digital shapes that may be...
has been replaced by FreeTypeFreeTypeFreeType is a software library written in C that implements a font rasterization engine. It is used to render text on to bitmaps and provides support for other font-related operations.-Details:... - The native color managementColor managementIn digital imaging systems, color management is the controlled conversion between the color representations of various devices, such as image scanners, digital cameras, monitors, TV screens, film printers, computer printers, offset presses, and corresponding media.The primary goal of color...
system has been replaced by LittleCMSLittleCMSLittleCMS or LCMS is an open source color management system, released as a software library for use in other programs which will allow the use of International Color Consortium profiles. It is licenced under the MIT License Agreement....
. There is a pluggable layer in the JDK, so that the commercial version can use the old color management system and OpenJDK can use LittleCMS. - The anti-aliasingAnti-aliasingIn digital signal processing, spatial anti-aliasing is the technique of minimizing the distortion artifacts known as aliasing when representing a high-resolution image at a lower resolution...
graphics rasterizerRasterisationRasterisation is the task of taking an image described in a vector graphics format and converting it into a raster image for output on a video display or printer, or for storage in a bitmap file format....
code has been replaced by the open-sourced Pisces renderer used in the phoneMEPhonemeIn a language or dialect, a phoneme is the smallest segmental unit of sound employed to form meaningful contrasts between utterances....
project. This code is fully functional, but still needs some performance enhancements, - The JavascriptJavaScriptJavaScript is a prototype-based scripting language that is dynamic, weakly typed and has first-class functions. It is a multi-paradigm language, supporting object-oriented, imperative, and functional programming styles....
plugin has been open-sourced (the JavaScript engineRhino (JavaScript engine)Rhino is an open source JavaScript engine. It is developed entirely in Java and managed by the Mozilla Foundation. The Foundation also provides another implementation of JavaScript engine written in C known as SpiderMonkey....
itself was open-sourced from the beginning).
Because of these previously encumbered components, it was not possible to build 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...
only with free software components. In order to be able to do this before the whole 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...
is made free, and to be able to bundle 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...
in Fedora Core
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...
and other free 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...
distributions, a project called IcedTea
IcedTea
IcedTea is a build and integration project for OpenJDK launched by Red Hat in June 2007. The initial goal was to make the Java OpenJDK software which Sun Microsystems released as free software in 2007 usable without requiring any other software that is not free software and hence make it possible...
has been started 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....
. It is basically an OpenJDK/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...
hybrid that can be used to bootstrap OpenJDK using only free software.
As of March 2008, the Fedora 9
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...
distribution has been released with OpenJDK 6 instead of IcedTea. Some of the stated reasons for this changes are:
- Sun has replaced most of the encumbrances for which IcedTea was providing replacements (there is less than 1% of encumbered code in the class libraryJava Class LibraryThe 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...
, and this code is not necessary to run OpenJDK). - OpenJDK 6 is a stable branch, whereas OpenJDK 7 is unstable and not expected to ship a stable release until 2009.
- Sun has licensed the OpenJDK trademark for use in Fedora.
On June 2008, it was announced that IcedTea6
IcedTea
IcedTea is a build and integration project for OpenJDK launched by Red Hat in June 2007. The initial goal was to make the Java OpenJDK software which Sun Microsystems released as free software in 2007 usable without requiring any other software that is not free software and hence make it possible...
(as the packaged version of OpenJDK on Fedora 9
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...
) 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.
See also
- Java (software platform)
- JavacJavacjavac 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...
- HotSpotHotSpotHotSpot 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:...
- Apache HarmonyApache HarmonyApache 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...
- OpenJDKOpenJDKOpenJDK is a free and open source implementation of the Java programming language. It is the result of an effort Sun Microsystems began in 2006...
- GNU ClasspathGNU ClasspathGNU 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...
, GCJ, and GIJGNU Interpreter for JavaThe GNU Interpreter for Java is a Java bytecode interpreter for the Java programming language.It is part of the free software GNU Compiler for Java . GCJ is the compiler counterpart to GIJ.-External links:* * *... - IcedTeaIcedTeaIcedTea is a build and integration project for OpenJDK launched by Red Hat in June 2007. The initial goal was to make the Java OpenJDK software which Sun Microsystems released as free software in 2007 usable without requiring any other software that is not free software and hence make it possible...
- IKVM.NETIKVM.NETIKVM.NET is an implementation of Java for Mono and the Microsoft .NET Framework. IKVM is free software, distributed under a permissive free software licence.IKVM.NET includes the following components:* A Java Virtual Machine implemented in .NET...
- List of Java virtual machines