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.
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 any specific implementation. This specification 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 must embody this specification, but is constrained by it only where absolutely necessary. We intend that this specification should sufficiently document the Java Virtual Machine to make possible compatible clean-room implementations.
The 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 the Java Software group at Sun.
This book began as internal project documentation edited by Kathy Walrath. 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 Java 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. We owe special thanks to Richard Tuck for his careful review of the manuscript. Particular thanks to Bill Joy whose comments, reviews, and guidance have contributed greatly to the completeness and accuracy of this book.