Jumping to the Meta Level: Behavioral Reflection Can Be Fast and Flexible

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.

[1]  Cristina V. Lopes,et al.  Aspect-oriented programming , 1999, ECOOP Workshops.

[2]  Robert Wilson,et al.  Compiling Java just in time , 1997, IEEE Micro.

[3]  Franz J. Hauck,et al.  Transitiver Schutz in Java durch Sicherheitsmetaobjekte , 1998, Java-Informations-Tage.

[4]  Clemens A. Szyperski,et al.  Component software - beyond object-oriented programming , 2002 .

[5]  Thorsten von Eicken,et al.  JRes: a resource accounting interface for Java , 1998, OOPSLA '98.

[6]  Ralph Johnson,et al.  design patterns elements of reusable object oriented software , 2019 .

[7]  Akinori Yonezawa,et al.  Design and Partial Evaluation of Meta-Objects for a Concurrent Reflective Language , 1998, ECOOP.

[8]  Satoshi Matsuoka,et al.  OpenJIT—A Reflective Java JIT Compiler , 2000 .

[9]  Takashi Masuda,et al.  Designing an Extensible Distributed Language with a Meta-Level Architecture , 1993, ECOOP.

[10]  Frank Yellin,et al.  The Java Virtual Machine Specification , 1996 .

[11]  Luiz Eduardo Buzato,et al.  The Design and Implementation of Guaraná , 1999, COOTS.

[12]  Andrew A. Chien,et al.  An evaluation of automatic object inline allocation techniques , 1998, OOPSLA '98.

[13]  Rachid Guerraoui,et al.  Implementation of the GARF replicated objects platform , 1995, Distributed Syst. Eng..

[14]  Alfred V. Aho,et al.  Compilers: Principles, Techniques, and Tools , 1986, Addison-Wesley series in computer science / World student series edition.

[15]  Sami S. Brandt,et al.  The Design of a Meta-Level Architecture for the BETA Language , 1995 .

[16]  Cristina V. Lopes,et al.  Aspect-oriented programming , 1999, ECOOP Workshops.

[17]  Urs Hölzle,et al.  Integrating Independently-Developed Components in Object-Oriented Languages , 1993, ECOOP.

[18]  Chris Zimmermann Advances in Object-Oriented Metalevel Architectures and Reflection , 1996 .

[19]  Shigeru Chiba,et al.  Yet Another java.lang.Class , 1998, ECOOP Workshops.

[20]  José de Oliveira Guimarães,et al.  Reflection for Statically Typed Languages , 1998, ECOOP.