Topical index of Under the Hood articles
Following is a list of all the Under the Hood articles,
grouped chronologically, and, not surprisingly, by topic. The first
three Under the Hood articles gave introductions to the
virtual machine, the class file, and garbage collection.
The lean, mean virtual machine
-- An introduction to the Java
virtual machine. This article contains an applet, named Eternal
Math, that simulates the Java virtual machine executing a sequence
of bytecodes.
The Java class file lifestyle
-- A look of the Java class
file, the file format into which all Java programs are compiled. This
article contains an applet, named Getting Loaded, that
simulates a Java class file being loaded by a Java virtual machine.
Java's garbage-collected heap
-- An overview of garbage collection
in general and the garbage-collected heap of the Java virtual machine
in particular. This article contains an applet, named Heap Of
Fish, that demonstrates a mark and sweep garbage-collected heap.
The instruction set of the Java language
The bulk of the Under the Hood articles cover the JVM's
instruction set. In addition to describing the opcodes and how they
work, these articles use the instruction set to give insights into the
Java language.
Bytecode basics
-- Introduces the bytecodes of the Java virtual
machine, and discusses primitive types, conversion operations, and
stack operations in particular. This article contains an applet, called
Conversion Diversion, that simulates a Java virtual machine
executing a sequence of bytecodes that perform type conversion.
Floating-point arithmetic
-- Describes the Java virtual machine's
floating-point support and the bytecodes that perform floating-point
operations. This article contains two applets. One applet, called
Exposed Float, allows the reader to manipulate and observe a
Java float. The other applet, Circle Of Squares,
simulates the Java virtual machine executing a sequence of bytecodes
that perform floating-point multiplication.
Logic and arithmetic
-- Describes the Java virtual machine's support for
logical and integer arithmetic, and the related bytecodes. This article
contains two applets. One applet, called Exposed Int, allows
the reader to manipulate and observe a Java int. The other
applet, Logical Results, simulates the Java virtual machine
executing a sequence of bytecodes that counts using only logical
operations.
Objects and arrays
-- Describes how the Java virtual machine deals with
objects and arrays, and discusses the relevant bytecodes. This article
contains an applet, called Three Dimensional Array, that
simulates the Java virtual machine executing a sequence of bytecodes
that initializes a three-dimensional Java array.
Exceptions
-- Describes how the Java virtual machine deals with
exceptions, and discusses the relevant bytecodes. This article contains
an applet, called PlayBall, that simulates the Java virtual
machine executing a sequence of bytecodes that shows exceptions being
thrown and caught.
Try-finally
-- Describes how the Java virtual machine implements
try-finally clauses, and discusses the relevant bytecodes. This article
contains an applet, called HopAround, that simulates the Java
virtual machine executing a sequence of bytecodes that shows
finally clauses in action.
Control flow
-- Describes how the Java virtual machine implements control
flow and discusses the relevant bytecodes. This article contains an
applet, called SayingTomato. It simulates the Java virtual
machine executing a sequence of bytecodes that shows a switch statement
in action.
Method invocation and return
-- Describes the four ways in which the Java
virtual machine invokes methods, including the relevant bytecodes.
Thread synchronization
-- Shows how thread synchronization works in the
Java virtual machine. Discusses the bytecodes for entering and exiting
monitors.
Marimba's Castanet and IBM's Aglets
Three times in the course of writing the Under the Hood
articles I diverged from the Java virtual machine proper to cover
applications of Java that I found interesting. Both of these
applications, Marimba's Castanet and IBM's Aglets, take advantage of
one of the aspects of the Java virtual machine's architecture that is
important for everyday Java programmers to understand: class
loaders.
Java beyond the browser: The Channel Metaphor
-- This article (an extra one -- not actually part of the
Under The Hood column) explains what Marimba's Castanet
is and how it addresses some of the constraints presented by Java applets.
The architecture of aglets
-- Describes the inner workings of aglets,
IBM's autonomous Java-based software agent technology.
The point of aglets
-- Analyzes the real-world utility of mobile agents such as
aglets, IBM's autonomous Java-based software agent technology.
Coverage of the JVM's security model
The final four articles of Under the Hood give an overview
of the security model built into the Java virtual machine's
architecture.
Java's security architecture
-- Gives an overview of the security model
built into the JVM and looks at the JVM's built-in safety features.
Security and class loaders
-- Shows how the JVM's class loader
architecture contributes to Java's overall security strategy.