Abstract
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.
Keywords
- 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.
This is a preview of subscription content, access via your institution.
Buying options
Tax calculation will be finalised at checkout
Purchases are for personal use only
Learn about institutional subscriptionsPreview
Unable to display preview. Download preview PDF.
References
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)
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)
Benveniste, A., Geurnic, P.L., Jacquemot, C.: Synchronous programming with events and relations: the Signal language and its semantics. Science of Computer Programming (1991)
Berry, G.: The Foundations of Esterel. MIT Press, Cambridge (1998)
Bracha, G., Cook, W.: Mixin-based inheritance. In: OOPSLAECOOP. SIGPLAN Notices, vol. 25 (10), pp. 303–311. ACM Press, New York (1990)
Caspi, P., Pilaud, D., Halbwachs, N., Plaice, J.A.: LUSTRE: a declarative language for programming synchronous systems. In: Proceedings of POPL (1987)
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)
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)
Courtney, A.: Frappé: Functional Reactive Programming in Java. In: Ramakrishnan, I.V. (ed.) PADL 2001. LNCS, vol. 1990, pp. 29–44. Springer, Heidelberg (2001)
Elliott, C., Hudak, P.: Functional reactive animation. In: Proceedings of ICFP. SIGPLAN Notices, vol. 32 (8), pp. 263–273. ACM Press, New York (1997)
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)
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)
Goldberg, A., Robson, D.: SmallTalk-80: The Language and its Implementation. Addison-Wesley, Reading (1983)
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)
IBM. The Eclipse Project, http://www.eclipse.org/
Luckham, D., Vera, J.: An event-based architecture definition language. IEEE Transactions on Software Engineering 21 (1995)
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)
Magee, J., Dulay, N., Eisenbach, S., Kramer, J.: Specifying distributed software architectures. In: Proceedings of ESEC (1995)
Matsumoto, Y.: Ruby: Programmers’ Best Friend, http://www.ruby-lang.org/en/
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)
Odersky, M., et al.: The scala language specification. Technical report, EPFL, Lausanne, Switzerland (2004), http://scala.epfl.ch
Sterling, L., Shapiro, E.: The Art of Prolog: Advanced Programming Techniques. MIT Press, Cambridge (1986)
Sun Microsystems, Inc. The JavaMail API, http://java.sun.com/products/javamail/
Sun Microsystems, Inc. The Swing API, http://java.sun.com/products/jfc/
van Rossum, G., Drake, F.L.: The Python Language Reference Manual (Sepember 2003), http://www.python.org/doc/current/ref/ref.html
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2006 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
McDirmid, S., Hsieh, W.C. (2006). SuperGlue: Component Programming with Object-Oriented Signals. In: Thomas, D. (eds) ECOOP 2006 – Object-Oriented Programming. ECOOP 2006. Lecture Notes in Computer Science, vol 4067. Springer, Berlin, Heidelberg. https://doi.org/10.1007/11785477_15
Download citation
DOI: https://doi.org/10.1007/11785477_15
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-35726-1
Online ISBN: 978-3-540-35727-8
eBook Packages: Computer ScienceComputer Science (R0)
