Mirages: behavioral intercession in a mirror-based architecture

Mirror-based systems are object-oriented reflective architectures built around a set of design principles that lead to reflective APIs which foster a high degree of reusability, loose coupling with base-level objects and whose structure and design corresponds to the system being mirrored. However, support for behavioral intercession has been limited in contemporary mirror-based architectures, in spite of its many interesting applications. This is due to the fact that mirror-based architectures only support explicit reflection, while behavioral intercession requires implicit reflection. This work reconciles mirrors with behavioral intercession. We discuss the design of a mirror-based architecture with implicit mirrors that can be absorbed in the interpreter, and mirages, base objects whose semantics are defined by implicit mirrors. We describe and illustrate the integration of this reflective architecture for the distributed object-oriented programming language AmbientTalk.

[1]  Michael Haupt,et al.  Virtual machine support for dynamic join points , 2004, AOSD '04.

[2]  Éric Tanter,et al.  Altering Java Semantics via Bytecode Manipulation , 2002, GPCE.

[3]  Ralph E. Johnson,et al.  Wrappers to the Rescue , 1998, ECOOP.

[4]  Stéphane Ducasse,et al.  Runtime bytecode transformation for Smalltalk , 2006, Comput. Lang. Syst. Struct..

[5]  Marcus Denker,et al.  Unanticipated partial behavioral reflection: Adapting applications at runtime , 2008, Comput. Lang. Syst. Struct..

[6]  Denis Caromel,et al.  Partial behavioral reflection: spatial and temporal selection of reification , 2003, OOPSLA '03.

[7]  Gilad Bracha,et al.  Mirrors: design principles for meta-level facilities of object-oriented programming languages , 2004, OOPSLA.

[8]  Andreas Paepcke,et al.  User-level language crafting: introducing the CLOS metaobject protocol , 1993 .

[9]  Akinori Yonezawa,et al.  Object-oriented concurrent programming ABCL/1 , 1986, OOPLSA '86.

[10]  Pattie Maes,et al.  Concepts and experiments in computational reflection , 1987, OOPSLA '87.

[11]  Akinori Yonezawa,et al.  Object-oriented concurrent programming ABCL/1 , 1986, OOPLSA '86.

[12]  Muga Nishizawa,et al.  An Easy-to-Use Toolkit for Efficient Java Bytecode Translators , 2003, GPCE.

[13]  Liuba Shrira,et al.  Promises: linguistic support for efficient asynchronous procedure calls in distributed systems , 1988, PLDI '88.

[14]  Daniel G. Bobrow,et al.  Book review: The Art of the MetaObject Protocol By Gregor Kiczales, Jim des Rivieres, Daniel G. and Bobrow(MIT Press, 1991) , 1991, SGAR.

[15]  Gul A. Agha,et al.  ACTORS - a model of concurrent computation in distributed systems , 1985, MIT Press series in artificial intelligence.

[16]  Ian Welch,et al.  Kava - Using Byte code Rewriting to add Behavioural Reflection to Java , 2001, COOTS.

[17]  D. B. Davis,et al.  Sun Microsystems Inc. , 1993 .

[18]  Stéphane Ducasse,et al.  Evaluating Message Passing Control Techniques in Smalltalk , 1999 .

[19]  Jim Hugunin,et al.  Advice weaving in AspectJ , 2004, AOSD '04.

[20]  Henry Lieberman,et al.  Using prototypical objects to implement shared behavior in object-oriented systems , 1986, OOPLSA '86.

[21]  Gail C. Murphy,et al.  Proceedings of the 3rd international conference on Aspect-oriented software development , 2004 .

[22]  Craig Chambers,et al.  Organizing programs without classes , 1991, LISP Symb. Comput..

[23]  Terry A. McKee,et al.  OOPSLA '89 Conference proceedings on Object-oriented programming systems, languages and applications , 1989 .

[24]  Pattie Maes,et al.  Meta-Level Architectures and Reflection , 1988 .

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

[26]  Jonathan S. Shapiro,et al.  Concurrency among strangers: programming in E as plan coordination , 2005 .

[27]  Theo D'Hondt,et al.  Ambient-oriented programming , 2005, OOPSLA '05.

[28]  Theo D'Hondt,et al.  Ambient-oriented programming in ambientTalk , 2005, OOPSLA '05.

[29]  Brian Cantwell Smith,et al.  Reflection and semantics in LISP , 1984, POPL.

[30]  Pierre Cointe,et al.  Towards a methodology for explicit composition of metaobjects , 1995, OOPSLA.

[31]  Gilad Bracha,et al.  Strongtalk: typechecking Smalltalk in a production environment , 1993, OOPSLA '93.