Distributed Java Virtual Machine

Because Java has a built-in support for multi-threading and thread-synchronisation, parallel Java applications that are traditionally executed on a single Java Virtual Machine (JVM) can be constructed easily. Because of the emergence of cluster computing that are a cost-effective substitute for multi-core computers, there have been different approaches for developing a distributed runtime environment to run Java application in parallel. In this thesis we added a distributed runtime system to an open-source JVM called Jikes Research Virtual Machine to provide a true parallel execution environment for multi-threaded Java applications within a cluster of workstations. To achieve transparency, we implemented a virtual global object space to hide the underlying distribution from the programmer and the application. Supplementarily, we added mechanisms for accessing objects in this global memory space, thread synchronization, distributed classloading, distributed scheduling and finally for I/O redirection and evaluated the overhead of these mechanisms with several microbenchmarks. The result is a prototype of a distributed Java Virtual Machine running as part of the JikesRVM which offers a wide scope for extensions. By embedding the virtual object heap into the JVM and making the JVM aware of the cluster, the distributed runtime system benefits from the abundant runtime information of the JVM which gives the opportunity for further optimizations.

[1]  Cho-Li Wang,et al.  JESSICA2: a distributed Java Virtual Machine with transparent thread migration support , 2002, Proceedings. IEEE International Conference on Cluster Computing.

[2]  Michael Factor,et al.  Implementing Java on Clusters , 2001, Euro-Par.

[3]  Jennifer Ellen Baldwin,et al.  Structuring extensions in system infrastructure software using aspects , 2006 .

[4]  Stephen J. Fink,et al.  The Jalapeño virtual machine , 2000, IBM Syst. J..

[5]  Assaf Schuster,et al.  JavaSplit: a runtime for execution of monolithic Java programs on heterogenous collections of commodity workstations , 2003, 2003 Proceedings IEEE International Conference on Cluster Computing.

[6]  Weijian. Fang,et al.  Distributed Object Sharing for Cluster-based Java Virtual Machine , 2004 .

[7]  Peter Strazdins,et al.  The Jikes Distributed Java Virtual Machine Manual , 2003 .

[8]  Henri E. Bal,et al.  Distributed Shared Memory Management for Java , 1999 .

[9]  Letizia Leonardi,et al.  Mobile JikesRVM: A framework to support transparent Java thread migration , 2008, Sci. Comput. Program..

[10]  Alan L. Cox,et al.  Lazy release consistency for software distributed shared memory , 1992, ISCA '92.

[11]  John N. Zigman,et al.  dJVM - A distributed JVM on a cluster , 2002 .

[12]  Francis C. M. Lau,et al.  JESSICA: Java-Enabled Single-System-Image Computing Architecture , 2000, J. Parallel Distributed Comput..

[13]  Alan L. Cox,et al.  Java/DSM: A Platform for Heterogeneous Computing , 1997, Concurr. Pract. Exp..

[14]  Frank Yellin,et al.  The Java Virtual Machine Specification , 1996 .

[15]  Cho-Li Wang,et al.  Efficient global object space support for distributed JVM on cluster , 2002, Proceedings International Conference on Parallel Processing.

[16]  Pascal Grange,et al.  Implementing a High Performance Object Transfer Mechanism over JikesRVM , 2007 .

[17]  Bowen Alpern,et al.  Implementing jalapeño in Java , 1999, OOPSLA '99.

[18]  Philip J. Hatcher,et al.  Executing Java threads in parallel in a distributed-memory environment , 1998, CASCON.

[19]  Robin Garner,et al.  JMTk: A portable memory management toolkit , 2003 .

[20]  Michael Factor,et al.  cJVM: a single system image of a JVM on a cluster , 1999, Proceedings of the 1999 International Conference on Parallel Processing.

[21]  Michael Philippsen,et al.  JavaParty – transparent remote objects in Java , 1997 .

[22]  Liviu Iftode,et al.  Performance evaluation of two home-based lazy release consistency protocols for shared virtual memory systems , 1996, OSDI '96.

[23]  Assaf Schuster,et al.  A distributed runtime for Java: yesterday and today , 2004, 18th International Parallel and Distributed Processing Symposium, 2004. Proceedings..

[24]  Perry Cheng,et al.  Oil and water? High performance garbage collection in Java with MMTk , 2004, Proceedings. 26th International Conference on Software Engineering.

[25]  Rajkumar Buyya,et al.  High Performance Computing on Clusters? , 1999, Scalable Comput. Pract. Exp..