Distributed Object Programming

 

Rationale

The object-oriented programming paradigm has many advantages. Alas, the high-level concept of object as programming unit seems to be at odds with the notions of processes, tasks, or messages. As a result, distributed object programming leads through the tedious use of various libraries and frameworks.

This project strives for a marriage of objects and the more lower-level mechanisms for distribution offered by networks and computing infrastructures. Our approach consists in explicit language support, which is however to be minimal and at the frontier between language support and libraries.

 

Contributions

We are working on reconciling the nature of objects with various aspects of distributed programming, e.g.,

  1. One-to-many (multicast-style) interaction is a fundamental building block of distributed applications, be it for strong consistency replication or for large-scale data dissemination. Multicast protocols provide however various guarantees, rely on different systems models, and in fact aim at different application scenarios. Multicast objects are an attempt of capturing these at the language level, and more importantly, reflecting these choices also at the design of distributed applications. Typically, a strong consistency replication should not affect the nature of the replicated objects, while a large-scale dissemination will lead to a more specific, asynchronous and one-way, interaction. Multicast objects capture these constraints through a type system approach. Our Eiffel prototype allows for expressing a variety of one-to-many interaction models, including replication, publish/subscribe, or even the observer design pattern, without the addition of a single keyword!
  2. Though often criticized, remote method invocations remain to this date one of the most popular paradigms for remote object interaction. One of its often criticized drawbacks is that of synchrony imposed through its underlying request/reply interaction. Lazy argument passing is an attempt of providing more flexibility in the way arguments are passed remotely; they provide efficiency benefits in the context of large arguments, and expressiveness benefits by bridging the gap between (a)  arguments representing large, location-sensitive objects, and (b) small, simple copy-semantics objects.

        C. Line, K. R. Jayaram, and P. Eugster. Lazy Argument Passing in Java RMI. To appear in ACM PPPJ '08, September 2008.

 

Foundations

This project benefits from previous work around support for group communication in object-oriented programming languages, e.g.

  1. P. Eugster. Uniform Proxies for Java. 21st ACM Conference on Object-Oriented Programming Systems, Languages, and Applications (OOPSLA 2006), October 2006.
  2. P. Eugster and S. Baehni. Object-Oriented Programming in P2P Systems. Concurrency and Computation: Practice and Experience, 17(7-8), July 2005.
  3. P. Eugster, C.H. Damm, and R. Guerraoui. Towards Safe Distributed Application Development. 26th IEEE/ACM International Conference on Software Engineering (ICSE 2004), May 2004.
  4. C.H. Damm, P. Eugster, and R. Guerraoui. Linguistic Support for Distributed Programming Abstractions. 24th IEEE International Conference on Distributed Computing Systems (IDCDS 2004), March 2004.
  5. R. Guerraoui, P. Eugster, P. Felber, B. Garbinato, and K. Mazouni. Experiences with Object Group Systems. Software: Practice and Experience, 30(12), October 2000.

 

Members

P. Eugster and K. R. Jayaram