Skip to main content

Using Metadata Transformations to Integrate Class Extensions in an Existing Class Hierarchy

  • Conference paper
Programming Languages and Systems (APLAS 2006)

Part of the book series: Lecture Notes in Computer Science ((LNPSE,volume 4279))

Included in the following conference series:

Abstract

Class extensions provide a fine-grained mechanism to define incremental modifications to class-based systems when standard subclassing mechanisms are inappropriate. To control the impact of class extensions, the concept of classboxes has emerged that defines a new module system to restrict the visibility of class extensions to selected clients. However, the existing implementations of the classbox concept rely either on a “classbox-aware” virtual machine, an expensive runtime introspection of the method call stack to build the structure of a classbox, or both. In this paper we present an implementation technique that allows for the structure of a classbox to be constructed at compile-time by means of metadata transformations to rewire the inheritance graph of refined classes. These metadata transformations are language-neutral and more importantly preserve both the semantics of the classbox concept and the integrity of the underlying deployment units. As a result, metadata transformation provides a feasible approach to incorporate the classbox concept into programming environments that use a virtual execution system.

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
Softcover Book
USD 54.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. Bergel, A., Ducasse, S., Nierstrasz, O.: Classbox/J: Controlling the Scope of Change in Java. In: Proceedings OOPSLA 2005. ACM SIGPLAN Notices, vol. 40, San Diego, USA, pp. 177–189 (October 2005)

    Google Scholar 

  2. Bergel, A., Ducasse, S., Nierstrasz, O., Wuyts, R.: Classboxes: Controlling Visibility of Class Extensions. Journal of Computer Languages, Systems & Structures 31(3-4), 107–126 (2005)

    Article  MATH  Google Scholar 

  3. Bracha, G., Lindstrom, G.: Modularity Meets Inheritance. In: Proceedings of the International Conference on Computer Languages, pp. 282–290. IEEE Computer Society Press, Los Alamitos (1992)

    Chapter  Google Scholar 

  4. Cabral, B., Marques, P., Silva, L.: RAIL: Code Instrumentation for. NET. In: Liebrock, L.M. (ed.) SAC 2005, pp. 1282–1287. ACM Press, New York (2005)

    Chapter  Google Scholar 

  5. Chiba, S.: Load-Time Structural Reflection in Java. In: Bertino, E. (ed.) ECOOP 2000. LNCS, vol. 1850, pp. 313–336. Springer, Heidelberg (2000)

    Chapter  Google Scholar 

  6. Clifton, C., Leavens, G.T., Chambers, C., Millstein, T.: MultiJava: Modular Open Classes and Symmetric Multiple Dispatch for Java. In: Proceedings OOPSLA 2000, ACM SIGPLAN Notices, vol. 35, pp. 130–146 (October 2000)

    Google Scholar 

  7. European Computer Machinery Association. Standard ECMA-334: C# Language Specification, 3rd edn. (June 2005)

    Google Scholar 

  8. Ferber, J.: Computational Reflection in Class based Object-Oriented Languages. In: Proceedings OOPSLA 1989, pp. 317–326. ACM Press, New York (1989)

    Chapter  Google Scholar 

  9. Findler, R.B., Flatt, M.: Modular Object-Oriented Programming with Units and Mixins. In: Proceedings of the ACM SIGPLAN International Conference on Functional Programming (ICFP 1998), vol. 34, pp. 94–104 (1998)

    Google Scholar 

  10. Goldberg, A., Robson, D.: Smalltalk-80: The Language. Addison-Wesley, Reading (1989)

    MATH  Google Scholar 

  11. Igarashi, A., Pierce, B.: Foundations for Virtual Types. In: Guerraoui, R. (ed.) ECOOP 1999. LNCS, vol. 1628, pp. 161–185. Springer, Heidelberg (1999)

    Chapter  Google Scholar 

  12. Keller, R., Hölzle, U.: Binary Component Adaptation. In: Jul, E. (ed.) ECOOP 1998. LNCS, vol. 1445, pp. 307–329. Springer, Heidelberg (1998)

    Chapter  Google Scholar 

  13. Kiczales, G., Hilsdale, E., Hugunin, J., Kersten, M., Palm, J., Griswold, W.G.: An Overview of AspectJ. In: Knudsen, J.L. (ed.) ECOOP 2001. LNCS, vol. 2072, pp. 327–355. Springer, Heidelberg (2001)

    Chapter  Google Scholar 

  14. Lafferty, D., Cahill, V.: Language-Independent Aspect-Oriented Programming. In: Proceedings OOPSLA 2003, pp. 1–12. ACM Press, New York (2003)

    Chapter  Google Scholar 

  15. Larus, J.R.L., Schnarr, E.: EEL: Machine-Independent Executable Editing. In: Proceedings of the ACM SIGPLAN 1995 Conference on Programming Language Design and Implementation (PLDI), La Jolla, California, pp. 291–300 (June 1995)

    Google Scholar 

  16. Lindholm, T., Yellin, F.: The Java Virtual Machine Specification. The Java Series. Addison-Wesley, Reading (1996)

    Google Scholar 

  17. Lumpe, M., Schneider, J.-G.: On the Integration of Classboxes into C#. In: Löwe, W., Südholt, M. (eds.) SC 2006. LNCS, vol. 4089, pp. 307–322. Springer, Heidelberg (2006)

    Chapter  Google Scholar 

  18. Malenfant, J., Dony, C., Cointe, P.: Behavioral Reflection in a Prototype-Based Language. In: Yonezawa, A., Smith, B. (eds.) Proceedings of International Workshop on Reflection and Meta-Level Architectures, Tokyo, Japan, pp. 143–153 (November 1992)

    Google Scholar 

  19. Microsoft Corporation. Metadata Unmanaged API (2002)

    Google Scholar 

  20. Miller, J.S., Ragsdale, S.: The Common Language Infrastructure Annotated Standard. Microsoft. NET Development Series. Addison-Wesley, Reading (2003)

    Google Scholar 

  21. Odersky, M., Altherr, P., Cremet, V., Emir, B., Maneth, S., Micheloud, S., Mihaylov, N., Scinz, M., Stenmanm, E., Zenger, M.: An Overview of the Scala Programming Language. Technical Report IC/2004/64, École Polytechnique Fédérale de Lausanne, School of Computer and Communication Sciences (2004)

    Google Scholar 

  22. Guy, L.: Common Lisp the Language, 2nd edn., Digital Press, Thinking Machines, Inc. (1990)

    Google Scholar 

  23. The Mono Project, http://www.mono-project.com/Main_Page

Download references

Author information

Authors and Affiliations

Authors

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2006 Springer-Verlag Berlin Heidelberg

About this paper

Cite this paper

Lumpe, M. (2006). Using Metadata Transformations to Integrate Class Extensions in an Existing Class Hierarchy. In: Kobayashi, N. (eds) Programming Languages and Systems. APLAS 2006. Lecture Notes in Computer Science, vol 4279. Springer, Berlin, Heidelberg. https://doi.org/10.1007/11924661_18

Download citation

  • DOI: https://doi.org/10.1007/11924661_18

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-540-48937-5

  • Online ISBN: 978-3-540-48938-2

  • eBook Packages: Computer ScienceComputer Science (R0)

Publish with us

Policies and ethics