Machine (DJVM) is a cluster-wide virtual machine that supports parallel execution of a multithreaded Java application on clusters, as if it was executed on a single machine but with improved computation power. The DJVM hides the physical boundaries between the cluster nodes and allows parallelly executed Java threads to access all cluster resources through a unified interface. It is a more user-friendly parallel environment than many other existing parallel languages [8], or libraries for parallel programming such as MPI [13], CORBA [16], and Java RMI [7]. The DJVM research is valuable for high-performance computing as Java has become the dominant language for building the server-side applications, such as enterprise information systems, Web services, and large-scale Grid computing systems, due to its platform independency and built-in multithreading support at language level. This chapter addresses the realization of a distributed Java virtual machine, named JESSICA2, on clusters. Section 1.1 describes Java, Java Virtual Machine, and the main programming paradigms using Java for high-performance computing. We then focus our study on the newly emerging distributed JVM research in Section 1.2. In Section 1.3, we introduce our JESSICA2 Distributed JVM. Section 1.4 gives the performance analysis of JESSICA2. Related work is given in Section 1.5. Section 1.6 concludes this chapter. † This research is supported by Hong Kong RGC Grant HKU-7030/01E and HKU Large Equipment Grant 01021001. i BACKGROUND iii app.java app.class Java compiler Java Virtual Machine Method Area Heap PC PC obj ref Object Thread Scheduler Class Loader Execution Engine obj ref Object Stack Stack