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 sections: 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 efficiently: your work will be accessible from any Java application, in any Java interpreter on nearly any computer.