A Platform-Independent Distributed Runtime for Standard Multithreaded Java

JavaSplit is a portable runtime environment for distributed execution of standard multithreaded Java programs. It gains augmented computational power and increased memory capacity by distributing the threads and objects of an application among the available machines. Unlike previous works, which either forfeit Java portability by using a nonstandard Java Virtual Machine (JVM) or compromise transparency by requiring user intervention in making the application suitable for distributed execution, JavaSplit automatically executes standard multithreaded Java on any heterogenous collection of Java-enabled machines. Each machine carries out its part of the computation using nothing but its local standard (unmodified) JVM. Neither the programmer nor the person submitting the program for execution needs to be aware of JavaSplit or its distributed nature. We evaluate the efficiency of JavaSplit on several combinations of operating systems, JVM implementations, and communication hardware.

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

[2]  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.

[3]  Liviu Iftode,et al.  Home-based shared virtual memory , 1998 .

[4]  Henri E. Bal,et al.  Runtime optimizations for a Java DSM implementation , 2001, JGI '01.

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

[6]  Jong-Deok Choi,et al.  Escape analysis for Java , 1999, OOPSLA '99.

[7]  Shigeru Chiba,et al.  A Bytecode Translator for Distributed Execution of "Legacy" Java Software , 2001, ECOOP.

[8]  Henri E. Bal,et al.  Source-level global optimizations for fine-grain distributed shared memory systems , 2001, PPoPP '01.

[9]  Denis Caromel,et al.  Towards seamless computing and metacomputing in Java , 1998 .

[10]  Assaf Schuster,et al.  Instrumentation of standard libraries in object-oriented languages: the twin class hierarchy approach , 2004, OOPSLA '04.

[11]  Maurice Herlihy,et al.  The Aleph Toolkit: Support for Scalable Distributed Shared Objects , 1999, CANPC.

[12]  Liviu Iftode,et al.  Home-based SVM protocols for SMP clusters: Design and performance , 1998, Proceedings 1998 Fourth International Symposium on High-Performance Computer Architecture.

[13]  Alan L. Cox,et al.  Java/DSM: A platform for heterogeneous computing , 1997 .

[14]  Jonathan M. Bull,et al.  A Multithreaded Java Grande Benchmark Suite , 2001 .

[15]  Mauricio J. Serrano,et al.  Thin locks: featherweight synchronization for Java , 1998, PLDI '98.

[16]  Yannis Smaragdakis,et al.  J-Orchestra: Automatic Java Application Partitioning , 2002, ECOOP.

[17]  Noam Nisan,et al.  The popcorn project: distributed computation over the internet in java , 1997 .

[18]  Satoshi Matsuoka,et al.  Implementation of a portable software DSM in Java , 2001, JGI '01.

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

[20]  Alan L. Cox,et al.  TreadMarks: Distributed Shared Memory on Standard Workstations and Operating Systems , 1994, USENIX Winter.

[21]  Philip J. Hatcher,et al.  The Hyperion system: Compiling multithreaded Java bytecode for distributed execution , 2001, Parallel Comput..

[22]  Guy L. Steele,et al.  The Java Language Specification , 1996 .

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

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

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