List of Java virtual machines
Appearance
This article needs additional citations for verification. (September 2014) |
This article provides non-exhaustive lists of Java SE Java virtual machines (JVMs). It does not include every Java ME vendor. Note that Jakarta EE runs on the standard Java SE JVM but that some vendors specialize in providing a modified JVM optimized for enterprise applications. Much Java development work takes place on Windows, Solaris, Linux, and FreeBSD, primarily with the Oracle JVMs. Note the further complication of different 32-bit/64-bit varieties.
The primary Java VM reference implementation is the OpenJDK HotSpot, produced by Oracle Corporation and many other big and medium-sized companies (e.g. IBM, Redhat, Microsoft, Azul, SAP).
Free and open source implementations
[edit]| Name | Status | Java versions (from … last known) | Short description | Platforms supported | Garbage Collection (GC) | Execution Mode | JIT Compilers | TCK / License Status |
|---|---|---|---|---|---|---|---|---|
| Active / Maintained | ||||||||
| ParparVM (Codename One) |
Active | 8 … 8 | Translates Java bytecode to C code; used by Codename One. | iOS, Android, Desktop targets, UWP / native app targets via native toolchain. | Boehm GC (conservative), Simple Mark & Sweep available. | AOT (Transpilation) | C Transpiler | No TCK. (Project sources / Codename One). |
| Substrate (used by GraalVM JDK) | Active | 1.8.0_212 … 25 | Polyglot VM based on HotSpot/OpenJDK; native-image & multi-language Truffle support. | Linux (x86_64, aarch64), macOS, Windows. | G1, Serial, Epsilon (HotSpot GCs). | Mixed / AOT | C1/C2 JIT, Graal JIT (Native Image) | TCK/certification varies by distributor. |
| HotSpot | Active | 1 … 25 | The widely used OpenJDK VM implementation (Oracle / OpenJDK HotSpot). | Cross-platform: Windows, Linux, macOS; primary ISAs: x86-64 and AArch64. | Serial, Parallel, G1, Epsilon (E), Shenandoah, GenZGC, GenShen more... | Mixed (Interp + JIT) | C1/C2 Compilers (Graal optional) | Yes (Reference VM in OpenJDK). |
| OpenJ9 | Active | 8 … 25 [1] | IBM J9-based open-source VM (Eclipse OpenJ9). Optimized for cloud/memory. | Linux (x86_64, ppc64le, s390x, aarch64), Windows, AIX. | Gencon / Generational Concurrent (default), Balanced, Metronome, OptThruput. | Mixed (Interp + JIT + AOT) | OpenJ9 JIT (Optimizing Compiler) | Source-open; binary TCK depends on distributor (e.g., IBM Semeru). |
| IKVM | Active (Community forks) |
1.4 … 8 | Java on .NET / Mono; bytecode-to-.NET and interop. | Runs on the .NET runtime(s). | CLR GC (Relies on the underlying .NET GC). | JIT / AOT | CLR JIT (Code generation by host runtime) | No TCK. |
| Jikes RVM | Active (Research) |
6 … 6 | Jikes Research VM — meta-circular research VM. | IA-32 Linux and PowerPC 64 Linux (historically). | MMTk (Memory Management Toolkit); modular collectors. | JIT Only | Baseline, Optimizing Compilers | No TCK. (EPL). |
| leJOS | Active (Robotics) |
1.5 … 1.6 | Robotics firmware / Java environment for Lego Mindstorms RCX/NXT/EV3. | Runs on LEGO Mindstorms hardware families; embedded firmware. | Compact GC (Mark and Sweep). | Interpreter | N/A | No TCK. |
| Maxine | Active (Research) |
7 u6 … 8 u222 [2] | Meta-circular research VM from Oracle Labs / Univ. of Manchester. | x86_64 (Linux/macOS), AArch64 (Linux), experimental RISC-V. | Maxine Heap (Java-written heap & collectors). | Mixed (Interp + JIT) | Research JIT Tiers | No TCK (research project). |
| Inactive / Archived / Maintenance | ||||||||
| Cacao | Inactive / Maintenance | 1.5 … 6 | JIT-based VM; used historically with GNU Classpath/OpenJDK. | Multi-arch historical ports: Linux, macOS, ARM and x86. | Boehm GC (typical/historical). | JIT | Platform JIT | No TCK. |
| Apache Harmony | Inactive (Retired 2011) |
5 … 6 | Clean-room OpenJDK alternative (DRLVM); discontinued. | Targeted cross-platform JVM work (Linux, Windows, macOS ports historically). | Generational GC (Mark-Compact / Copying). | Mixed (Interp + JIT) | DRLVM JIT | No TCK. |
| Kaffe | Inactive | 1.2 … 1.4 | Clean-room JVM implementation (historic). | Portable C-based VM; builds available for many POSIX platforms. | Conservative / Mark-Sweep (Kaffe GC variants). | Mixed (Interp/JIT) | Platform JIT | No TCK. |
| GNU Compiler for Java (GCJ) | Inactive | 1.4 … 1.5 | Ahead-of-time Java compiler in GCC (removed). | Historically targeted many Unix/CPU combos. | Boehm GC (historical ports). | AOT | GCC Backend (Native Code Generator) | No TCK. |
| JamVM | Inactive / Rare updates | 5 … 8 | Small, embeddable JVM often used with GNU Classpath or OpenJDK. | Cross-platform (Linux, BSD, macOS). | Mark and Sweep (compact). | Interpreter / JIT | Optional JIT | No TCK. |
| JOP | Inactive/Academic | 1.1 … 1.1 | Hardware JVM for embedded real-time systems. | Dedicated hardware (JOP processor family / FPGA/ASIC targets). | Hardware-assisted GC (real-time). | Hardware (Execution) | N/A | No TCK. |
| Juice | Inactive | 1.1 … 1.1 | Experimental Java ME JVM (NUXI OS). | Platform: niche embedded target (NUXI/experimental hardware). | Unknown. | Interpreter | N/A | No TCK. |
| Jupiter | Inactive | 1.4 … 1.4 | Research JVM using Boehm GC and GNU Classpath. | Historically Linux/x86 ports documented. | Boehm GC. | Interpreter | N/A | No TCK. |
| Mika VM | Inactive | 1.3 … 1.4 | Embedded JVM (successor to Wonka). | Embedded/IoT targets (platform-specific firmware). | Compact GC. | Interpreter | N/A | No TCK. |
| NanoVM | Inactive | 1 … 1 | Tiny JVM for Atmel AVR (Asuro robot). | Atmel AVR microcontroller (Asuro) hardware. | Simple GC. | Interpreter | N/A | No TCK. |
| SableVM | Inactive | 1.3 … 1.5 | Research-oriented portable interpreter. | Cross-platform Unix-like systems and research hosts. | Copying GC. | Interpreter | N/A | No TCK. |
| Squawk virtual machine | Inactive | 1.1 … 1.1 | Sun's small Java ME VM for embedded devices (Sun SPOT). | Sun SPOT / small embedded device platforms. | Pausing GC (embedded-friendly). | Interpreter | N/A | No TCK. |
| SuperWaba | Inactive | 1.2 … 1.2 | Java-like VM for portable devices; succeeded by TotalCross. | Embedded/mobile device targets historically. | Mark-Sweep. | Interpreter | N/A | No TCK. |
| TakaTuka | Inactive/Archived | 1.1 … 1.1 | JVM for wireless sensor motes (Tuk compact format). | Sensor-mote platforms (TinyOS-like / constrained hardware). | Unknown. | Interpreter | N/A | No TCK. |
| TinyVM | Inactive | 1 … 1 | Small RCX replacement firmware VM. | RCX-like embedded brick hardware targets. | Compact GC. | Interpreter | N/A | No TCK. |
| VMKit | Inactive / Archived | 1.4 … 1.5 | LLVM-based VM substrate (archived). | Cross-platform via LLVM backends (Linux/x86_64 etc.). | MMTk. | JIT | LLVM Backend | No TCK. |
| Wonka VM | Inactive | 1.3 … 1.4 | Embedded Wonka VM (Acunia). | Embedded hardware / specialized boards (historic). | Generational GC. | Interpreter | N/A | No TCK. |
| Java Operating Systems | ||||||||
| JX | OS-level (Research) | N/A | Java operating system (University of Erlangen). | OS-level VM (research platforms). | Precise GC. | Mixed (AOT/JIT) | AOT/JIT | No TCK. |
| JavaOS | OS-level (Legacy) | N/A | Original Java-based OS from Sun Microsystems for network computers (NCs) and embedded devices. | Dedicated network computers (NCs), embedded systems. | Classic GC (Mark and Sweep/Compact). | Mixed (Interpreter/JIT) | Standard Sun JIT | No TCK. |
Proprietary implementations
[edit]Active
[edit]- Azul Platform Prime – a fully compliant, high-performance Java virtual machine based on OpenJDK that uses Azul Systems's C4 garbage collector and Falcon JIT compiler.
- JamaicaVM (aicas) – a hard real-time Java VM for embedded systems.
Inactive
[edit]- Excelsior JET – a licensed Java SE implementation with AOT compiler for Windows, OS X, and Linux on Intel x86 and Linux on 32-bit ARM.
- Jinitiator – developed by Oracle before they purchased Sun. Designed to improve support for Oracle Forms in web sites.
- JRockit (originally from Appeal Virtual Machines) – acquired by Oracle for Linux, Windows and Solaris.
- Mac OS Runtime for Java (MRJ).
- Microsoft Java Virtual Machine – discontinued in 2001.
Lesser-known proprietary Java virtual machines
[edit]- Blackdown Java was a licensed port to Linux of the reference SunSoft implementation. It was discontinued in 2007, after OpenJDK became available.
- Sun CVM – CVM originally standing for "Compact Java Virtual Machine".
- Gemstone – modified for Java EE features (application DBMS).
- Intent (Tao Group).
- PreonVM– a Java VM for embedded systems and small and resource constrained devices.