Free Java implementations

Last updated

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. [1] 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.

Contents

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.

Mid-1990s to 2006

The first free project to offer substantial parts of Java platform functionality was likely guavac, which began some time before November 1995. [2] [3]

Since then, the free software movement developed other Java compilers, most notably the GNU Compiler for Java. Others include the Eclipse Java Compiler (ECJ), which is maintained by the Eclipse Foundation, and Jikes, which is no longer actively maintained. Since the GNU Compiler Collection's 4.3 release, GCJ (its Java compiler) is using the ECJ parser front-end for parsing Java. [4]

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. Following controversy, OpenOffice.org adopted a guideline requiring it to work with free Java implementations.

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.

Sun's November 2006 announcement

On November 13, 2006, Sun released its compiler, javac, under the GNU General Public License. [5]

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, [6] 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. [7] 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.

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, [8] [9] and less than 1% as of May 2008 in OpenJDK 6 [10] [11] ) is the SNMP implementation. [12]

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, Red Hat has started a project called IcedTea. It is basically an OpenJDK/GNU Classpath hybrid that can be used to bootstrap OpenJDK using only free software. [23] [24]

As of March 2008, the Fedora 9 distribution has been released with OpenJDK 6 instead of the IcedTea implementation of OpenJDK 7. [11] Some of the stated reasons for this change are:

In June 2008, it was announced that IcedTea 6 (as the packaged version of OpenJDK on Fedora 9) had passed the Technology Compatibility Kit tests and can claim to be a fully compatible Java 6 implementation. [25] [ citation needed ]

In September 2013, Azul Systems released Zulu, a free, open source build of OpenJDK for Windows Server and the Microsoft Azure Cloud. Later releases added support for Mac OS X, multiple versions of Linux and the Java Platform, Standard Edition version 8. Zulu is certified compliant with Java SE 8, 7 and 6 using the OpenJDK Community Technology Compatibility Kit. [26]

Amazon have released Amazon Corretto a no-cost, multiplatform, production-ready distribution of the Open Java Development Kit. It is released under GPL v2 with the Classpath Exception. Long-term support versions of Java 8 and Java 11 are available. It was first publicly released on January 31, 2019. [27]

In 2017, the Eclipse Foundation released AdoptOpenJDK, now named Adoptium, whose main goal is "to promote and support free and open-source high-quality runtimes and associated technology for use across the Java ecosystem."

See also

Related Research Articles

The GNU Compiler for Java (GCJ) is a discontinued free compiler for the Java programming language. It was part of the GNU Compiler Collection.

A GPL linking exception modifies the GNU General Public License (GPL) in a way that enables software projects which provide library code to be "linked to" the programs that use them, without applying the full terms of the GPL to the using program. Linking is the technical process of connecting code in a library to the using code, to produce a single executable file. It is performed either at compile time or run-time in order to produce functional machine-readable code. The Free Software Foundation states that, without applying the linking exception, a program linked to GPL library code may only be distributed under a GPL-compatible license. This has not been explicitly tested in court, but linking violations have resulted in settlement. The license of the GNU Classpath project explicitly includes a statement to that effect.

<span class="mw-page-title-main">GNU Classpath</span> Implementation of standard class library of Java

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.

Kaffe is a discontinued "clean room design" version 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.

A Java compiler is a compiler for the Java programming language.

javac is the primary Java compiler included in the Java Development Kit (JDK) from Oracle Corporation. Martin Odersky implemented the GJ compiler, and his implementation became the basis for javac.

HotSpot, released as Java HotSpot Performance Engine, is a Java virtual machine for desktop and server computers, developed by Sun Microsystems and now maintained and distributed by Oracle Corporation. It 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.

Jikes Research Virtual Machine is a mature virtual machine that runs programs written for the Java platform. Unlike most other Java virtual machines (JVMs), it is written in the programming language Java, in a style of implementation termed meta-circular. It is free and open source software released under an Eclipse Public License.

<span class="mw-page-title-main">Java (software platform)</span> Set of computer software and specifications

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.

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. The implementation is licensed under the GPL-2.0-only 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.

<span class="mw-page-title-main">History of free and open-source software</span>

