Design and Implementation of Java Virtual Machine
Abstract
Interpretation of Java bytecode results in slow execution of program.First version of Java Virtual Machine(JVM) implementation was relied
on interpretation techniques. On the other hand performance can be improved by translating the Java bytecode into machine code by a Just-In-Time(JIT) compiler and this technique is being integrated into most JVM implementations.
Java is an automatic garbage collected language, freeing the programmer from the explicit memory management. Garbage collection "pause" time can
be reduced by using a generational garbage collection.
This thesis describes an implementation of a JVM. The specific contributions made in this thesis include: development of a Just-In-Time(JIT) compiler using DAG construction technique, a bytecode interpreter, a generational
garbage collector. Our implementation can execute Java bytecode either by an interpreter or the bytecode can be translated into machine code
using the JIT compiler and the translated code is directly executed by the processor. We have implemented the Java Native Interface (JNI) to enable using C and assembly language programs with Java.