Linguistic Support for Large-Scale Distributed Programming

We present three operators for the expression of event-based large-scale distributed programming. In short, these operators support a publish/subscribe-based interaction scheme, leading to a distributed object programming model merging the benefits of objects and events. For the integration of our operators into a strongly typed object-oriented language we identify a set of four concepts, roughly (1) serialization, (2) multiple subtyping, (3) multi-methods, and (4) closures, which provided by a language, enable its smooth integration with our model of publish/subscribe interaction. These concepts are illustrated through Java, which we augment by anonymous methods, a simple form of closures, and in which we use double dispatch to make up for the lack of multi-methods. A precompiler transforms code related to our publish/subscribe operators into calls to specifically generated typed adapters, which are similar to typed stubs/skeletons for remote method invocations.

[1]  Luca Cardelli,et al.  A language with distributed scope , 1995, POPL '95.

[2]  Leslie Lamport,et al.  Time, clocks, and the ordering of events in a distributed system , 1978, CACM.

[3]  Luciano Baresi,et al.  Architectures for an Event Notification Service Scalable to Wide-area Networks , 2000 .

[4]  David A. Moon,et al.  Object-oriented programming with flavors , 1986, OOPLSA '86.

[5]  Liuba Shrira,et al.  Promises: linguistic support for efficient asynchronous procedure calls in distributed systems , 1988, PLDI '88.

[6]  Qixiang Sun,et al.  A gossip-based reliable multicast for large-scale high-throughput applications , 2000, Proceeding International Conference on Dependable Systems and Networks. DSN 2000.

[7]  Akinori Yonezawa,et al.  Object-oriented concurrent programming ABCL/1 , 1986, OOPLSA '86.

[8]  Stephen E. Deering,et al.  Multicast routing in datagram internetworks and extended LANs , 1990, TOCS.

[9]  Sandeep K. Singhal,et al.  Log-based receiver-reliable multicast for distributed interactive simulation , 1995, SIGCOMM '95.

[10]  Andreas Polze,et al.  Using the object space: a distributed parallel make , 1993, 1993 4th Workshop on Future Trends of Distributed Computing Systems.

[11]  Barbara Liskov,et al.  Distributed programming in Argus , 1988, CACM.

[12]  Atul Prakash,et al.  The Publish/Subscribe Paradigm for Scalable Group Collaboration Systems , 1995 .

[13]  Thilo Kielmann Object-Oriented Distributed Programming with Objective Linda , 1995 .

[14]  John Tang Boyland,et al.  Parasitic methods: an implementation of multi-methods for Java , 1997, OOPSLA '97.

[15]  Patrick Th. Eugster,et al.  Content-Based Publish/Subscribe with Structural Reflection , 2001, COOTS.

[16]  James Gosling The Java Language Specification - Second Edition , 2000 .

[17]  ZHANGLi-xia,et al.  A reliable multicast framework for light-weight sessions and application level framing , 1995 .

[18]  Luca Cardelli,et al.  The Modula–3 type system , 1989, POPL '89.

[19]  Tobin J. Lehman,et al.  T Spaces : The Next Wave , 2004 .

[20]  Craig Chambers The Cecil Language - Specification and Rationale - Version 3.0 , 1995 .

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

[22]  Marcos K. Aguilera,et al.  Matching events in a content-based subscription system , 1999, PODC '99.

[23]  Martin Odersky,et al.  Pizza into Java: translating theory into practice , 1997, POPL '97.

[24]  C. A. R. Hoare,et al.  Monitors: an operating system structuring concept , 1974, CACM.

[25]  Flemming Nielson,et al.  Two-Level Semantics and Code Generation , 1988, Theor. Comput. Sci..

[26]  Daniel H. H. Ingalls A Simple Technique for Handling Multiple Polymorphism , 1986, OOPSLA.

[27]  Steven McCanne,et al.  A reliable multicast framework for light-weight sessions and application level framing , 1995, SIGCOMM '95.

[28]  Dawson R. Engler,et al.  Design and Implementation of a Modular, Flexible, and Fast System for Dynamic Protocol Composition , 1996 .

[29]  Dale Skeen,et al.  The Information Bus: an architecture for extensible distributed systems , 1994, SOSP '93.

[30]  Jean Bacon,et al.  Generic Support for Distributed Applications , 2000, Computer.

[31]  Andrew Birrell,et al.  Implementing remote procedure calls , 1984, TOCS.

[32]  David Gelernter,et al.  Generative communication in Linda , 1985, TOPL.

[33]  Kenneth P. Birman,et al.  Reliable communication in the presence of failures , 1987, TOCS.

[34]  Anne-Marie Kermarrec,et al.  Lightweight probabilistic broadcast , 2003, TOCS.

[35]  Barbara Liskov,et al.  A history of CLU , 1993, HOPL-II.

[36]  Richard Monson-Haefel,et al.  Java message service , 2000 .

[37]  Bjarne Stroustrup,et al.  The Annotated C++ Reference Manual , 1990 .

[38]  Patrick Th. Eugster,et al.  Effective multicast programming in large scale distributed systems , 2001, Concurr. Comput. Pract. Exp..

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

[40]  Patrick Th. Eugster,et al.  Distributed Asynchronous Collections: Abstractions for Publish/Subscribe Interaction , 2000, ECOOP.

[41]  Arnold Businger PORTAL Language Description , 1988, Lecture Notes in Computer Science.

[42]  Bertrand Meyer,et al.  Eiffel: The Language , 1991 .

[43]  Satoshi Matsuoka,et al.  Using tuple space communication in distributed object-oriented languages , 1988, OOPSLA '88.

[44]  Mads Haahr,et al.  Filtering and scalability in the ECO distributed event model , 2000, 2000 Proceedings International Symposium on Software Engineering for Parallel and Distributed Systems.

[45]  William R. Cook,et al.  Inheritance is not subtyping , 1989, POPL '90.

[46]  Anne-Marie Kermarrec,et al.  Lightweight probabilistic broadcast , 2001, 2001 International Conference on Dependable Systems and Networks.

[47]  Kenneth P. Birman,et al.  Bimodal multicast , 1999, TOCS.

[48]  Ken Arnold,et al.  JavaSpaces¿ Principles, Patterns, and Practice , 1999 .

[49]  Alfonso Fuggetta,et al.  Exploiting an event-based infrastructure to develop complex distributed systems , 1998, Proceedings of the 20th International Conference on Software Engineering.