Skip to main content

Type-Safe Prototype-Based Component Evolution

  • Conference paper
  • First Online:
ECOOP 2002 — Object-Oriented Programming (ECOOP 2002)

Part of the book series: Lecture Notes in Computer Science ((LNCS,volume 2374))

Included in the following conference series:

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 to check access.

Access this chapter

Chapter
USD 29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD 84.99
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD 109.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. M. Abadi and L. Cardelli. A Theory of Objects. Monographs in Computer Science. Springer Verlag, 1996.

    Google Scholar 

  2. 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.

    Google Scholar 

  3. R. Allen. A Formal Approach to Software Architecture. PhD thesis, Carnegie Mellon University, Pittsburgh, PA, May 1997.

    Google Scholar 

  4. D. Ancona and E. Zucca. A theory of mixin modules: basic and derived operators. Mathematical Structures in Computer Science, 8(4):401–446, 1998.

    Article  MathSciNet  MATH  Google Scholar 

  5. D. Ancona and E. Zucca. A primitive calculus for module systems. In Principles and Practice of Declarative Programming, LNCS 1702. Springer-Verlag, 1999.

    Chapter  Google Scholar 

  6. D. Ancona and E. Zucca. A calculus of module systems. Journal of Functional Programming, 2001.

    Google Scholar 

  7. 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.

    Google Scholar 

  8. L. Bettini, V. Bono, and B. Venneri. Coordinating mobile object-oriented code. In Proceedings of Coordination 2002, York, UK, April 2002.

    Google Scholar 

  9. 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.

    Google Scholar 

  10. G. Bracha. The Programming Language Jigsaw: Mixins, Modularity and Multiple Inheritance. PhD thesis, University of Utah, 1992.

    Google Scholar 

  11. 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.

    Google Scholar 

  12. G. Bracha and D. Griswold. Extending Smalltalk with mixins. In OOPSLA’ 96 Workshop on Extending the Smalltalk Language, April 1996.

    Google Scholar 

  13. 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.

    Google Scholar 

  14. M. Büchi and W. Weck. Compound types for Java. In Proceedings of OOPSLA 1998, pages 362–373, October 1998.

    Google Scholar 

  15. M. Büchi and W. Weck. Generic wrappers. In Proceedings of the 14th European Conference on Object-Oriented Programming, pages 201–225, June 2000.

    Google Scholar 

  16. 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.

    Google Scholar 

  17. L. Cardelli and P. Wegner. On understanding types, data abstraction, and polymorphism. Computing Surveys, 17(4):471–522, December 1985.

    Google Scholar 

  18. C. Chambers and C. Team. The Cecil language, specification and rationale, December 1998.

    Google Scholar 

  19. M. Flatt. Programming Languages for Reusable Software Components. PhD thesis, Rice University, Department of Computer Science, June 1999.

    Google Scholar 

  20. 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.

    Google Scholar 

  21. 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.

    Google Scholar 

  22. E. Gamma, R. Helm, R. Johnson, and J. Vlissides. Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley, 1994.

    Google Scholar 

  23. 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.

    Google Scholar 

  24. D. Garlan, R. Monroe, and D. Wile. ACME: An architecture description interchange language. In Proceedings of CASCON’ 97, November 1997.

    Google Scholar 

  25. 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.

    Google Scholar 

  26. 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.

    Google Scholar 

  27. O. M. Group. The Common Object Request Broker: Architecture and specification, revision 2.0, February 1997.

    Google Scholar 

  28. A. Hejlsberg and S. Wiltamuth. C# language specification. Microsoft Corporation, 2000.

    Google Scholar 

  29. 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.

    Google Scholar 

  30. 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.

    Google Scholar 

  31. R. Ibrahim. COMEL: A formal model for COM. Technical report, Queensland University of Technology, Brisbane, Australia, 1998.

    Google Scholar 

  32. 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.

    Google Scholar 

  33. JavaSoft. JavaBeans™. http://java.sun.com/beans, December 1996.

  34. 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.

    Google Scholar 

  35. 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.

    Google Scholar 

  36. 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.

    Google Scholar 

  37. 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.

    Google Scholar 

  38. 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.

    Google Scholar 

  39. 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.

    Google Scholar 

  40. 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.

    Google Scholar 

  41. M. Moriconi, X. Quian, and A. Riemenschneider. Correct architecture refinement. In IEEE Transactions on Software Engineering, volume 21, April 1995.

    Google Scholar 

  42. M. Odersky. Report on the programming language Scala. École Polytechnique Fédérale de Lausanne, Switzerland, 2002. http://lamp.epfl.ch/~odersky/scala.

    Google Scholar 

  43. M. Odersky. Objects + views = components? In Proceedings of Abstract State Machines 2000, March 2000.

    Google Scholar 

  44. 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.

    Google Scholar 

  45. B. C. Pierce. Types and Programming Languages. MIT Press, February 2002. ISBN 0-262-16209-1.

    Google Scholar 

  46. D. Rogerson. Inside COM: Microsoft’s Component Object Model. Microsoft Press, 1997.

    Google Scholar 

  47. C. Russo. Types for Modules. PhD thesis, University of Edinburgh, 1998.

    Google Scholar 

  48. C. Russo. First-class structures for Standard ML. In Proceedings of the 9th European Symposium on Programming, pages 336–350, Berlin, Germany, 2000.

    Google Scholar 

  49. 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.

    Google Scholar 

  50. M. Shaw and D. Garlan. Software Architecture: Perspectives on an Emerging Discipline. Prentice Hall, 1996.

    Google Scholar 

  51. 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.

    Google Scholar 

  52. V. C. Sreedhar. Programming software components using ACOEL. Unpublished manuscript, IBM T.J. Watson Research Center, 2002.

    Google Scholar 

  53. C. Szyperski. Independently extensible systems-software engineering potential and challenges. In Proceedings of the 19th Australian Computer Science Conference, Melbourne, Australia, 1996.

    Google Scholar 

  54. C. Szyperski. Component Software: Beyond Object-Oriented Programming. Addi-son Wesley / ACM Press, New York, 1998. ISBN 0-201-17888-5.

    Google Scholar 

  55. D. Ungar and R. B. Smith. Self: The power of simplicity. Lisp and Symbolic Computation, March 1991.

    Google Scholar 

  56. A. K. Wright and M. Felleisen. A syntactic approach to type soundness. Information and Computation, 115, 1994.

    Google Scholar 

  57. M. Zenger. Type-safe prototype-based component evolution. Technical report, École Polytechnique Fédérale de Lausanne, Switzerland, April 2002.

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Editors and Affiliations

Rights and permissions

Reprints 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

Publish with us

Policies and ethics