Just as bytecode can be generated by programs other than Sun's
Java language, other types of virtual machines can execute that
bytecode.
A number of groups and companies have taken the JVM
Specifications and created their own clean-room JVMs.
This is allowed under the Sun Microsystems guidelines for using
the Java trademark in labeling the program.
Clean-room indicates that the program was developed completely
independently of Sun code.
As long as the JVM follows the specifications, even if it carries
them out in totally different manner than the Sun JVM, it is still
quite legal. This actually allows for a wide range of implementations
because in a number of areas the specifications are not exact.
For example, there is considerably leeway with regard to threads.
A JVM could create thread processes purely within the JVM, or it
might instead use native processes within the host operating system,
or even different processors on a multiprocessor system.
Also, note that there are now separate specifications for micro
and embedded platforms and for real-time systems. For some platforms,
only a non-Sun JVM may be available.
Java Virtual Machines implemented in hardware are also now available.
In this case, Java bytecode is the machine code of the hardware
JVM processor. (See Chapter 23.)
Below is a sampling of alternate JVMs. See the JVM
list sites for more examples:
- kissme - a implementation
in C for UNIX and especially GNU/Linux. Features include:
- Uses native Operating System threads
- Mark and Sweep garbage collector
- "Supports an extension to the JVM allowing persistent
java, which means that the JVM allows in-memory data structures
to automatically persist to permanent storage"
- Japhar - clean
room, open source implementation.
- LaTTe : An "Open-Source
Java Virtual Machine and Just-in-Time Compiler"
- SableVM - "portable
bytecode interpreter written in C, and implementing the Java virtual
machine specification, second edition. Its goals are to be reasonably
small, fast, and efficient, as well as providing a well-designed
and robust platform for conducting research"
- Alternative
Java Implementations - David K. Friedman and David A. Wheeler
- list of other JVMs.
- JVM
Implementations - Wikipedia
Latest update: Dec.10.2003
|