Advertisement

Jumping to the Meta Level

Behavioral Reflection can be fast and flexible
  • Michael Golm
  • Jürgen Kleinöder
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 1616)

Abstract

Fully reflective systems have the notion of a control transfer from base-level code to meta-level code in order to change the behavior of the base-level system. There exist various opinions on how the programming model of a meta architecture has to look like. A common necessity of all models and systems is the need to intercept messages and operations, such as the creation of objects. We analyze the trade-offs of various message interception mechanisms for Java. We show their impact on the meta-level programming model and performance. We demonstrate that it is beneficial to integrate the interception mechanism with the virtual machine and the just-in-time compiler.

Keywords

Virtual Machine Meta Level Method Call Method Invocation Virtual Method 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

9 References

  1. 1.
    V. A. Aho, R. Sethi, D. J. Ullman: Compilers: Principles, Techniques, and Tools, Addison-Wesley 1985Google Scholar
  2. 2.
    M. Bickel: Realisierung eines Prototyps für die Koordinierungs-Metaarchitektur SMArT in Java., March 1999Google Scholar
  3. 3.
    S. Brandt, R. W. Schmidt: The Design of a Metalevel Architecture for the BETA Language. In Advances in Object-Oriented Metalevel Architectures and Reflection, CRC Press, Boca Raton, Florida 1996, pp. 153–179Google Scholar
  4. 4.
    S. Chiba, T. Masuda: Designing an Extensible Distributed Language with a Meta-Level Architecture. In Proceedings of the European Conference on Object-Oriented Programming’ 93 Lecture Notes in Computer Science 707, Springer-Verlag 1993, pp. 482–501Google Scholar
  5. 5.
    S. Chiba, M. Tatsubori: Yet Another java.lang.Class. In ECOOP’ 98 Workshop on Reflective Object-Oriented Programming and Systems 1998Google Scholar
  6. 6.
    T. Cramer: Compiling Java Just-in-time. In IEEE Micro, May 1997Google Scholar
  7. 7.
    R. Crelier: Interview about the Borland JBuilder JIT Compiler.Google Scholar
  8. 8.
    G. Czajkowski, T. von Eicken: JRes: A Resource Accounting Interface for Java. In Proceedings of the Conference on Object-Oriented Programming Systems, Languages, and Applications’ 98, ACM Press 1998, pp. 21–35Google Scholar
  9. 9.
    J. Dolby, A. A. Chien: An Evaluation of Object Inline Allocation Techniques. In Proceedings of the Conference on Object-Oriented Programming Systems, Languages, and Applications’ 98, ACM Press 1998, pp. 1–20Google Scholar
  10. 10.
    E. Gamma, R. Helm, Johnson R., J. Vlissides: Design Patterns: Elements of Reusable Object-Oriented Software, Addison-Wesley, Reading, MA 1994Google Scholar
  11. 11.
    B. Garbinato, R. Guerraoui, K. Mazouni: Implementation of the GARF Replicated Objects Platform. In Distributed Systems Engineering Journal, March 1995Google Scholar
  12. 12.
    J. d. O. Guimaraes: Reflection for Statically Typed Languages. In Proceedings of the European Conference on Object-Oriented Programming’ 98 1998, pp. 440–461Google Scholar
  13. 13.
    U. Hölzle: Integrating Independently-Developed Components in Object-Oriented Languages. In Proceedings of the European Conference on Object-Oriented Programming’ 93 Lecture Notes in Computer Science 512, July 1993Google Scholar
  14. 14.
    G. Kiczales, J. Lamping, C. Mendhekar, C. Maeda, C. Lopes, J.-M. Loingtier, J. Irwin: Aspect-Oriented Programming. In Proceedings of the European Conference on Object-Oriented Programming’ 97 Lecture Notes in Computer Science 1357, Springer-Verlag, Berlin, Heidelberg, New York, Tokyo 1997Google Scholar
  15. 15.
    H. Kopp: Design und Implementierung eines maschinenunabhängigen Just-in-time-Compilers für Java. Diplomarbeit (Masters Thesis), Sep. 1998Google Scholar
  16. 16.
    T. Lindholm, F. Yellin: The Java Virtual Machine Specification., Addison Wesley 1996Google Scholar
  17. 17.
    H. Masuhara, A. Yonezawa: Design and Partial Evaluation of Meta-objects for a Concurrent Reflective Language. In Proceedings of the European Conference on Object-Oriented Programming’ 98 1998, pp. 418–439Google Scholar
  18. 18.
    S. Matsuoka: OpenJIT-A Reflective Java JIT Compiler. In OOPSLA’ 98 Workshop on Reflective Programming in C++ and Java UTCCP Report, Center for Computational Physics, University of Tsukuba, Tsukuba, Oct. 1998Google Scholar
  19. 19.
    J. McAffer: Engineering the meta-level. In Proceedings of the Reflection’ 96 1996Google Scholar
  20. 20.
    Microsoft: Microsoft Web Page. http://www.microsoft.com/java/sdk/20/vm/.Jit_Compiler.htm 1998Google Scholar
  21. 21.
    A. Oliva, L. E. Buzato: The Design and Implementation of Guaraná. In COOTS’ 99 1999Google Scholar
  22. 22.
    T. Riechmann, F. J. Hauck, J. Kleinöder: Transitiver Schutz in Java durch Sicherheitsmetaobjekte. In JIT-Java Informations-Tage 1998, Nov. 1998Google Scholar
  23. 23.
    SunTest: JavaCC-A Java Parser Generator 1997Google Scholar
  24. 24.
    Z. Szyperski: Component Software-Beyound Object-Oriented Programming, ACM Press 1998Google Scholar
  25. 25.
    I. Welch, R. Stroud: Dalang-A Reflective Java Extension. In OOPSLA’ 98 Workshop on Reflective Programming in C++ and Java UTCCP Report, Center for Computational Physics, University of Tsukuba, Tsukuba, Oct. 1998Google Scholar
  26. 26.
    F. Yellin, T. Lindholm: Java Internals. In JavaOne’ 97 1997Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 1999

Authors and Affiliations

  • Michael Golm
    • 1
  • Jürgen Kleinöder
    • 1
  1. 1.Dept. of Computer Science 4 (Operating Systems)University of Erlangen-NürnbergErlangenGermany

Personalised recommendations