This article needs to be updated.(March 2019) |
Name | Creator | First public release | Latest stable version | Latest release date | Cost, availability | License |
---|---|---|---|---|---|---|
Eclipse OpenJ9 (formerly IBM J9) | IBM | 15 Mar 2018 [1] | 0.43.0 [2] | 5 February 2024 | Free | Apache License 2.0 Eclipse Public License 2.0 |
GCJ | GNU | 6 September 1998 | 6.4 (Terminal) | 4 July 2017 | Free | GPL version 2 or later, with the "libgcc exception" [3] |
GraalVM | Oracle | May 2019 | 19.3.0 [4] | 20 November 2019; 13 June 2023 | Free | GPL version 2 only |
HotSpot, OpenJDK edition | Sun Microsystems, Oracle | 27 April 1999 | jdk-16 | 16 March 2021 | Free | GPL version 2 only |
HotSpot, Oracle JDK edition | Sun Microsystems, Oracle | 27 April 1999 | jdk 16 | 16 March 2021 | Free | Proprietary |
HotSpot, Java SE embedded edition | Sun Microsystems, Oracle | 27 April 1999 | ? | ? | Commercial | Proprietary [5] |
HotSpot, Zero port | Gary Benson [6] | ? | ? | ? | Free | GPL version 2 only |
IKVM.NET | Jeroen Frijters | 28 June 2004 | 7.0.4335.0 | 5 December 2011 | Free | zlib License [7] |
JAmiga | Peter Werno, Joakim Nordström | 19 May 2005 [8] | 1.2 | 6 January 2014 | Free | GPL version 2 or later |
JamVM | Robert Lougher | 13 March 2003 | 2.0.0 | 30 July 2014 | Free | GPL version 2 or later |
Jato VM | Pekka Enberg and contributors [9] | ? | 0.3 [10] | 4 January 2012 [10] | Free | GPL version 2 only [9] |
JC virtual machine | Archie L. Cobbs | ? | 1.4.7 | 13 November 2005 | Free | LGPL version 2.1 or later |
Jikes RVM | IBM | 14 October 2001 | 3.1.4 [11] | 18 February 2016 [11] | Free | Eclipse Public License version 1.0 [12] |
Kaffe | Transvirtual Technologies | 1996 | 1.1.9 | 22 February 2008 | Free | GPL version 2 or later [13] |
Mysaifu JVM | ? | 16 April 2005 [14] | 0.4.8 [14] | 5 March 2010 [14] | Free | GPL version 2 only [14] |
SableVM | Sable Research Group | ? | 1.13 | 30 March 2007 [15] | Free | LGPL version 2.1 or later |
JVM | Status | Latest supported Java version | Supported class libraries | Performance | ||||
---|---|---|---|---|---|---|---|---|
GNU Classpath | OpenJDK | Other | Interpretation | AOT | JIT | |||
GCJ | No longer maintained or distributed by GNU as of GCC 7 [16] | ? | Yes | No | Yes | Yes | No | |
HotSpot, OpenJDK edition | Reference implementation. | 1.8 | No | Yes | Yes | No | Yes | |
HotSpot, Oracle JDK edition | Reference implementation. | 1.8 | No | Yes | Yes | No | Yes | |
HotSpot, Java SE embedded edition | ? | No | Yes | Yes | No | Yes | ||
HotSpot, Zero port | Interpreter-only port of OpenJDK using almost no assembly language and designed to be very portable. | 1.7 | No | Yes | Yes | No | No | |
IKVM.NET | ? | ? | ? | Whatever the .NET runtime uses | ||||
JAmiga | 1.4 [17] | Yes [18] | No | Yes [19] | No | No | ||
JamVM | 1.8 [20] | Yes [21] | Yes [21] | Yes [21] | No | Yes [21] | ||
Jato VM | 1.6 [22] | Yes [10] | No [23] | No [23] | No [23] | Yes [10] | ||
JC virtual machine | Translates Java to C and compiles it with a C compiler. | 1.4 [24] | Yes [25] | No | Yes [26] | Yes [26] | Yes [26] | |
Jikes RVM | 1.6 [27] | Yes [28] | Port [29] [30] | Apache Harmony [28] | No [31] | ? | Yes | |
Kaffe | 1.4 [13] | Yes [13] | No | Yes [13] | No [13] | Yes [13] | ||
Mysaifu JVM | ? | Yes [32] | No | Yes [33] | No [33] | No [33] | ||
SableVM | Unmaintained | 1.4 | Yes | No | Yes | No | No |
JVM | x86 | x86-64 | SPARC | MIPS | Itanium | Power ISA | ARM | Alpha | S/390 | z/Architecture | m68k |
---|---|---|---|---|---|---|---|---|---|---|---|
GCJ | Yes [34] | Yes [34] | Yes [34] | Yes [34] | Yes [34] | Yes [34] | Yes [34] | Yes [34] | Yes [34] | No [34] | No [34] |
HotSpot, OpenJDK edition | Yes [35] | Yes [35] | Solaris only [35] | Port [36] [37] | No [35] | PowerPC/AIX port [38] | Yes [35] | No [35] | No [35] | No [35] | No [35] |
HotSpot, Oracle JDK edition | Yes [35] | Yes [35] | Solaris only [35] | No [35] | Java 1.6 [39] | No [35] | Yes [35] | No [35] | No [35] | No [35] | No [35] |
HotSpot, Java SE embedded edition | Yes [5] | Yes [5] | Yes [5] | ? | ? | Yes [5] | Yes [5] | ? | ? | ? | ? |
HotSpot, Zero port | Yes [40] | Yes [40] | No [40] | Yes [40] | Yes [40] | Yes [40] | Yes [40] | Yes [40] | No [40] | Yes [40] | No [40] |
IKVM.NET | Any architecture with a .NET framework. | ||||||||||
JAmiga | ? | ? | No | No | No | Yes | No | No | No | No | Yes |
JamVM | Yes [21] | Yes [21] | Yes [21] | Yes [21] | No [21] | Yes [21] | Yes [21] | No [21] | No [21] | No [21] | No [21] |
Jato VM | Yes [10] | Under development [41] | No | No | No | Under development [41] | Preliminary ARMv5 support [23] | No | No | No | No |
JC virtual machine | Yes | No | No | No | No | No | No | No | No | No | No |
Jikes RVM | Yes [42] | No [42] | No [42] | No [42] | No [42] | Yes [42] | No [42] | No [42] | No [42] | No [42] | No [42] |
Kaffe | Yes [13] | Yes [13] | Yes [13] | Yes [13] | Yes [13] | Yes [13] | Yes [13] | Yes [13] | Yes [13] | No [13] | Yes [13] |
Mysaifu JVM | No [43] | No [43] | No [43] | No [43] | No [43] | No [43] | Yes [43] | No [43] | No [43] | No [43] | No [43] |
SableVM | Yes [44] | Yes | Yes [44] | Yes | Yes [44] | Yes [44] | Yes [44] | Yes [44] | Yes [44] | No [44] | Yes [44] |
JVM | Windows | Linux | FreeBSD | NetBSD | OpenBSD | Solaris | OpenSolaris | Darwin | macOS | iOS | BeOS | Haiku | AIX | IRIX | OS/2 | Windows Mobile | AmigaOS | Other |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
GCJ | Yes [34] | Yes [34] | Yes [34] | ? | ? | Yes [34] | ? | Yes [34] | Yes [34] | ? | ? | ? | ? | Yes [34] | ? | No [34] | No [34] | DEC OSF 4.0f and 5.1, Hitachi SH-3/4 micro-controller [34] |
HotSpot, OpenJDK edition | Yes [45] (distributed as source code) | Yes | Port [46] | Port [46] | Port [46] | Yes | Yes [47] | ? | Yes [48] | No | No | Port [49] | Port [38] | No | Port [50] | No | No | |
HotSpot, Oracle JDK edition | Yes [35] | Yes [35] | No | No | No | Yes [35] | ? | ? | Yes [35] | No | No | No | No | No | No | No | No | |
HotSpot, Java SE embedded edition | Yes [5] | Yes [5] | No [5] | No [5] | No [5] | Yes [5] | ? [5] | No [5] | No [5] | No [5] | No [5] | No [5] | No [5] | No [5] | No [5] | No [5] | No [5] | |
HotSpot, Zero port | No [40] [51] | Yes [40] [51] | No [40] [51] | No [40] [51] | No [40] [51] | No [40] [51] | No [40] [51] | No [40] [51] | No [40] [51] | No [40] [51] | No [40] [51] | No [40] [51] | No [40] [51] | No [40] [51] | No [40] [51] | No [40] [51] | No [40] [51] | |
IKVM.NET | Any operating system with a .NET framework | |||||||||||||||||
JAmiga | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | Yes | |
JamVM | No [21] | Yes [21] | Yes [21] | No [21] | Yes [21] | Yes [21] | Yes [21] | Yes [21] | Yes [21] | On Jailbroken iPhone [21] | No [21] | No [21] | No [21] | No [21] | No [21] | No [21] | No [21] | kFreeBSD |
Jato VM | No [41] | Yes [41] | No [41] | No [41] | No [41] | No [41] | No [41] | Under development [41] | ? [41] | No [41] | No [41] | No [41] | No [41] | No [41] | No [41] | No [41] | No [41] | |
JC virtual machine | No | Yes | Yes | No | No | No | No | No | No | No | No | No | No | No | No | No | No | |
Jikes RVM | No [42] | Yes [42] | No [42] | No [42] | No [42] | No [42] | No [42] | No [42] | Yes [42] | No [42] | No [42] | No [42] | Yes [42] | No [42] | No [42] | No [42] | No [42] | |
Kaffe | Using Cygwin [13] | Yes [13] | Yes [13] | Yes [13] | Yes [13] | Yes [13] | ? | Yes [13] | Yes [13] | No [13] | Yes [13] | No [13] | Yes [13] | Yes [13] | No [13] | No [13] | Yes | Many others [13] |
Mysaifu JVM | No [43] | No [43] | No [43] | No [43] | No [43] | No [43] | No [43] | No [43] | No [43] | No [43] | No [43] | No [43] | No [43] | No [43] | No [43] | Yes [43] | No [43] | |
SableVM | Using Cygwin [44] | Yes [44] | Yes [44] | ? | ? | ? | ? | ? | Yes [44] | ? | ? | ? | ? | ? | ? | ? | ? |
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.
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.
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.
Jikes is an open-source Java compiler written in C++. It is no longer being updated.
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.
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. 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.
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.
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.
The Maxine virtual machine is an open source virtual machine that is developed at the University of Manchester. It was formerly developed by Sun Microsystems Laboratories, since renamed Oracle Labs. The emphasis in Maxine's software architecture is on modular design and code reuse for flexibility, configurability, and productivity for industrial and academic virtual machine researchers. It is one of a growing number of Java virtual machines written entirely in Java in a meta-circular style. Examples include Squawk and Jikes RVM.
Nashorn is a JavaScript engine developed in the Java programming language originally by Oracle and later by the OpenJDK Community. It relies on the support for dynamically typed languages on the Java Platform Nashorn has been included with Java 8 through JDK 14.
GraalVM is a Java Development Kit (JDK) written in Java. The open-source distribution of GraalVM is based on OpenJDK, and the enterprise distribution is based on Oracle JDK. As well as just-in-time (JIT) compilation, GraalVM can compile a Java application ahead of time. This allows for faster initialization, greater runtime performance, and decreased resource consumption, but the resulting executable can only run on the platform it was compiled for. It provides additional programming languages and execution modes. The first production-ready release, GraalVM 19.0, was distributed in May 2019. The most recent release is GraalVM for JDK 22, made available in March 2024.