Java virtual machine

This is an old revision of this page, as edited by Hirzel (talk | contribs) at 11:09, 30 December 2002 (Some elaboration on main interpretation loop and JVMs on different platforms.). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

The Java virtual machine or JVM is a Virtual machine that runs Java byte code, the code produced by a Java compiler or compilers from other languages which produce this code.

Programs written in Java are compiled into a standardized portable binary format.

This binary is then interpreted at runtime by a JVM. The main interpretation loop is described by the following pseudo-code

do {
    fetch an opcode;
    if (operands) fetch operands;
    execute the action for the opcode;
} while (there is more to do);

The JVM has a stack based architecture. Each thread has its own program counter.

Each particular operating system needs a JVM specifically for it. These JVMs interprete the byte code semantically the same way. But the actual implementation may be different.

The specification for the JVM is published in book form and HTML and anybody is allowed to write an implementation of it. The preface states:

We intend that this specification should sufficiently document the Java Virtual Machine to make possible compatible clean-room implementations. Sun provides tests which verify the proper operation of implementations of the Java Virtual Machine.

See www.kaffe.org for an example of a group of developers having done this.