A distributed runtime for Java: yesterday and today

Summary form only given. Since the introduction of the Java language less then a decade ago, there have been several attempts to create a runtime system for distributed execution of multithreaded Java applications. The goal of these attempts was to gain increased computational power while preserving Java's convenient parallel programming paradigm. This paper gives a detailed overview of the existing distributed runtime systems for Java and presents a new approach, implemented in a system called JavaSplit. Unlike previous works, which either forfeit Java's portability or introduce unconventional programming constructs, Java-Split is able to execute standard multithreaded Java while preserving portability. JavaSplit works by rewriting the bytecodes of a given parallel application, transforming it into a distributed application that incorporates all the runtime logic. Each runtime node carries out its part of the resulting distributed computation using nothing but its local standard (unmodified) Java virtual machine (JVM).

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

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

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

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

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

[6]  Denis Caromel,et al.  Towards Seamless Computing and Metacomputing in Java , 1998, Concurr. Pract. Exp..

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

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

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

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

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

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

[13]  Markus Dahm,et al.  Byte Code Engineering , 1999, Java-Informations-Tage.

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

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

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

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

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

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

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

[21]  Michael Philippsen,et al.  JavaParty - Transparent Remote Objects in Java , 1997, Concurr. Pract. Exp..