Loosely Coupled Components

  • Patrick Th. Eugster
  • Rachid Guerraoui
  • Joe Sventek
Part of the The Springer International Series in Engineering and Computer Science book series (SECS, volume 648)


Collections are widely used as a basic programming abstraction to store, retrieve and manipulate objects. There are different known types of collections (e.g., sets, bags, queues), offering various semantics for different application purposes. A collection can offer a distributed flavor, that is, it can be accessible from various nodes of a network. The elements of such a collection are thus shared between the different nodes, and a distributed collection can be viewed as a means of exchanging information between components, in a way similar to a shared memory. This chapter presents Distributed Asynchronous Collections (DACs). Roughly spoken, a DAC is capable of calling back an interested party in order to notify for instance the insertion or removal of elements. By viewing the elements of our Distributed Asynchronous Collections (DACs) as events, these collections can be seen as programming abstractions for asynchronous distributed interaction, enabling the loose coupling of components. In that sense, the DACs we present in this chapter marry the two worlds of object-orientation and event-based, so-called “message-oriented”, middleware. DACs are general enough to capture the commonalities of various message-oriented interaction styles, like message queuing and publish/subscribe interaction, and flexible enough to allow the exploitation of the differences between these styles.


Distributed components abstraction asynchronous interaction message queuing collections publish/subscribe 


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    B. Oki and M. Pfluegl and A. Siegel and D. Skeen. The Information Bus — An Architecture for Extensible Distributed Systems. In 14th ACM Symposium on Operating System Principles, pp. 58–68, 1993.Google Scholar
  2. 2.
    D. Powell (editor). Group Communications In Communications of the ACM, 39(4), pp. 50–97, 1996.Google Scholar
  3. 3.
    Talarian Corporation. Everything You need to know about Middleware: Mission-Critical Interprocess Communication (White Paper),, 1999.Google Scholar
  4. 4.
  5. 5.
    D. Skeen. Vitria’s Publish-Subscribe Architecture: Publish-Subscribe Overview., 1999Google Scholar
  6. 6.
    M. Altherr and M. Erzberger and S. Maffeis. iBus — A Software Bus Middleware for the Java Platform. In Int. Workshop on Reliable Middleware Systems, pp. 43–53, 1999.Google Scholar
  7. 7.
    B. Blakeley, and H. Harris and J.R.T. Lewis. Messaging and Queuing Using the MQI: Concepts and Analysis, Design and Development McGraw-Hill, 1995.Google Scholar
  8. 8.
    Digital Equipment Corporation. DECMessageQ: Introduction to Message Queuing, 1994Google Scholar
  9. 9.
    BEA Systems Inc. Reliable Queuing Using BEA Tuxedo: White Paper., 2000.Google Scholar
  10. 10.
    Microsoft Corporation. Microsoft Message Queuing Services, 1997.Google Scholar
  11. 11.
    D. Schmidt and S. Vinoski. Overcoming Drawbacks in the OMG Event Service. In SIGS C++ Report magazine, 1997.Google Scholar
  12. 12.
    E. Gamma, R. Helm and  R. Johnson and J. Vlissides. Design Patterns, Elements of Reusable Object-Oriented Software. Addison-Wesley, 1995.Google Scholar
  13. 13.
    M. Hauswirth and M. Jazayeri. A Component and Communication Model for Push Systems. In ESEC/FSE 99 — Joint 7th European Software Engineering Conference (ESEC) and, 1999.Google Scholar
  14. 14.
    K.P. Birman. The Process Group Approach to Reliable Distributed Computing. In Communications of the ACM, 36(12), pp. 36–53, 1993.Google Scholar
  15. 15.
    D. Gelernter. Generative Communication in Linda. In Transactions on Programming Languages and Systems (TOPLAS), ACM, 7(1), pp. 80–112, 1985.Google Scholar
  16. 16.
    OMG. CORBAservices: Common Object Services Specification. OMG, 1998Google Scholar
  17. 17.
    ObjectSpace. JGL-Generic Collection Library., 1999.Google Scholar
  18. 18.
    J.P. Briot and R. Guerraoui and K.P. Lohr. Concurrency, Distribution and Parallelism in Object-Oriented Programming. In ACM Computing Surveys, 30(2), pp. 291–329, 1998.Google Scholar
  19. 19.
    A. Yonezawa and E. Shibayama and T. Takada and Y. Honda. Modeling and Programming in an Object-Oriented Concurrent Language ABCL/1. In Object-Oriented Concurrent Programming, pp. 55–89, MIT Press, 1993.Google Scholar
  20. 20.
    D. Caromel. Towards a Method of Object-Oriented Concurrent Programming. In Communications of the ACM, 36, pp. 90–102, 1993.Google Scholar
  21. 21.
    M. Happner and R. Burridge and R. Sharma. Java Message Service. Sun Microsystems Inc., 1998.Google Scholar
  22. 22.
    OMG. Notification Service — Joint revised submission. OMG, 1998.Google Scholar
  23. 23.
    K. Arnold and B. O’Sullivan and R.W. Scheifler and J. Waldo and J. Wollrath. The Jini Specification. Addison-Wesley, 1999.Google Scholar
  24. 24.
    T. Harrison, and D. Levine and D.C. Schmidt. The Design and Performance of a Real-Time CORBA Event Service. In 12th ACM Conference on Object-Oriented Programming Systems, Languages and Applications (OOPSLA′97), pp. 184–200, 1997.CrossRefGoogle Scholar
  25. 25.
    E. Freeman and S. Hupfer and K. Arnold. JavaSpaces Principles, Patterns, and Practice. Addison-Wesley, 1999.Google Scholar
  26. 26.
    IBM. MQSeries: Using Java. IBM, 2000.Google Scholar
  27. 27.
    P. Th. Eugster and R. Guerraoui and J. Sventek. Type-Based Publish/Subscribe. Technical Report 2000-029, Communication Systems Department, Swiss Federal Institute of technology, 2000.Google Scholar
  28. 28.
    J. Waldo, G. Wyant and A. Wollrath and S. Kendall. A Note on Distributed Computing. Sun Microsystems Inc., 1994.Google Scholar
  29. 29.
    D. Lea. Design for open systems in Java. In 2nd International Conference on Coordination Models and Languages, 1997.Google Scholar
  30. 30.
    R. Guerraoui. What object-oriented distributed programming does not have to be and what it may be. In Informatik, 2, 1999.Google Scholar
  31. 31.
    Microsoft Co. DCOM Technical Overview (White Paper). Microsoft Co., 1999.Google Scholar
  32. 32.
    Sun Microsystems Inc. Java Remote Method Invocation — Distributed Computing for Java (White Paper). Sun Microsystems Inc., 1999.Google Scholar
  33. 33.
    OMG. The Common Object Request Broker: Architecture and Specification. OMG, 1999.Google Scholar
  34. 34.
    P. Koenig. Messages vs. Objects for Application Integration. In Distributed Computing, 2(3), pp. 44–45, 1999.Google Scholar
  35. 35.
    E. Jul and H. Levy and N. Hutchinson and A. Black. Fine-grained mobility in the Emerald System. In ACM Transactions on Computer Systems, 6(1), pp. 109–133, 1998.Google Scholar
  36. 36.
    J. Waldo and G. Wyant and A. Wollrath and S. Kendall. Events in an RPC Based Distributed System. Sun Microsystems Laboratories Inc., 1995.Google Scholar
  37. 37.
    D. Rosenblum and A. Wolf. A Design Framework for Internet-Scale Event Observation and Notification. In 6th European Software Engineering Conference/ACM SIGSOFT 5th Symposium on the Foundations of Software Engineering, 1997.Google Scholar
  38. 38.
    Sun Microsystems Inc. The Java Platform 1.2 API Specification. Sun Microsystems Inc., 1999.

Copyright information

© Springer Science+Business Media New York 2002

Authors and Affiliations

  • Patrick Th. Eugster
    • 1
    • 2
  • Rachid Guerraoui
    • 1
    • 2
  • Joe Sventek
    • 2
  1. 1.Department of Communication SystemsSwiss Federal Institute of TechnologyLausanneSwitzerland
  2. 2.Communication Solutions DepartmentAgilent Laboratories ScotlandEdinburghUK

Personalised recommendations