A Java virtual machine (JVM) is a virtual machine that enables a computer to run Java programs as well
as programs written in other languages that are also compiled to Java byte code. The JVM is detailed by
a specification that formally describes what is required of a JVM implementation. Having a specification
ensures interoperability of Java programs across different implementations so that program authors using
the Java Development Kit (JDK) need not worry about idiosyncrasies of the underlying hardware
platform.
The JVM reference implementation is developed by the Open JDK project as open source code and
includes a JIT compiler called Ho t Spot. The commercially supported Java releases available from Oracle
Corporation are based on the Open JDK runtime.
The Java virtual machine is an abstract (virtual) computer defined by a specification. The garbage-
collection algorithm used and any internal optimization of the Java virtual machine instructions (their
translation into machine code) are not specified. The main reason for this omission is to not unnecessarily
constrain implementers. Any Java application can be run only inside some concrete implementation of
the abstract specification of the Java virtual machine.