
The Java Virtual Machine Specification
by Tim Lindholm, Frank YellinOverview
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 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
- ISBN-13:
- 9780201634525
- Publisher:
- Addison Wesley Professional
- Publication date:
- 09/13/1996
- Series:
- Java Series
- Edition description:
- Older Edition
- Pages:
- 475
- Product dimensions:
- 7.36(w) x 9.20(h) x 1.03(d)
Read an Excerpt
Preface
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
Series.
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: