This paper describes the design, implementation,
and experimental evaluation of a modular and extensible
Java
Virtual Machine (JVM) infrastructure, called Jupiter.
The infrastructure is intended to serve as a vehicle for
our research on scalable JVM architectures
for a 128-processor cluster of PC workstations,
with support for shared memory in software.
Jupiter is constructed, using a building block architecture,
out of many modules with small, simple interfaces.
This flexible structure, similar to UNIX
shells that build complex
command pipelines out of discrete programs, allows the rapid
prototyping of our research ideas by confining changes in JVM
design to a small number of modules.
In spite of this flexibility, Jupiter delivers
good performance.
Experimental evaluation of the current implementation
of Jupiter using the SPECjvm98 benchmarks shows that it is
on average 2.65 times faster than Kaffe and 2.20 slower
than the Sun Microsystems JDK (interpreter versions only).
By providing a flexible JVM infrastructure that delivers
competitive performance, we believe we have developed a
framework that supports further research into JVM
scalability.