Skip to main content

Generic Wrappers

  • Conference paper
  • First Online:
Book cover ECOOP 2000 — Object-Oriented Programming (ECOOP 2000)

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

Included in the following conference series:

Abstract

Component software means reuse and separate marketing of pre-manufactured binary components. This requires components from different vendors to be composed very late, possibly by end users at run time as in compound-document frameworks.

To this aim, we propose generic wrappers, a new language construct for strongly-typed class-based languages.With generic wrappers, objects can be aggregated at run time. The aggregate belongs to a subtype of the actual type of the wrapped object. A lower bound for the type of the wrapped object is fixed at compile time. Generic wrappers are type safe and support modular reasoning.

This feature combination is required for true component software but not achieved by known wrapping and combination techniques, such as the wrapper pattern or mix-ins.

We analyze the design space for generic wrappers, e.g. overriding, forwarding vs. delegation, and snappy binding of the wrapped object. As a proof of concept, we add generic wrappers to Java and report on a mechanized type soundness proof of the latter.

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 39.99
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever

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. Pierre America. Designing an object-oriented programming language with behavioral subtyping. In Foundations of Object-Oriented Languages, REX School/Workshop, pages 60–90. LNCS 489, Springer Verlag, 1991.

    Chapter  Google Scholar 

  2. Viviana Bono, Amit Patel, and Vitaly Shmatikov. A core calculus of classes and mixins. In Proceedings of ECOOP’ 99, pages 43–66. LNCS 1628, Springer Verlag, 1999.

    Google Scholar 

  3. Martin Büchi and Wolfgang Weck. Compound types for Java. In Proceedings of OOPSLA’ 98, pages 362–373. ACM Press, 1998. http://www.abo.fi/~mbuechi/.

  4. Martin Büchi and Wolfgang Weck. Generic wrapping. Technical Report 317, Turku Centre for Computer Science, March 2000. http://www.abo.fi/~mbuechi/.

  5. Craig Chambers. The Cecil language: Specification & rationale (version 2.1). Technical report, University ofWashington, March 1997.

    Google Scholar 

  6. Erik Ernst. Gbeta-a Language with Virtual Attributes, Block Structure, and Propagating, Dynamic Inheritance. PhD thesis, Department of Computer Science, University of Aarhus, Denmark, 1999.

    Google Scholar 

  7. Kathleen Fisher and John C. Mitchell. Notes on typed object-oriented programming. In Proceeding of Theoretical Aspects of Computer Software, pages 844–885. LNCS 789, Springer Verlag, 1994.

    Google Scholar 

  8. Matthew Flatt, Shriram Krishnamurthi, and Matthias Felleisen. Classes and mixins. In Proc. 25th ACM Symp. Principles of Programming Languages, pages 171–183. ACM Press, 1998.

    Google Scholar 

  9. Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides. Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley, 1995.

    Google Scholar 

  10. James Gosling, Bill Joy, and Guy Steele. The Java Language Specification. Addison Wesley, 1996.

    Google Scholar 

  11. William Harrison, Harold Ossher, and Peri Tarr. Using delegation for software and subject composition. Technical Report RC-20946 (92722), IBM Research Division, T.J. Watson Research Center, August 1997.

    Google Scholar 

  12. John Hogg. Islands: Aliasing protection in object-oriented languages. In Proceedings of OOPSLA’ 91, pages 271–285. ACM Press, 1991.

    Google Scholar 

  13. Ralph Keller and Urs Hölzle. Binary component adaptation. In Proceedings of ECOOP’ 98, pages 307–329. LNCS 1445, Springer Verlag, 1998.

    Google Scholar 

  14. Gregor Kiczales et al. Aspect-oriented programming. In Proceedings of ECOOP’ 97, pages 220–242. LNCS 1241, Springer Verlag, 1997.

    Google Scholar 

  15. Günter Kniesel. Type-safe delegation for run-time component adaptation. In Proceedings of ECOOP’ 99. LNCS 1628, Springer Verlag, 1999.

    Google Scholar 

  16. Henry Lieberman. Using prototypical objects to implement shared behavior in object-oriented systems. In Proceedings of OOPSLA’ 86, pages 214–223. ACM Press, 1986.

    Google Scholar 

  17. Bertrand Meyer. Eiffel: The Language. Prentice Hall, second edition, 1992.

    Google Scholar 

  18. Mira Mezini. Dynamic object evolution without name collisions. In Proceedings of ECOOP’ 97, pages 190–219. LNCS 1241, Springer Verlag, 1997.

    Google Scholar 

  19. Leonid Mikhajlov and Emil Sekerinski. A study of the fragile base class problem. In Proceedings of ECOOP’ 98, pages 355–374. LNCS 1445, Springer Verlag, 1998.

    Google Scholar 

  20. NeXT Software, Inc. Object-Oriented Programming and the Objective-C Language. Addison-Wesley, 1993.

    Google Scholar 

  21. Object Management Group. CORBA components, 1999. Revision February 15, 1999, formal document orbos/99-02-01, http://www.omg.org.

  22. Geoff Outhred and John Potter. Extending COM’s aggregation model. In Component-Oriented Software Engineering Workshop (in conjunction with the Australian Software Engineering Conference), 1998.

    Google Scholar 

  23. Lawrence C. Paulson. Isabelle: A Generic Theorem Prover. LNCS 828, Springer Verlag, 1994.

    MATH  Google Scholar 

  24. Didier Rémy. Typechecking records and variants in a natural extension of ML. In Proc. 16th ACM Symp. Principles of Programming Languages, pages 242–249. ACM Press, 1989.

    Google Scholar 

  25. Dale Rogerson. Inside COM. Microsoft Press, 1996.

    Google Scholar 

  26. A. Snyder. Encapsulation and inheritance in object-oriented programming languages. In Proceedings of OOPSLA’ 86, pages 38–45. ACM Press, 1986.

    Google Scholar 

  27. Patrick Steyaert and Wolfgang De Meuter. A marriage of class-and object-based inheritance without unwanted children. In Proceedings of ECOOP’ 95, pages 127–144. LNCS 952, Springer Verlag, 1995.

    Google Scholar 

  28. Bjarne Stroustrup. The C++ Programming Language. Addison Wesley, third edition, 1997.

    Google Scholar 

  29. Sun Microsystems, Inc. Java Beans, 1997. http://java.sun.com/beans/.

  30. Clemens A. Szyperski. Component Software-Beyond Object-Oriented Programming. Addison-Wesley, 1997.

    Google Scholar 

  31. D. Ungar and R.B. Smith. Self: The power of simplicity. In Proceedings of OOPSLA’ 87, pages 227–241. ACM Press, 1987.

    Google Scholar 

  32. David von Oheimb and Tobias Nipkow. Machine-checking the Java specification: Proving type-safety. In Jim Alves-Foss, editor, Formal Syntax and Semantics of Java, pages 119–156. LNCS 1523, Springer Verlag, 1999.

    Chapter  Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2000 Springer-Verlag Berlin Heidelberg

About this paper

Cite this paper

Büchi, M., Weck, W. (2000). Generic Wrappers. In: Bertino, E. (eds) ECOOP 2000 — Object-Oriented Programming. ECOOP 2000. Lecture Notes in Computer Science, vol 1850. Springer, Berlin, Heidelberg. https://doi.org/10.1007/3-540-45102-1_10

Download citation

  • DOI: https://doi.org/10.1007/3-540-45102-1_10

  • Published:

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-540-67660-7

  • Online ISBN: 978-3-540-45102-0

  • eBook Packages: Springer Book Archive

Publish with us

Policies and ethics