This is a book on the organization and architecture of theJava Virtual Machine(JVM), the
software at the heart of the Java language and is found inside most computers,Web browsers,
PDAs, and networked accessories. It also covers general principles of machine organization and
architecture, with llustrations from other popular (and not-so-popular) computers.
It is not a book on Java, the programming language, although some knowledge of Java or a
Java-like language (C, C++, Pascal, Algol, etc.) may be helpful. Instead, it is a book about how
the Java language actually causes things to happen and computations to occur.
This book got its start as an experiment in modern technology. When I started teaching
at my present university (1998), the organization and architecture course focused on the 8088
running MS-DOS—essentially a programming environment as old as the sophomores taking
the class. (This temporal freezing is unfortunately fairly common; when I took the same class
during my undergraduate days, the computer whose architecture I studied was only two years
younger than I was.) The fundamental problem is that the modern Pentium 4 chip isn’t a particularly
good teaching architecture; it incorporates all the functionality of the twenty-year-old
8088, including its limitations, and then provides complex workarounds. Because of this complexity
issue, it is difficult to explain the workings of the Pentium 4 without detailed reference
to long outdated chip sets. Textbooks have instead focused on the simpler 8088 and then have
described the computers students actually use later, as an extension and an afterthought. This is
analogous to learning automotive mechanics on a Ford Model A and only later discussing such
important concepts as catalytic converters, automatic transmissions, and key-based ignition systems.
A course in architecture should not automatically be forced to be a course in the history of
computing.
Instead, Iwanted to teach a course using an easy-to-understand architecture that incorporated
modern principles and could itself be useful for students. Since every computer that runs a Web browser incorporates a copy of the JVM as software, almost every machine today already has a
compatible JVM available to it.
This book, then, covers the central aspects of computer organization and architecture: digital
logic and systems, data representation, and machine organization/architecture. It also describes the
assembly-level language of one particular architecture, the JVM, with other common architectures
such as the Intel Pentium 4 and the PowerPC given as supporting examples but not as the object of
focus. The book is designed specifically for a standard second-year course on the architecture and
organization of computers, as recommended by the IEEE Computer Society and the Association
for Computing Machinery.