The Java virtual machine specification has been written to fully
document the design of the Java virtual machine. It is essential for
compiler writers who wish to target the Java virtual machine and for
programmers who want to implement a compatible Java virtual machine. It
is also a definitive source for anyone who wants to know exactly how
the Java programming language is implemented.
The Java virtual machine is an abstract machine. References to the Java virtual machine
throughout this specification refer to this abstract machine rather
than to Sun's or any other specific implementation. This book serves as
documentation for a concrete implementation of the Java virtual machine
only as a blueprint documents a house. An implementation of the Java
virtual machine (known as a runtime interpreter) must embody this
specification, but is constrained by it only where absolutely
The Java virtual machine specified here will support the Java programming language specified in The JavaTM Language Specification (Addison-Wesley, 1996). It is compatible with the Java platform implemented by Sun's JDK releases 1.0.2 and 1.1 and the JavaTM 2 platform implemented by Sun's JavaTM 2 SDK, Standard Edition, v1.2 (formerly known as JDK release 1.2).
intend that this specification should sufficiently document the Java
virtual machine to make possible compatible clean-room implementations.
If you are considering constructing your own Java virtual machine
implementation, feel free to contact us to obtain assistance to ensure
the 100% compatibility of your implementation.
Send comments on this specification or questions about implementing the Java virtual machine to our electronic feedback form. To learn the latest about the Java 2 platform, or to download the latest Java 2 SDK release, visit our World Wide Web site at
http://java.sun.com. For updated information about the Java Series, including errata for The JavaTM Virtual Machine Specification, and previews of forthcoming books, visit
virtual machine that evolved into the Java virtual machine was
originally designed by James Gosling in 1992 to support the Oak
programming language. The evolution into its present form occurred
through the direct and indirect efforts of many people and spanned
Sun's Green project, FirstPerson, Inc., the LiveOak project, the Java
Products Group, JavaSoft, and today, Sun's Java Software. The authors
are grateful to the many contributors and supporters.
book began as internal project documentation. Kathy Walrath edited that
early draft, helping to give the world its first look at the internals
of the Java programming language. It was then converted to HTML by Mary
Campione and was made available on our Web site before being expanded
into book form.
The creation of The JavaTM Virtual Machine Specification
owes much to the support of the Java Products Group led by General
Manager Ruth Hennigar, to the efforts of series editor Lisa Friendly,
and to editor Mike Hendrickson and his group at Addison-Wesley. The
many criticisms and suggestions received from reviewers of early online
drafts, as well as drafts of the printed book, improved its quality
immensely. We owe special thanks to Richard Tuck for his careful review
of the manuscript and to the authors of The JavaTM Language Specification,
Addison-Wesley, 1996, for allowing us to quote extensively from that
book. Particular thanks to Bill Joy whose comments, reviews, and
guidance have contributed greatly to the completeness and accuracy of