SuperGlue: Component Programming with Object-Oriented Signals

  • Sean McDirmid
  • Wilson C. Hsieh
Part of the Lecture Notes in Computer Science book series (LNCS, volume 4067)


The assembly of components that can handle continuously changing data results in programs that are more interactive. Unfortunately, the code that glues together such components is often difficult to write because it is exposed to many complicated event-handling details. This paper introduces the SuperGlue language where components are assembled by connecting their signals, which declaratively represent state as time-varying values. To support the construction of interactive programs that require an unbounded number of signal connections, signals in SuperGlue are scaled with object-oriented abstractions. With SuperGlue’s combination of signals and objects, programmers can build large interactive programs with substantially less glue code when compared to conventional approaches. For example, the SuperGlue implementation of an email client is around half the size of an equivalent Java implementation.


Object Type Component Program Interactive Program Java Code Signal Connection 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    Aldrich, J., Chambers, C., Notkin, D.: Architectural Reasoning in ArchJava. In: Magnusson, B. (ed.) ECOOP 2002. LNCS, vol. 2374, pp. 334–367. Springer, Heidelberg (2002)CrossRefGoogle Scholar
  2. 2.
    Aldrich, J., Sazawal, V., Chambers, C., Notkin, D.: Language support for connector abstractions. In: Cardelli, L. (ed.) ECOOP 2003. LNCS, vol. 2743, Springer, Heidelberg (2003)Google Scholar
  3. 3.
    Benveniste, A., Geurnic, P.L., Jacquemot, C.: Synchronous programming with events and relations: the Signal language and its semantics. Science of Computer Programming (1991)Google Scholar
  4. 4.
    Berry, G.: The Foundations of Esterel. MIT Press, Cambridge (1998)Google Scholar
  5. 5.
    Bracha, G., Cook, W.: Mixin-based inheritance. In: OOPSLAECOOP. SIGPLAN Notices, vol. 25 (10), pp. 303–311. ACM Press, New York (1990)Google Scholar
  6. 6.
    Caspi, P., Pilaud, D., Halbwachs, N., Plaice, J.A.: LUSTRE: a declarative language for programming synchronous systems. In: Proceedings of POPL (1987)Google Scholar
  7. 7.
    Clifton, C., Leavens, G.T., Chambers, C., Millstein, T.D.: Multijava: Modular open classes and symmetric multiple dispatch for Java. In: Proceedings of OOPSLA. SIGPLAN Notices, vol. 35(10), pp. 130–145. ACM Press, New York (2000)Google Scholar
  8. 8.
    Cooper, G.H., Krishnamurthi, S.: Embedding Dynamic Dataflow in a Call-by-Value Language. In: Sestoft, P. (ed.) ESOP 2006 and ETAPS 2006. LNCS, vol. 3924, pp. 294–308. Springer, Heidelberg (2006)CrossRefGoogle Scholar
  9. 9.
    Courtney, A.: Frappé: Functional Reactive Programming in Java. In: Ramakrishnan, I.V. (ed.) PADL 2001. LNCS, vol. 1990, pp. 29–44. Springer, Heidelberg (2001)CrossRefGoogle Scholar
  10. 10.
    Elliott, C., Hudak, P.: Functional reactive animation. In: Proceedings of ICFP. SIGPLAN Notices, vol. 32 (8), pp. 263–273. ACM Press, New York (1997)CrossRefGoogle Scholar
  11. 11.
    Freeman-Benson, B.N.: Kaleidoscope: Mixing objects, constraints and imperative programming. In: Proceedings of OOPSLA and ECOOP. SIGPLAN Notices, vol. 25 (10), pp. 77–88. ACM Press, New York (1990)Google Scholar
  12. 12.
    Freeman-Benson, B.N., Borning, A.: Integrating Constraints with an Object-Oriented Language. In: Lehrmann Madsen, O. (ed.) ECOOP 1992. LNCS, vol. 615, pp. 268–286. Springer, Heidelberg (1992)CrossRefGoogle Scholar
  13. 13.
    Goldberg, A., Robson, D.: SmallTalk-80: The Language and its Implementation. Addison-Wesley, Reading (1983)zbMATHGoogle Scholar
  14. 14.
    Hudak, P., Courtney, A., Nilsson, H., Peterson, J.: Arrows, robots, and functional reactive programming. In: Jeuring, J., Jones, S.L.P. (eds.) AFP 2002. LNCS, vol. 2638, pp. 159–187. Springer, Heidelberg (2003)CrossRefGoogle Scholar
  15. 15.
    IBM. The Eclipse Project,
  16. 16.
    Luckham, D., Vera, J.: An event-based architecture definition language. IEEE Transactions on Software Engineering 21 (1995)Google Scholar
  17. 17.
    Madsen, O.L., Moeller-Pedersen, B.: Virtual classes - a powerful mechanism for object-oriented programming. In: Proceedings of OOPSLA, October 1989, pp. 397–406 (1989)Google Scholar
  18. 18.
    Magee, J., Dulay, N., Eisenbach, S., Kramer, J.: Specifying distributed software architectures. In: Proceedings of ESEC (1995)Google Scholar
  19. 19.
    Matsumoto, Y.: Ruby: Programmers’ Best Friend,
  20. 20.
    Medvidovic, N., Oreizy, P., Taylor, R.N.: Reuse of off-the-shelf components in C2-style architectures. In: Proceeding of ICSE, pp. 692–700. IEEE Computer Society, Los Alamitos (1997)CrossRefGoogle Scholar
  21. 21.
    Odersky, M., et al.: The scala language specification. Technical report, EPFL, Lausanne, Switzerland (2004),
  22. 22.
    Sterling, L., Shapiro, E.: The Art of Prolog: Advanced Programming Techniques. MIT Press, Cambridge (1986)zbMATHGoogle Scholar
  23. 23.
    Sun Microsystems, Inc. The JavaMail API,
  24. 24.
    Sun Microsystems, Inc. The Swing API,
  25. 25.
    van Rossum, G., Drake, F.L.: The Python Language Reference Manual (Sepember 2003),

Copyright information

© Springer-Verlag Berlin Heidelberg 2006

Authors and Affiliations

  • Sean McDirmid
    • 1
  • Wilson C. Hsieh
    • 2
  1. 1.École Polytechnique Fédérale de Lausanne (EPFL)LausanneSwitzerland
  2. 2.University of UtahSalt Lake CityUSA

Personalised recommendations