In the 1950s and 1960s, computer operating software and compilers were delivered as a part of hardware purchases without separate fees. At the time, source code, the human-readable form of software, was generally distributed with the software providing the ability to fix bugs or add new functions. Universities were early adopters of computing technology. Many of the modifications developed by universities were openly shared, in keeping with the academic principles of sharing knowledge, and organizations sprung up to facilitate sharing. As large-scale operating systems matured, fewer organizations allowed modifications to the operating software, and eventually such operating systems were closed to modification. However, utilities and other added-function applications are still shared and new organizations have been formed to promote the sharing of software.

Comparison of the Java and .NET platforms.

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.

IcedTea is a build and integration project for OpenJDK launched by Red Hat in June 2007. 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.

libffi is a foreign function interface library. It provides a C programming language interface for calling natively compiled functions given information about the target function at run time instead of compile time. It also implements the opposite functionality: libffi can produce a pointer to a function that can accept and decode any combination of arguments defined at run time.

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.

References

  1. "OpenJDK and the IcedTea Project". www.redhat.com (in Korean). Retrieved December 16, 2019.
  2. "Announcing: guavac 0.2.5, A free compiler for the Java language". September 7, 1996. Archived from the original on August 14, 2009. Retrieved June 24, 2007.
  3. "Changelog of guavac, showing the first release happening in January 1996". Archived from the original on September 28, 2007. Retrieved June 24, 2007. Wed Nov 22 05:43:07 1995 [...] CompilerMain.C, Compiler. C, Compiler.h, lexer.l, parser.y: Initial revision
  4. "GCC 4.3 Release Series -- Changes, New Features, and Fixes" . Retrieved October 8, 2007.
  5. Sun picks GPL license for Java code
  6. OpenJDK FAQ Archived April 2, 2007, at the Wayback Machine
  7. "Open JDK is here!". Sun Microsystems. May 8, 2007. Retrieved May 9, 2007.
  8. Herron, David (October 4, 2007). "Plans for OpenJDK". Archived from the original on October 11, 2007. Retrieved October 9, 2007.
  9. Fitzsimmons, Thomas (May 18, 2007). "Plans for OpenJDK" . Retrieved May 22, 2007.
  10. Angel, Lillian (March 13, 2008). "OpenJDK to replace IcedTea in Fedora 9". Archived from the original on April 18, 2008. Retrieved April 5, 2008.
  11. 1 2 Wade, Karsten (March 13, 2008). "OpenJDK in Fedora 9!". redhatmagazine.com. Archived from the original on April 21, 2008. Retrieved April 5, 2008. Thomas Fitzsimmons updated the Fedora 9 release notes source pages to reflect that Fedora 9 would ship with OpenJDK 6 instead of the IcedTea implementation of OpenJDK 7. Fedora 9 (Sulphur) is due to release in May 2008.
  12. 1 2 "OpenJDK 6 b10 source posted". May 30, 2008. Retrieved June 1, 2008.
  13. audio-engine project page
  14. "Gervill - Software Synthesizer". Archived from the original on October 4, 2011. Retrieved June 1, 2008.
  15. "Crypto has been added to OpenJDK". September 27, 2007. Retrieved October 7, 2007.
  16. font-scaler projectpage
  17. 1 2 3 Java2D project page
  18. "Freetype font rasteriser". August 7, 2007. Retrieved November 24, 2007.
  19. phoneme.dev.java.net/ Archived 2007-06-10 at the Wayback Machine
  20. graphics-rasterizer project page
  21. Graham, Jim (October 3, 2007). "Open Source rasterizer". Sun Microsystems. Retrieved May 9, 2007.
  22. "Javascript is encumbered and there is no javascript plugin support". IcedTea. March 11, 2008. Archived from the original on September 27, 2008. Retrieved June 1, 2008. Changing Summary. JavaScript is no longer encumbered, but we still need liveconnect support.
  23. Andrew, Haley (June 7, 2007). "Experimental Build Repository at icedtea.classpath.org". Archived from the original on February 11, 2008. Retrieved June 9, 2007.
  24. Wielaard, Mark (June 7, 2007). "Experimental Build Repository at icedtea.classpath.org". Archived from the original on June 19, 2007. Retrieved June 9, 2007.
  25. Sharples, Rich (June 19, 2008). "Java is finally Free and Open". Archived from the original on June 20, 2008.
  26. "Core".
  27. Arun Gupta (January 31, 2019). "Amazon Corretto 8 Now Generally Available". Amazon Web Services. Retrieved July 25, 2019.