Towards safe distributed application development

Distributed application development is overly tedious, as the dynamic composition of distributed components is hard to combine with static safety with respect to types (type safety) and data (encapsulation). Achieving such safety usually goes through specific compilation to generate the glue between components, or making use of a single programming language for all individual components with a hardwired abstraction for the distributed interaction. In this paper, we investigate general-purpose programming language features for supporting third-party implementations of programming abstractions for distributed interaction among components. We report from our experiences in developing a stock market application based on type-based publish/subscribe (TPS) implemented (1) as a library in standard Java as well as with (2) a homegrown extension of the Java language augmented with specific primitives for TPS, motivated by the lacks of former implementation. We then revisit the library approach, investigating the impact of genericity, reflective features, and the type system, on the implementation of a satisfactory TPS library. We then discuss the impact of these features also on other distributed programming abstractions, and hence on the engineering of distributed applications in general, pointing out lacks of mainstream programming environments such as Java as well as .NET.

[1]  Patrick Th. Eugster,et al.  Pragmatic type interoperability , 2003, 23rd International Conference on Distributed Computing Systems, 2003. Proceedings..

[2]  Walid Taha,et al.  Multi-stage programming (poster) , 1997, ICFP '97.

[3]  David Notkin,et al.  Language Support for Connector Abstractions , 2003, ECOOP.

[4]  Eric Wohlstadter,et al.  Dado: Enhancing middleware to support cross-cutting features in distributed , 2003 .

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

[6]  Akinori Yonezawa,et al.  Abstracting Object Interactions Using Composition Filters , 1993, ECOOP Workshop.

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

[8]  Andrew Kennedy,et al.  Design and implementation of generics for the .NET Common language runtime , 2001, PLDI '01.

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

[10]  Wolfgang Emmerich,et al.  Software engineering and middleware: a roadmap , 2000, ICSE '00.

[11]  David S. Rosenblum,et al.  On the Role of Style in Selecting Middleware and Underwear , 1999 .

[12]  Rachid Guerraoui,et al.  Abstractions for Distributed Interaction : Guests or Relatives ? , 2000 .

[13]  Bertrand Meyer,et al.  Applying 'design by contract' , 1992, Computer.

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

[15]  Barbara Liskov,et al.  Guardians and Actions: Linguistic Support for Robust, Distributed Programs , 1983, TOPL.

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

[17]  Martin Odersky,et al.  Making the future safe for the past: adding genericity to the Java programming language , 1998, OOPSLA '98.

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

[19]  Carlo Ghezzi Ubiquitous, Decentralized, and Evolving Software: Challenges for Software Engineering , 2002, ICGT.

[20]  Walid Taha,et al.  Multi-Stage Programming. , 1997, ICFP 1997.

[21]  Paolo Ciancarini,et al.  Jada - Coordination and Communication for Java Agents , 1996, Mobile Object Systems.

[22]  Guy L. Steele,et al.  Growing a Language , 1999, High. Order Symb. Comput..

[23]  M. Tamer Özsu,et al.  Query Optimization and Execution Plan Generation in Object-Oriented Data Management Systems , 1995, IEEE Trans. Knowl. Data Eng..

[24]  Patrick Th. Eugster,et al.  On objects and events , 2001, OOPSLA '01.

[25]  Richard N. Taylor,et al.  Using off-the-shelf middleware to implement connectors in distributed software architectures , 1999, Proceedings of the 1999 International Conference on Software Engineering (IEEE Cat. No.99CB37002).

[26]  Thuan L. Thai,et al.  NET framework essentials , 2001 .

[27]  David S. Rosenblum,et al.  Achieving scalability and expressiveness in an Internet-scale event notification service , 2000, PODC '00.