JR: flexible distributed programming in an extended Java

Java provides a clean object-oriented programming model and allows for inherently system-independent programs. Unfortunately, Java has a limited concurrency model, providing only threads and remote method invocation (RMI). The JR programming language extends Java to provide a rich concurrency model. JR provides dynamic remote virtual machine creation, dynamic remote object creation, remote method invocation, asynchronous communication, rendezvous, and dynamic process creation. JR programs are written in an extended Java and then translated into standard Java programs. The JR run-time support system is also written in standard Java. This paper describes the JR programming language and its implementation. Some initial measurements of the performance of the implementation are also included.

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

[2]  Tim Brecht,et al.  Ajents: towards an environment for parallel, distributed and mobile Java applications , 1999, JAVA '99.

[3]  Rachid Guerraoui,et al.  Flexible protocol composition in BAST , 1998, Proceedings. 18th International Conference on Distributed Computing Systems (Cat. No.98CB36183).

[4]  Ronald A. Olsson Using SR for discrete event simulation: A study in concurrent programming , 1990, Softw. Pract. Exp..

[5]  Narain H. Gehani,et al.  The concurrent C programming language , 1989 .

[6]  Zvi M. Kedem,et al.  Charlotte: Metacomputing on the Web , 1999, Future Gener. Comput. Syst..

[7]  Rachid Guerraoui,et al.  Concurrency and distribution in object-oriented programming , 1998, CSUR.

[8]  C. A. R. Hoare,et al.  Communicating sequential processes , 1978, CACM.

[9]  Per Brinch Hansen,et al.  Java's insecure parallelism , 1999, SIGP.

[10]  Rachid Guerraoui,et al.  Using the Strategy Design Pattern to Compose Reliable Distributed Protocols , 1997, COOTS.

[11]  Narain H. Gehani,et al.  Message passing in concurrent C: Synchronous versus asynchronous , 1990, Softw. Pract. Exp..

[12]  Michael Philippsen,et al.  A more efficient RMI for Java , 1999, JAVA '99.

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

[14]  Andy J. Wellings,et al.  Integrating object-oriented programming and protected objects in Ada 95 , 2000, TOPL.

[15]  Tingjian Ge,et al.  Fairness in shared invocation servicing , 2002, Comput. Lang. Syst. Struct..

[16]  Laxmikant V. Kalé,et al.  Design and Implementation of Parallel Java with Global Object Space , 1997, PDPTA.

[17]  Gregory R. Andrews,et al.  Concurrent programming - principles and practice , 1991 .

[18]  M. Stella Atkins,et al.  Performance of multi‐tasking and synchronization mechanisms in the programming language SR , 1988, Softw. Pract. Exp..

[19]  Benjamin C. Pierce,et al.  Types and programming languages: the next generation , 2003, 18th Annual IEEE Symposium of Logic in Computer Science, 2003. Proceedings..

[20]  Narain H. Gehani,et al.  Rendezvous Facilities: Concurrent C and the Ada Language , 1988, IEEE Trans. Software Eng..

[21]  M. Stella Atkins Experiments in SR with different upcall program structures , 1988, TOCS.

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

[23]  Ronald A. Olsson,et al.  Exception Handling during Asynchronous Method Invocation (Research Note) , 2002, Euro-Par.

[24]  Gregory R. Andrews,et al.  An overview of the SR language and implementation , 1988, TOPL.

[25]  Rachid Guerraoui,et al.  Protocol Classes for Designing Reliable Distributed Environments , 1996, ECOOP.

[26]  Michael L. Scott,et al.  Language Support for Loosely Coupled Distributed Programs , 1987, IEEE Transactions on Software Engineering.

[27]  Peter R. Cappello,et al.  Javelin: Internet‐based parallel computing using Java , 1997 .

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

[29]  Michael L. Scott The Lynx Distributed Programming Language: Motivation, Design and Experience , 1991, Comput. Lang..

[30]  Rajeev R. Raje,et al.  Asynchronous Remote Method Invocation (ARMI) Mechanism for Java , 1997, Concurr. Pract. Exp..

[31]  Johannes F. Broenink,et al.  Communicating Java Threads , 1997 .

[32]  Chris J. Scheiman,et al.  SuperWeb: towards a global Web-based parallel computing infrastructure , 1997, Proceedings 11th International Parallel Processing Symposium.

[33]  Rachid Guerraoui,et al.  Garf: a tool for programming reliable distributed applications , 1997, IEEE Concurrency.

[34]  Robert P. Cook,et al.  *MOD—A Language for Distributed Programming , 1980, IEEE Transactions on Software Engineering.

[35]  Satoshi Matsuoka,et al.  Analysis of inheritance anomaly in object-oriented concurrent programming languages , 1993 .

[36]  Tim Brecht,et al.  ParaWeb: towards world-wide supercomputing , 1996, EW 7.

[37]  Ronald A. Olsson,et al.  Integrating concurrency constructs with object-oriented programming languages: a case study , 2002 .

[38]  Rajeev R. Raje,et al.  Asynchronous Remote Method Invocation (ARMI) mechanism for Java , 1997 .

[39]  Jason Maassen,et al.  An efficient implementation of Java's remote method invocation , 1999, PPoPP '99.

[40]  Gregory R. Andrews,et al.  The SR programming language: concurrency in practice , 1993 .

[41]  Stephen J. Hartley Concurrent programming: the Java programming language , 1998 .

[42]  Jean-Pierre Briot,et al.  Actalk: A Testbed for Classifying and Designing Actor Languages in the Smalltalk-80 Environment , 1989, ECOOP.

[43]  Andrew P. Black,et al.  Supporting distributed applications: experience with Eden , 1985, SOSP '85.

[44]  Michael L. Scott,et al.  Messages vs. remote procedures is a false dichotomy , 1983, SIGP.

[45]  Jean Bézivin Some experiments in object-oriented simulation , 1987, OOPSLA 1987.