Uh-oh, it looks like your Internet Explorer is out of date.

For a better shopping experience, please upgrade now.

The Java Virtual Machine Specification

The Java Virtual Machine Specification

by Tim Lindholm, Frank Yellin
This second edition of the official, definitive description of the Java Virtual Machine covers the many fundamental changes incorporated into the newest version of the Java Development Kit.


This second edition of the official, definitive description of the Java Virtual Machine covers the many fundamental changes incorporated into the newest version of the Java Development Kit.

Editorial Reviews

The people who designed and implemented the Java programming language provide the complete and definitive specification of the Java Virtual Machine at its core. After explaining what a virtual machine is and how it operatives and overviewing their version, they detail the platform- and implementation-independent class file format and the complete instruction set. For people who want to write a compiler based on the technology. No bibliography. Annotation c. by Book News, Inc., Portland, Or.
Ray Duncan

The Guts of Java

If you find the Java scene confusing, it's probably because the term Java is brandished in so many contexts: the Java programming language, the Java application framework, Java development tools, JavaScript support in HTML browsers, the Java applet tags that were added to HTML, network-distributable Java applets, stand-alone Java applications, and last but not least, Java pseudocode and the Java virtual machine (JVM) that runs it. The Java book market is equally confusing -- publishers are in a panic, and are rushing out Java books by the wheelbarrow-load with (for the most part) little attention to quality or any overall strategy.

Here at ERCB, we've received at least a dozen shelf-feet of Java books for review from various publishers, but on close inspection many of them are merely warmed over C/C++ programming books by the usual stable of C/C++ programmer-authors. Since mass-market Java programming tools are such a recent phenomenon, very few of the books are based on serious Java programming experience or address the development of non-trivial, non-toy applications. Still fewer address topics beyond the basic Java programming language or delve beneath the surface of the Java application framework -- in fact, this is the first one I have seen that provides any substantive information about Java pseudo-code and the virtual machine at all.

The first part of The Java Virtual Machine Specification is composed of a somewhat redundant overview of the Java programming language, a introduction to the Java Virtual Machine architecture, and a detailed description of the Java class-file format. The body of the book is devoted to the Java virtual machine opcodes, which are discussed one at a time with their binary representations, stack effects, side effects, exception conditions, and miscellaneous programming notes. The last section covers compiling Java source code to pseudocode, with examples, as well as threads, locks, and some Sun-JVM-specific pseudocode optimizations (which amount to self-modifying opcodes).

Technologically, this is an important book. But as its title indicates, it was designed to be a specification, not a tutorial, so it's tough sledding for the most part and it will be useful mainly as a reference. The hands-on, blow-by-blow description of implementing and debugging a Java Virtual Machine on a mainstream CPU has yet to be written (although I wouldn't be too surprised to learn that Andrew Schulman is already working on it!). The sections of The Java Virtual Machine Specification concerned with code compilation and especially code validation are quite interesting, however, and are well worth your time.

In the Preface, the authors comment that "We intend that this specification should sufficiently document the Java Virtual Machine to make possible compatible clean-room implementations." Did the authors attain this goal? As a past implementor of commercial Forth interpreter/compilers and cross-compilers on many different CPUs, I'm dubious. Forth is based on a virtual machine architecture not terribly dissimiliar to Java, but I don't think I could program my way directly to a working JVM that would run any ol' Java applet I found on the Internet, using just the information supplied here. The descriptions of "frames" and the class loading/linking process are a bit too abstract, and the authors take for granted a fairly deep understanding of C++ implementation strategies. Additionally, a number of machine-dependent issues are not mentioned at all. For example, the mapping of Java-level graphic operations onto machine- or system-specific graphic APIs -- and how such calls from the AWT are passed through or around the JVM -- is left completely to the imagination.

Still, this book is the only game in town at this point for developers of Java compilers, JVMs, and Java debuggers.--Dr. Dobb's Electronic Review of Computer Books

Product Details

Addison Wesley Professional
Publication date:
Java Series
Edition description:
Older Edition
Product dimensions:
7.36(w) x 9.20(h) x 1.03(d)

Read an Excerpt


About the Java Series

The Java Series books provide definitive reference documentation for
Java programmers and end users. They are written by members of the
Java team and published under the auspices of JavaSoft, a Sun
Microsystems business. The World Wide Web allows Java
documentation to be made available over the Internet, either by
downloading or as hypertext. Nevertheless, the worldwide interest in
Java technology led us to write and publish these books to supplement all
of the documentation at our Web site.

We would like to thank the Corporate and Professional Publishing Group
at Addison-Wesley for their partnership in putting together the Series.
Our editor Mike Hendrickson and his team have done a superb job of
navigating us through the world of publishing. Within Sun, the support of
James Gosling, Ruth Hennigar, Jon Kannegaard, and Bill Joy ensured
that this series would have the resources it needed to be successful. In
addition to the tremendous effort by individual authors, many members of
the JavaSoft team have contributed behind the scenes to bring the highest
level of quality and engineering to the books in the Series. A personal
note of thanks to my children Christopher and James for putting a
positive spin on the many trips to my office during the development of the

Meet the Author

Tim Lindholm, Distinguished Engineer in Java Software at Sun Microsystems, Inc., was an original member of the Java project at Sun. He was a key contributor to the Java programming language and remains the senior architect of the Java virtual machine and the Java 2 runtime environment. He is also the Technical Editor of The Java™ Series.

Frank Yellin, Staff Engineer in Embedded and Consumer at Sun Microsystems, Inc., was an original member of the Java project at Sun. He has spent a decade working on the runtime systems for interpreted and compiled languages. Previously he worked at Lucid, where he focused on multitasking, garbage collection, interrupts, and the compilation of Common Lisp.

Customer Reviews

Average Review:

Post to your social network


Most Helpful Customer Reviews

See all customer reviews