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.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
References
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.
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.
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/.
Martin Büchi and Wolfgang Weck. Generic wrapping. Technical Report 317, Turku Centre for Computer Science, March 2000. http://www.abo.fi/~mbuechi/.
Craig Chambers. The Cecil language: Specification & rationale (version 2.1). Technical report, University ofWashington, March 1997.
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.
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.
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.
Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides. Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley, 1995.
James Gosling, Bill Joy, and Guy Steele. The Java Language Specification. Addison Wesley, 1996.
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.
John Hogg. Islands: Aliasing protection in object-oriented languages. In Proceedings of OOPSLA’ 91, pages 271–285. ACM Press, 1991.
Ralph Keller and Urs Hölzle. Binary component adaptation. In Proceedings of ECOOP’ 98, pages 307–329. LNCS 1445, Springer Verlag, 1998.
Gregor Kiczales et al. Aspect-oriented programming. In Proceedings of ECOOP’ 97, pages 220–242. LNCS 1241, Springer Verlag, 1997.
Günter Kniesel. Type-safe delegation for run-time component adaptation. In Proceedings of ECOOP’ 99. LNCS 1628, Springer Verlag, 1999.
Henry Lieberman. Using prototypical objects to implement shared behavior in object-oriented systems. In Proceedings of OOPSLA’ 86, pages 214–223. ACM Press, 1986.
Bertrand Meyer. Eiffel: The Language. Prentice Hall, second edition, 1992.
Mira Mezini. Dynamic object evolution without name collisions. In Proceedings of ECOOP’ 97, pages 190–219. LNCS 1241, Springer Verlag, 1997.
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.
NeXT Software, Inc. Object-Oriented Programming and the Objective-C Language. Addison-Wesley, 1993.
Object Management Group. CORBA components, 1999. Revision February 15, 1999, formal document orbos/99-02-01, http://www.omg.org.
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.
Lawrence C. Paulson. Isabelle: A Generic Theorem Prover. LNCS 828, Springer Verlag, 1994.
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.
Dale Rogerson. Inside COM. Microsoft Press, 1996.
A. Snyder. Encapsulation and inheritance in object-oriented programming languages. In Proceedings of OOPSLA’ 86, pages 38–45. ACM Press, 1986.
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.
Bjarne Stroustrup. The C++ Programming Language. Addison Wesley, third edition, 1997.
Sun Microsystems, Inc. Java Beans, 1997. http://java.sun.com/beans/.
Clemens A. Szyperski. Component Software-Beyond Object-Oriented Programming. Addison-Wesley, 1997.
D. Ungar and R.B. Smith. Self: The power of simplicity. In Proceedings of OOPSLA’ 87, pages 227–241. ACM Press, 1987.
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.
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights 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