Abstract
Component-based programming is currently carried out using mainstream object-oriented languages. These languages have to be used in a highly disciplined way to guarantee flexible component composition and extensibility. This paper investigates abstractions for component-oriented programming on the programming language level. We propose a simple prototype-based model for first-class components on top of a class-based object-oriented language. The model is formalized as an extension of Featherweight Java. Our calculus includes a minimal set of primitives to dynamically build, extend, and compose software components, while supporting features like explicit context dependencies, late composition, unanticipated component extensibility, and strong encapsulation. We present a type system for our calculus that ensures type-safe component definition, composition, and evolution.
This is a preview of subscription content, log in via an 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
M. Abadi and L. Cardelli. A Theory of Objects. Monographs in Computer Science. Springer Verlag, 1996.
J. Aldrich, C. Chambers, and D. Notkin. Architectural reasoning in ArchJava. In Proceedings of the 16th European Conference on Object-Oriented Programming, Málaga, Spain, June 2002.
R. Allen. A Formal Approach to Software Architecture. PhD thesis, Carnegie Mellon University, Pittsburgh, PA, May 1997.
D. Ancona and E. Zucca. A theory of mixin modules: basic and derived operators. Mathematical Structures in Computer Science, 8(4):401–446, 1998.
D. Ancona and E. Zucca. A primitive calculus for module systems. In Principles and Practice of Declarative Programming, LNCS 1702. Springer-Verlag, 1999.
D. Ancona and E. Zucca. A calculus of module systems. Journal of Functional Programming, 2001.
D. Ancona and E. Zucca. True modules for Java-like languages. In Proceedings of European Conference on Object-Oriented Programming, LNCS 2072. Springer-Verlag, 2001.
L. Bettini, V. Bono, and B. Venneri. Coordinating mobile object-oriented code. In Proceedings of Coordination 2002, York, UK, April 2002.
V. Bono, A. Patel, and V. Shmatikov. A core calculus of classes and mixins. In Proceedings of the 13th European Conference on Object-Oriented Programming, pages 43–66, Lisbon, Portugal, 1999.
G. Bracha. The Programming Language Jigsaw: Mixins, Modularity and Multiple Inheritance. PhD thesis, University of Utah, 1992.
G. Bracha and W. Cook. Mixin-based inheritance. In N. Meyrowitz, editor, Proceedings of the Conference on Object-Oriented Programming: Systems, Languages, and Applications, pages 303–311, Ottawa, Canada, 1990. ACM Press.
G. Bracha and D. Griswold. Extending Smalltalk with mixins. In OOPSLA’ 96 Workshop on Extending the Smalltalk Language, April 1996.
G. Bracha and G. Lindstrom. Modularity meets inheritance. In Proceedings of the IEEE Computer Society International Conference on Computer Languages, pages 282–290, Washington, DC, 1992. IEEE Computer Society.
M. Büchi and W. Weck. Compound types for Java. In Proceedings of OOPSLA 1998, pages 362–373, October 1998.
M. Büchi and W. Weck. Generic wrappers. In Proceedings of the 14th European Conference on Object-Oriented Programming, pages 201–225, June 2000.
L. Cardelli. Program fragments, linking, and modularization. In Proceedings of the 24th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, pages 266–277, Paris, France, January 1997.
L. Cardelli and P. Wegner. On understanding types, data abstraction, and polymorphism. Computing Surveys, 17(4):471–522, December 1985.
C. Chambers and C. Team. The Cecil language, specification and rationale, December 1998.
M. Flatt. Programming Languages for Reusable Software Components. PhD thesis, Rice University, Department of Computer Science, June 1999.
M. Flatt and M. Felleisen. Units: Cool modules for HOT languages. In Proceedings of the ACM Conference on Programming Language Design and Implementation, pages 236–248, 1998.
M. Flatt, S. Krishnamurthi, and M. Felleisen. Classes and mixins. In Proceedings of the 25th ACM Symposium on Principles of Programming Languages, pages 171–183, San Diego, California, 1998.
E. Gamma, R. Helm, R. Johnson, and J. Vlissides. Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley, 1994.
D. Garlan, R. Allen, and J. Ockerbloom. Exploiting style in architectural design environments. In Proceedings of SIGSOFT’ 94: Foundations of Software Engineering, pages 175–188, New Orleans, Louisiana, USA, December 1994.
D. Garlan, R. Monroe, and D. Wile. ACME: An architecture description interchange language. In Proceedings of CASCON’ 97, November 1997.
N. Glew and G. Morrisett. Type-safe linking and modular assembly language. In Conference Record of the 26th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, pages 250–261, San Antonio, Texas, 1999.
J. Gosling, B. Joy, G. Steele, and G. Bracha. The Java Language Specification. Java Series, Sun Microsystems, second edition, 2000. ISBN 0-201-31008-2.
O. M. Group. The Common Object Request Broker: Architecture and specification, revision 2.0, February 1997.
A. Hejlsberg and S. Wiltamuth. C# language specification. Microsoft Corporation, 2000.
T. Hirschowitz and X. Leroy. Mixin modules in a call-by-value setting. In Proceedings of the European Symposium on Programming, Grenoble, France, April 2002.
U. Hölzle. Integrating independently-developed components in object-oriented languages. In Proceedings of the European Conference on Object-Oriented Programming, pages 36–56, 1993.
R. Ibrahim. COMEL: A formal model for COM. Technical report, Queensland University of Technology, Brisbane, Australia, 1998.
A. Igarashi, B. Pierce, and P. Wadler. Featherweight Java: A minimal core calculus for Java and GJ. In Proceedings of the Conference on Object-Oriented Programming, Systems, Languages & Applications, volume 34(10), pages 132–146, 1999.
JavaSoft. JavaBeans™. http://java.sun.com/beans, December 1996.
G. Kniesel. Type-safe delegation for run-time component adaptation. In Proceedings of the 13th European Conference on Object-Oriented Programming, pages 351–366, Lisbon, Portugal, 1999.
D. Luckham, L. Augustin, J. Kenney, J. Vera, D. Bryan, and W. Mann. Specification and analysis of system architecture using Rapide. In IEEE Transactions on Software Engineering, April 1995.
D. MacQueen. Modules for Standard ML. In Conference Record of the 1984 ACM Symposium on Lisp and Functional Programming, pages 198–207, New York, August 1984.
J. Magee, N. Dulay, S. Eisenbach, and J. Kramer. Specifying distributed software architectures. In Proceedings of the 5th European Software Engineering Conference, Barcelona, Spain, September 1995.
S. McDirmid, M. Flatt, and W. Hsieh. Jiazzi: New-age components for old-fashioned Java. In Proceedings of the 2001 ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages & Applications, October 2001.
S. McDirmid, M. Flatt, and W. C. Hsieh. Mixing COP and OOP. In OOPSLA Workshop on Language Mechanisms for Programming Software Components, pages 29–32. Technical Report NU-CCS-01-06, Northeastern University, Boston, MA, October 2001.
N. Medvidovic and R. N. Taylor. A classification and comparison framework for software architecture description languages. In IEEE Transactions on Software Engineering, volume 26, pages 70–93, January 2000.
M. Moriconi, X. Quian, and A. Riemenschneider. Correct architecture refinement. In IEEE Transactions on Software Engineering, volume 21, April 1995.
M. Odersky. Report on the programming language Scala. École Polytechnique Fédérale de Lausanne, Switzerland, 2002. http://lamp.epfl.ch/~odersky/scala.
M. Odersky. Objects + views = components? In Proceedings of Abstract State Machines 2000, March 2000.
D. E. Perry and A. L. Wolf. Foundations for the study of software architecture. In ACM SIGSOFT Software Engineering Notes, volume 17, pages 40–52, October 1992.
B. C. Pierce. Types and Programming Languages. MIT Press, February 2002. ISBN 0-262-16209-1.
D. Rogerson. Inside COM: Microsoft’s Component Object Model. Microsoft Press, 1997.
C. Russo. Types for Modules. PhD thesis, University of Edinburgh, 1998.
C. Russo. First-class structures for Standard ML. In Proceedings of the 9th European Symposium on Programming, pages 336–350, Berlin, Germany, 2000.
J. C. Seco and L. Caires. A basic model of typed components. In Proceedings of the 14th European Conference on Object-Oriented Programming, pages 108–128, 2000.
M. Shaw and D. Garlan. Software Architecture: Perspectives on an Emerging Discipline. Prentice Hall, 1996.
V. C. Sreedhar. ACOEL on CORAL: A component requirement and abstraction language. In OOPSLA Workshop on Specification and Verification of Component-Based Systems, October 2001.
V. C. Sreedhar. Programming software components using ACOEL. Unpublished manuscript, IBM T.J. Watson Research Center, 2002.
C. Szyperski. Independently extensible systems-software engineering potential and challenges. In Proceedings of the 19th Australian Computer Science Conference, Melbourne, Australia, 1996.
C. Szyperski. Component Software: Beyond Object-Oriented Programming. Addi-son Wesley / ACM Press, New York, 1998. ISBN 0-201-17888-5.
D. Ungar and R. B. Smith. Self: The power of simplicity. Lisp and Symbolic Computation, March 1991.
A. K. Wright and M. Felleisen. A syntactic approach to type soundness. Information and Computation, 115, 1994.
M. Zenger. Type-safe prototype-based component evolution. Technical report, École Polytechnique Fédérale de Lausanne, Switzerland, April 2002.
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2002 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Zenger, M. (2002). Type-Safe Prototype-Based Component Evolution. In: Magnusson, B. (eds) ECOOP 2002 — Object-Oriented Programming. ECOOP 2002. Lecture Notes in Computer Science, vol 2374. Springer, Berlin, Heidelberg. https://doi.org/10.1007/3-540-47993-7_20
Download citation
DOI: https://doi.org/10.1007/3-540-47993-7_20
Published:
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-43759-8
Online ISBN: 978-3-540-47993-2
eBook Packages: Springer Book Archive