> jvms, jdks and jres
JVMs, JDKs and JREs
This page is supposed to give an overview of Java virtual machines (JVMs),
Java development kits (JDKs), Java runtime environments (JREs) and related
products. There are four major sections:
Listed in alphabetical order of the platforms / operating systems /
enterprises / organizations that are responsible for them. If the "deep" links
don't work, try the second-level domain (e.g. www.apple.com instead of
www.apple.com/java/) and tell me about it!
The link is an introductory text to Java on the Amiga platform, not a VM or
compiler. But it seems to have been updated lately. Except for an older Amiga
version of Kaffe there
seem to be only two unfinished projects, MOca (suspended) and MERAPI (message from
April 1999 that the project will take more time).
Apple offers the Mac OS Runtime for Java (MRJ) 2.2, which is compatible with
the 1.1.8 release of Sun's JDK. A PowerPC Mac with Mac OS 8.1 or later and at
least 40 MB of RAM is required
to use this version of MRJ. A Just-In-Time compiler from Symantec is part of the
distribution as well. Help with an MRJ plugin for the Netscape 4.x and Mozilla
5.x web browsers can be found here.
A Java 2 Runtime Environment (1.3) is shipped with MacOS X. There are no
plans porting any Java version higher than 1.1 to any older Mac OS.
BeOS seems to be dead (see its website, Be
Inc. have sold their assets to Palm Inc), that's why I have removed information
on a planned 1.2 compatible JDK.
A quick and dirty port of Guavac 1.2 to BeOS/Intel is available at http://www.bebits.com/app/1195.
A project to port Kaffe to BeOS is at http://bekaffe.sourceforge.net/.
JDKs for different flavors of the Linux
operating system (Intel, PowerPC, Sparc / Sparc64, m68k, ARM, MIPS). See the
ports page for more
details on the status of development and tests of 1.2.2 and 1.3 kits and runtime
environments. Sun and Blackdown now work on the same code base for 1.3.
Blackdown recently announced
their Linux / ARM J2SE 1.3.1 runtime (release candidate 1) that works on an
Java 2 is available for BSDi Internet Super Server 4.1 (and soon for FreeBSD
as well, according to the website). No word about which version (1.2, 1.3)
exactly is implemented. Note also that you must have a support contract with
BSDi to be able to download the development kit.
They provide a 1.1.6 JDK with GCOS 7 and higher. A 1.2 JDK is planned for the
CrEme is a version of Sun's JVM adapted for the Windows CE platform.
They provide a Java-2-compatible SDK for their DG/UX operating system.
The virtual machine for the Java-based operating system JOS.
Tru64, Windows NT / Alpha, Linux / Alpha, OpenVMS / Alpha
Plug-ins, JDKs and JREs in various versions (up to 1.3.1) for Tru64 UNIX,
Windows NT / Alpha, OpenVMS / Alpha and Linux / Alpha.
Compaq iPAQ PocketPC
A PersonalJava compliant virtual machine for the iPAQ PocketPC. It can be bought directly
from Insignia (it is no longer sold at compaq.handango.com).
Also see Jeode and Blackdown.
At that page you will find a
javac wrapper and notes on how to
run Swing with Sun's PersonalJava edition for the iPaq.
A 1.1.8 compatible JDK for FreeBSD is available as well as a patch to make
Blackdown's 1.2 RC-3 JDK run. A 1.2.2 version is in beta state since October 14,
Foundation Announces Java License for FreeBSD.
Another project can be found here. It is porting the 1.2.2 JDK to
FreeBSD. There are also plans for ports to NetBSD and OpenBSD.
They offer 1.2.2 JDKs (J2SE and J2EE) for Reliant UNIX and BS2000, including
JIT technology. Native code compilers are also available.
A 1.2.2 SDK and JRE are now available for HP-UX 11.0 as well as 1.3 beta
versions. You can also get a 1.2 compatible plugin for the Netscape Navigator.
HP Chai seems to be a VM for embedded systems. The HP Journada PDA is linked
directly from the site. According to this
article, it has a memory footprint of about 250 KB.
IBM offers JREs and JDKs (mostly 1.3) for
- Linux (x86 only),
- Windows 3.1 (alpha-level code),
- all Win32 flavors: Windows 95, Windows 98, Windows ME, Windows NT, Windows
- beta versions for Windows 2000 and Linux on the Itanium
platform (the virtual machine being a true 64-bit application).
A Java virtual machine written in Java, 1.3 compatible, primarily for
research purposes. Available for Windows and Linux x86. Distributed under the
A 1.3 compatible JRE for Windows NT/2000, Solaris/SPARC and Linux x86, which
aims for high execution speed and good scalability, to be used on server
A 1.1 compatible virtual machine written in C++ that rewrites bytecode for
fast execution, no JIT included to remain portable. No word about what platforms
exactly you can get it for, though. It is licensed in source form for a one time
75,000 US $ fee.
Microsoft provides VMs and SDKs for the Windows platform (x86 and Alpha)
compatible with JDK 1.1, also plugins for their web browsers Internet Explorer 4
and 5. They also offer ways to take advantage of native Windows libraries
(Windows Foundation Classes for the GUI, COM services, etc.). After some legal
battles with Sun, nothing but patches to their 1.1 compatible products can be
expected from Microsoft.
A 1.1.6 compatible JDK and JRE for NetBSD/i386. You can get 1.1.8 RC 1 here. Work on
1.2 has been stalled due to Sun's licensing methods.
Novell offers a SDK and a VM (1.3) for Netware 5.1 (with the latest support
pack) or higher.
This is a mailing list for the development of a native OpenBSD version of
Oracle provides a J2EE compliant development kit in combination with their
Oracle 8i database product. Oracle 9i seems to be on the way.
Psion creates handheld computing devices
running on the EPOC 16/32 operating systems. The JVM is fully compatible with
1.1.4, but no 1.2 version is planned (due to memory constraints). It takes 3 MB
of RAM. It has been created as a joint venture with other industry players at Symbian
Ltd.. To be able to download, you must be a member of the Symbian Developer
Network. Get the SDK at
It is reported that the JRE will run on a
Also see savaJe, an
operating system with a built-in 1.3 JRE available for the Psion Netbook.
Two other non-official projects exist which are listed below - they don't
seem to make much progress.
You will get a 1.2.2 JDK for UnixWare 7 as well as SCO OpenServer 5.0.2 etc.
Get 1.2.1 and 1.1.2 compatible JDKs for a Sequent system with DYNIX/ptx
V4.4.5 or later.
A 1.3 compliant JDK and JRE for Irix, plus the Java 3D library that makes use
of the underlying OpenGL hardware. Older versions (1.2.2, 1.1.8) are still
available as well.
Sun has designed the Java programming language, its runtime libraries and the
virtual machine specification. Unfortunately, it is a bit confusing to try to
find out what exactly Sun is offering. The following list of Java 2 Micro, Standard and Enterprise Edition packages may not be
- J2SE / J2EE 2 for Solaris (SPARC and x86), Linux (x86 only) and Win32,
- J2ME for Palm OS 3.x+,
- J2ME for Windows CE.
Once you get a free developer login, you can also learn more about early
access versions of Sun's Java products.
An introduction to the J2ME and the confusing terminology around it was
written by Gerd Castan: Wireless
Java. A similar article from Sun's point of view is Introduction
to Consumer and Embedded Technologies by Monica Pawlan.
Symbian has created a 1.1.4 compatible JVM and SDK for the EPOC operating
system. See the Psion
section. A newsgroup for Java programming is discussion.epoc.Java
which can be found on the server publicnews.epocworld.com.
Websprocket provides two products, VMServer and VMFoundry. VMServer is a
'proxy Java Virtual Machine' that runs bytecodes for thousands of clients
connected to it, making it unnecessary for those clients to run the VM
themselves. VMFoundry converts Java bytecode to a native representation that
requires no virtual machine on the target system.
Standalone virtual machines don't come with the standard classes (the runtime
library) which are typically stored in a file called rt.jar or
classes.zip, so they are not "ready-to-use" as a Java runtime
environment (JRE). It is sometimes recommended to use Classpath or the runtime library that comes
with Sun's JREs.
Many of the projects in this section are results - or work in progress - of
some research facility.
A 1.1 compatible virtual machine for RISC OS, also available for ARMLinux.
Unfinished, but almost ready. Still, the page has not been updated since April
2001. Will not be free when it will be released.
A JVM with a JIT for the Mozilla project. Available for Linux x86 and Win32,
designed to be easily portable to other platforms, distributed under the
Netscape Public License. It's in a very early stage of development.
A virtual machine for Java servers, written in Java. The project has recently
become an open source project. The code is called Jikes Research Virtual
Intel offers the Open Runtime Platform, which seems to be a set of
tools including a just-in-time compiler, a virtual machine and a garbage
collection module. The package on the download page includes C source code as
well as precompiled Windows and Linux (x86 only, I guess) binaries. It is
supposed to be used in combination with Classpath.org's runtime library. The tools
are created by Intel's own Microprocessor Research Labs.
A virtual machine based on Kaffe,
distributed under the GPL. Supports multiple separate processes within a single
A portable VM distributed under the LGPL for FreeBSD (x86), NetBSD (x86,
arm32), Linux (x86), Solaris (x86, sparc) and Win32. BeOS is not in the list of
supported platforms, but there was something about BeOS patches in the News
A VM for Linux that is part of a research project. Jupiter puts emphasis on
modularity and extensibility. Source code is available for download.
The GPL'd Kaffe virtual machine and its runtime library are a cleanroom
implementation (no dependencies on Sun). There is a very impressive list of supported platforms:
Embedded Linux, VxWorks, LynxOS, SMX, ThreadX, Linux (all distributions), DOS,
Windows NT 4.0, Windows 98, Windows 2000, Windows CE, Solaris, SunOS, BSDI,
FreeBSD, NetBSD, OSF/1, Unixware, HP-UX, NextStep, OpenStep. Supported
processors include ix86, Sparc, m68k, StrongARM, MIPS, Alpha, PowerPC and
PARisc. Memory footprint is small, the VM can be used for embedded systems. The
exact Java version is not specified, for a reference see the Kaffe Datasheet (PDF, 96
KaffePC is a
virtual machine for DOS, based on Kaffe.
There is also a port of Kaffe to AtheOS (no AWT available).
A GPL'd virtual machine, written in C (the JIT part in Java), targetted at
Unix operating systems (main OS: Linux). Depends on Classpath as runtime library.
A virtual machine with a just-in-time compiler, available with source code
under a "BSD-like license" for
Solaris 2.5+ on UltraSPARCs. A class library is not included.
A GPL'd virtual machine, written in C, that is in an early stage of
development. The goal is to create an efficient VM for Linux, using a modified
version of Classpath as runtime library.
You might also want to look at this related
paper from the list of publications of the Sable research group.
A virtual machine based on kissme.
The products in this section are designed for embedded systems, usually with
very limited resources (in terms of both memory and CPU power). They sometimes
are integrated with an operating system. Sun has come up with PersonalJava and EmbeddedJava - some of the
products below are compliant with these application environments.
The Charis pVM (pico Virtual Machine) is available for Win9x and NT, Linux,
ARM7, Hitachi's H8-300H and Patriot Scientific's PSC1000. It is primarily meant
for micro-controller based embedded systems (the ARM7 VM is stored in 32K of
ROM). A demo version can be downloaded. Seems to be commercial.
Geneva is a Java Virtual Machine running on the ORIGIN architecture,
supporting all features of a normal JVM except for the graphics part of
the runtime libraries. It is targetted at embedded systems (smartcards,
handhelds, mobile phones etc.), can run on 8-bit-systems, seems to work with
80x86 and SPARC hardware right now.
IBM VisualAge Micro Edition
These are runtime environments for embedded systems:
- QNX/Neutrino PowerPC,
- QNX/Neutrino 386,
- QNX/Neutrino x86,
- QNX/Neutrino MIPS,
- QNX/Neutrino SH-4,
- Linux x86,
- Linux PowerPC,
- Linux StrongArm,
- Windows CE/ARM,
- Windows CE/MIPS,
- Windows CE/SH3,
- Windows CE/SH4 and
- Windows x86.
More information can be found at http://www-4.ibm.com/software/ad/embedded/.
The intent JTE (Java Technology Edition) includes a Java VM using to be used
on low end embedded devices. They aim for speed and a small memory footprint.
Seems to run with the QNX 4 operating system.
The Jbed RTOS Package is a real-time capable Java Virtual Machine for
embedded systems and Internet appliances. An entire application, including the
device drivers, can be written in Java. Memory footprint starts at 10 KB. Runs
on PowerPC 8xx, Motorola 68k family processors, ARM7TDMI, StrongArm and
Coldfire. Intel and MIPS support are planned. Commercial. Demo available for
A virtual machine compliant with the PersonalJava 1.2 and EmbeddedJava 1.0.3
specifications. It is available for the following operating systems: Windows CE
2.12 and 3.0, Windows NT 4, VxWorks, Linux, ITRON, Nucleus, BSDi Unix and pSOS.
The following microprocessor architectures are supported: ARM, MIPS, x86,
Hitachi SuperH-3, Hitachi SuperH-4 and PowerPC.
JSCP (the Software Co-processor for Java) is a Java virtual machine for
embedded systems. It is especially suitable for real-time systems - their
special real-time capabilities can still be used. CrEme is
based on this product.
JV-Lite2 is a virtual machine implementation for both PersonalJava and
EmbeddedJava. It works under Linux, VxWorks, ÁITRON and other real-time
The Kada VM is aimed at the embedded market, having a small memory footprint.
The PersonalJava API is implemented. Versions for Palm OS and Win32 (to debug)
A PersonalJava environment (including a virtual machine) for the OS-9
real-time operating system.
OSE Personal JRuntime is a PersonalJava compatible application environment
for the OSE realtime operating system, aimed at embedded systems.
Sun's K Virtual Machine (K for kilobyte) is a small JVM which is available
for the Palm OS devices version 3.01 or higher. It contains a subset of the Java
1.1 classes, including some of the AWT GUI components. You'll need a (free)
registration to get the SDK.
You might also want to check out kAWT, an
abstract window toolkit for the J2ME CLDC KVM.
The Perc JVM is a commercial product with real-time capabilities for embedded
systems. It can be tuned to prefer runtime performance, startup time or memory
footprint. It is available for a variety of operating systems (NT, Linux,
Solaris, VxWorks, RTX, pSOS, CE, OSE Delta, BeOS, ETS) and processors (x86, PPC,
MIPS, ARM, SPARC, and 68k). Support for several IDE's and other development
tools is included as well. A free evaluation kit for Windows NT can be
downloaded from the homepage.
SavaJe XE is a 32-bit multi-tasking, multi-threading operating system with
integrated 1.3 J2SE (virtual machine and runtime library). The OS has a 12 MB
ROM footprint, minimum hardware requirements are 32 MB RAM and a 190 MHz Intel
StrongARM processor. Currently works on the Compaq iPAQ handheld computer and
the Psion netBook. The 1.0 release is planned for 09/2001, a single copy license
will cost USD 100.
A virtual machine with a small memory footprint aimed at embedded systems and
real-time operating systems. Only a subset of Java is supported (e.g. no
double type). The following processors are supported (according to the
site): MC68302, MC68376/332, 68HC11, 68HC16, 8051, 8051XA, various ARM
derivatives, H8S/2241, STi5512 (RISC set-top-box), DSP56300, and others.
This is a commercial product. However, use of the VM is free for evaluation,
educational and private use.
Skelmir offers the CEE-J
virtual machine for embedded systems (compatible with JDK 1.1.8). It is designed
to have a small memory footprint and be easily portable to new environments (see
the FAQ for details). Skelmir
also provides the Mercury
compilation technology. It increases the execution speed of Java-based servers.
The TINI (Tiny InterNet Interface) platform is aimed at connecting devices
from sensors to factory equipment to a network. The TINI virtual machine
(for the TINI OS operating system) has a memory footprint of less than 40 KB. It
offers only part of the runtime library: java.lang, java.io, java.net and
The TinyVM is a small virtual machine to run as a replacement firmware on the
Lego Mindstorm RCX microcontroller.
It only offers a very small subset of the runtime library but limits itself to
about 10 KB of memory.
A subset of the Java programming language's syntax, class file format and
virtual machine, Waba is designed for embedded systems. Waba programs can
usually run on a Java Virtual machine, but not vice versa. The VMs are available
for PalmPilot and Windows CE devices.
Wind River provides a JVM for their real-time operating system VxWorks.
A clean-room implementation of a Java virtual machine for embedded devices,
with emphasis on portability and efficiency. Available for Linux (x86 and ARM),
distributed under a license
similar to the GPL.
Just-in-time (JIT) compilers convert part of the bytecode (as found in
.class files) of a Java application to native code in order to improve
execution speed. As a disadvantage, they often require more memory than simple
interpreting virtual machines because both bytecode and the corresponding native
code are in memory at the same time. JIT compilers are typically bundled with or
a part of a virtual machine and do the conversion to native code at runtime, on
The well-known Sun VMs for Windows, Linux x86 and Solaris come with the Hotspot JIT compiler. It is
used by default, in order to turn it off, use the -Xint switch with the
comes with a built-in JIT compiler
JIT compiler for the Alpha platform.
A project for a JIT compiler, free for non-commercial use. Works with Solaris
(Sparc), Linux (x86) and FreeBSD (x86). Source code is available.
A just-in-time compiler for VMs on the Intel x86 platform, works with Linux
and FreeBSD. No word about the distribution model, seems to be free.