The cluster virtual machine (VM) for Java provides a single system image of
a traditional Java Virtual Machine (JVM) while executing in a distributed
fashion on the nodes of a cluster. The cluster VM for Java virtualizes the
cluster, supporting any pure Java application without requiring that applic
ation be tailored specifically for it. The aim of our cluster VM is to obta
in improved scalability for a class of Java Server Applications by distribu
ting the application's work among the cluster's computing resources. The im
plementation of the cluster VM for Java is based on a novel object model wh
ich distinguishes between an application's view of an object (e.g. every ob
ject is a unique data structure) and its implementation (e.g. objects may h
ave consistent replications on different nodes). This enables us to exploit
knowledge on the use of individual objects to improve performance (e.g, us
ing object replications to increase locality of access to objects). We have
already completed a prototype that runs pure Java applications on a cluste
r of NT workstations connected by a Myrinet fast switch, The prototype prov
ides a single system image to applications, distributing the application's
threads and objects over the cluster. We used the cluster VM to run, withou
t change, a real Java Server Application containing over 10 Kloc(double dag
ger) for the source code and achieved high scalability for it on a cluster.
We also achieved linear speedup for another application with a large numbe
r of independent threads. This paper discusses the architecture and impleme
ntation of the cluster VM. It focuses on achieving a single system image fo
r a traditional JVM on a cluster white describing, in short, how we aim to
obtain scalability. Copyright (C) 2001 John Wiley & Sons, Ltd.