The Java Virtual Machine

Since its introduction in late 1995 the Java programming language has literally attracted millions of software developers, and today Java is one of the most commonly used software platforms. The Java Virtual Machine (JVM) is the heart of every Java environment. The term "Java Virtual Machine" refers to the specification of an abstract Java processor as well as to its concrete implementation in software.

I am interested in the JVM since early 1996, when I joined MATHEMA Software GmbH as a software developer (and later course instructor). All my early research about the JVM originated at MATHEMA, and I am still very thankful for all the inspiration that I got there.
In spring 2000 I changed to PTSC (formerly named Patriot Scientific Corporation), to work on the JVM implementation for their IGNITE microprocessor series.
Below is a collection of my articles and presentations related to the JVM:

  Design and Implementation of a Java Bytecode Recompiler for ARM RISC Processors
This paper describes how Java bytecode can be efficiently translated to ARM machine code.
Please note: this work is intellectual property of MATHEMA Software GmbH and may not be redistributed without prior consent of MATHEMA. It is provided for personal reference and noncommercial use only.

Download paper (799 KB, 69 pages)   Courtesy of  

  A Generic Framework for Component-Based Development of Virtual Machines
A component-based approach to the development of JVMs and other virtual machines is discussed in this paper.
Copyright © Mirko Raner

Download paper (734 KB, 68 pages)

  Implementation der Java Virtual Machine
The article explains how the internal components of a JVM work and how they can be implemented.
The download is a raw version of an article that appeared in the German Java Magazin, issues 05.1999 and 06.1999. Illustrations are scaled down in the articles, but the GIFs can be viewed in full size when opened individually.
This article is available in German only.

Download article (223 KB, zipped HTML with embedded GIF)

A Lightweight Virtual Machine for a Stack-Based Microprocessor
This paper describes the implementation of a lightweight Java Virtual Machine for the IGNITE family of stack-based microprocessors. The abstract can be viewed here.
To download the full paper, USENIX membership is required.

Download paper (678 KB, 15 pages)
Download presentation (1414 KB, 20 slides, zipped HTML with embedded PNG)

  The Inner Workings of the Java Virtual Machine
This presentation is a general introduction to the internals of the JVM. It gives an overview of the structure of the JVM and explains the function of its individual components. The slides were made for a presentation at the December 2002 meeting of the San Diego Java User's Group (SDJUG).
To download the presentation, SDJUG membership is required (membership is free of charge).

Download presentation (4704 KB, 31 slides, zipped HTML with embedded JPEG)