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.,
- 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!
- 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.
- P. Eugster. Uniform Proxies for Java. 21st ACM Conference
on Object-Oriented Programming Systems, Languages, and Applications (OOPSLA
2006), October 2006.
- P. Eugster and S. Baehni. Object-Oriented Programming in
P2P Systems. Concurrency and Computation: Practice and Experience, 17(7-8),
July 2005.
- 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.
- 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.
- 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