The Virtual Machine and Byte Code

I've only alluded to the virtual machine in this class. You certainly don't have to know a great deal about the Java virtual machine to write basic programs in Java, any more than you have to know X86 assembler to program Windows in C. Nonetheless, just as understanding assembly code will help you write more efficient C programs, understanding the virtual machine will help you write better Java. Moreover it will answer many questions I know some of you have about how and why Java works the way it does.

There are several good books about the Java virtual machine including:

Java Virtual Machine Specification Cover
The Java Virtual Machine

by Tim Lindholm, Frank Yellin, Bill Joy and Kathy Walrath


If you're doing anything with the virtual machine, or if you just want to know what's going on behind the scenes, then you need this book.

The Java Virtual Machine Cover
The Java Virtual Machine

by Troy Downing and Jon Meyer


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 is a complete description of the instruction set of the VM and the class file format, including a description of the byte-code verifier.

Inside The Java Virtual Machine

by Bill Venners


Book cover

Furthermore my own book, Java Secrets has substantial discussion of the virtual machine.



Previous | Next | Top | Cafe au Lait

Copyright 1997, 1999 Elliotte Rusty Harold
elharo@metalab.unc.edu
Last Modified April 22, 1999