Language Support for Connector Abstractions

2003 European Conference on Object-Oriented Programming (ECOOP 2003), Darmstadt, Germany, July 21-25 2003.
Jonathan Aldrich, Vibha Sazawal, David Notkin, and Craig Chambers
Software connectors are increasingly recognized as an important consideration in the design and implementation of object-oriented software systems. Connectors can be used to communicate across a distributed system, coordinate the activities of several objects, or adapt one object's interface to the interface of another. Mainstream object-oriented languages, however, do not provide explicit support for connectors. As a result, connection code is intermingled with application code, making it difficult to understand, evolve, and reuse connection mechanisms.

In this paper, we add language support for user-defined connectors to the ArchJava language. Our design enables a wide range of connector abstractions, including caches, events, streams, and remote method calls. Developers can describe both the run-time semantics of connectors and the typechecking semantics. The connector abstraction supported by ArchJava cleanly separates reusable connection code from application logic, making the semantics of connections more explicit and allowing engineers to easily change the connection mechanisms used in a program. We evaluate the expressiveness and the engineering benefits of our design in a case study applying ArchJava to the PlantCare ubiquitous computing application. This paper describes an extension of ArchJava that supports connectors with user-defined static and dynamic semantics. We evaluate the extension on PlantCare, a ubiquitous computing application being developed at Intel Research Seattle.

To get the paper, click here.

Cecil Group