Proxies: design principles for robust object-oriented intercession APIs

Proxies are a powerful approach to implement meta-objects in object-oriented languages without having to resort to metacircular interpretation. We introduce such a meta-level API based on proxies for Javascript. We simultaneously introduce a set of design principles that characterize such APIs in general, and compare similar APIs of other languages in terms of these principles. We highlight how principled proxy-based APIs improve code robustness by avoiding interference between base and meta-level code that occur in more common reflective intercession mechanisms.

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

[2]  Patrick Th. Eugster,et al.  Uniform proxies for Java , 2006, OOPSLA '06.

[3]  Randall B. Smith,et al.  SELF: The power of simplicity , 1987, OOPSLA '87.

[4]  David D. Redell,et al.  NAMING AND PROTECTION IN EXTENDABLE OPERATING SYSTEMS , 1974 .

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

[6]  Mark S. Miller,et al.  Robust composition: towards a unified approach to access control and concurrency control , 2006 .

[7]  Éric Tanter,et al.  Mirages: behavioral intercession in a mirror-based architecture , 2007, DLS '07.

[8]  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.

[9]  Michael Franz,et al.  Efficient bytecode verification and compilation in a virtual machine , 2006 .

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

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

[12]  Randall B. Smith,et al.  Self: The power of simplicity , 1987, OOPSLA 1987.

[13]  Yaron Kashai,et al.  Modules as Objects in Newspeak , 2010, ECOOP.

[14]  水野 貴明,et al.  JavaScript : the good parts : 「良いパーツ」によるベストプラクティス , 2008 .

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

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

[17]  Brian Foote,et al.  Reflective facilities in Smalltalk-80 , 1989, OOPSLA 1989.