The Java Virtual Machine is the software implementation of a "CPU" designed to run compiled Java code. This includes stand-alone Java applications, as well as "applets" that are downloaded and run in Web browsers such as the NetScape Navigator. This book is a comprehensive programming guide for the Java Virtual Machine (JVM). The book is divided into two the first section includes information on the semantics and structure of the JVM; the second section is a reference of the JVM instructions, or "opcodes." This book is intended to give readers a strong overview and reference of the JVM so that they may create their own implementations of the JVM or write their own compilers that create Java object code. The programming guide includes numerous examples written in Java assembly language. A Java assembler is provided with the book, so the examples can all be compiled and executed. The reference section offers a complete description of the instruction set of the VM and the class file format, including a description of the byte-code verifier.Perhaps the most important reason for learning about the Java Virtual Machine is that it gives you additional tools for solving programming problems in Java. The Java architecture is very open -- it's easy to add programatic extensions to Java, once you have learned the basic rules of the Java Virtual Machine. And the Java Virtual Machine is portable, so you only have to write the extension once.So if you don't like how a particular feature of the Java language works, why not create an extension library that operates in the way you need it to? It's not as hard as you might think, and this book gives you all the details you need.For example, if your application has a lot of matrix manipulation code in it, you probably want to write the matrix equations using operators like *, +, / and -. But Java doesn't let you override these operators. The solution? Create a simple parser that compiles the matrix expressions into efficient JVM code directly. You can then call the resulting methods from any Java program, in any interpreter.Alternatively, you might be writing a rule-based application and want to express the rules using easy-to-read syntax. Create a JVM interface that lets you do this quickly, elegantly, and efficiently.Using JVM unleashes the true power of Java -- making it possible to develop additional syntaxes for expressing the problems you want to solve, and giving you the ultimate control over the performance of your application.So if you want to be ahead of the competition, get started on the JVM. Create applications that include operator overloading, user-extensible syntax words, dynamic generation of classes and methods, and much more. You can overcome design features of the Java language, or even create your own languages. And because of the architecture of the Java Virtual machine, you can do this simply, portably, and your work will be accessible from any Java application, in any Java interpreter on nearly any computer.
Wow, the mechanics of a platform-independent, byte-compiled, verifiable language are pretty cool. Even if you've had experience programming Java, there is a lot going on under the covers that you're probably not that familiar with. This book gets into the nitty-gritty, describing how the high-level language gets translated into bytecode, and from there to the actual machine code that is finally run.
The language marches on, implementation and optimization strategies improve, so the details in a book like this will get out of date. But, most of the high-level description is still accurate, and honestly that's probably the more important part anyway.
A hidden gem in the huge wall of Java books at my local Barnes and Noble, just waiting to tip over and crush me one day (and one day it will. At the rate things are going, one day that bookcase will be tall enough to crush us all. It might even loop the world several times, crushing previous editions of the same Java books over and over again (with apologies to Why the Lucky Stiff)).