{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2025,6,19]],"date-time":"2025-06-19T04:14:59Z","timestamp":1750306499307,"version":"3.41.0"},"reference-count":36,"publisher":"Association for Computing Machinery (ACM)","issue":"8S","license":[{"start":{"date-parts":[[2015,12,4]],"date-time":"2015-12-04T00:00:00Z","timestamp":1449187200000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/www.acm.org\/publications\/policies\/copyright_policy#Background"}],"content-domain":{"domain":["dl.acm.org"],"crossmark-restriction":true},"short-container-title":["SIGPLAN Not."],"published-print":{"date-parts":[[2015,12,4]]},"abstract":"<jats:p>\n            We identify three design principles for reflection and metaprogramming facilities in object oriented programming languages.\n            <jats:italic>Encapsulation<\/jats:italic>\n            : meta-level facilities must encapsulate their implementation.\n            <jats:italic>Stratification<\/jats:italic>\n            : meta-level facilities must be separated from base-level functionality.\n            <jats:italic>Ontological correspondence<\/jats:italic>\n            : the ontology of meta-level facilities should correspond to the ontology of the language they manipulate. Traditional\/mainstream reflective architectures do not follow these precepts. In contrast, reflective APIs built around the concept of\n            <jats:italic>mirrors<\/jats:italic>\n            are characterized by adherence to these three principles. Consequently, mirror-based architectures have significant advantages with respect to distribution, deployment and general purpose metaprogramming\n          <\/jats:p>","DOI":"10.1145\/2854695.2854699","type":"journal-article","created":{"date-parts":[[2015,12,7]],"date-time":"2015-12-07T19:33:52Z","timestamp":1449516832000},"page":"35-48","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":3,"title":["OOPSLA 2004"],"prefix":"10.1145","volume":"50","author":[{"given":"Gilad","family":"Bracha","sequence":"first","affiliation":[{"name":"Sun Microsystems, Santa Clara, CA"}]},{"given":"David","family":"Ungar","sequence":"additional","affiliation":[{"name":"Sun Microsystems, Mountain View, CA"}]}],"member":"320","published-online":{"date-parts":[[2015,12,4]]},"reference":[{"key":"e_1_2_1_1_1","doi-asserted-by":"publisher","DOI":"10.1145\/263698.263720"},{"key":"e_1_2_1_2_1","doi-asserted-by":"publisher","DOI":"10.1002\/spe.4380250903"},{"volume-title":"MIT Press","year":"1986","author":"Agha Gul","key":"e_1_2_1_3_1"},{"key":"e_1_2_1_4_1","unstructured":"Annotation Processing Tool Home Page . http:\/\/java.sun.com\/j2se\/1.5.0\/docs\/guide\/apt\/  Annotation Processing Tool Home Page . http:\/\/java.sun.com\/j2se\/1.5.0\/docs\/guide\/apt\/"},{"volume-title":"David Griswold and Urs H\u00f6lzle. Mixins in Strongtalk. ECOOP Workshop on Inheritance","year":"2002","author":"Bak Lars","key":"e_1_2_1_5_1"},{"volume-title":"OOPSLA Workshop on Extending the Smalltalk Language.","author":"Bracha Gilad","key":"e_1_2_1_6_1"},{"key":"e_1_2_1_7_1","doi-asserted-by":"publisher","DOI":"10.1145\/97945.97982"},{"key":"e_1_2_1_8_1","doi-asserted-by":"publisher","DOI":"10.1145\/165854.165893"},{"volume-title":"OOPSLA Workshop on Extending the Smalltalk Language.","author":"Bracha Gilad","key":"e_1_2_1_9_1"},{"key":"e_1_2_1_11_1","doi-asserted-by":"publisher","DOI":"10.1145\/800017.800513"},{"key":"e_1_2_1_12_1","doi-asserted-by":"publisher","DOI":"10.1145\/217838.217868"},{"volume-title":"Proc. of Technology of Object-Oriented Languages and Systems (TOOLS Pacific '98), Australia, November","year":"1998","author":"Chiba Shigeru","key":"e_1_2_1_13_1"},{"volume-title":"Generative Programming. Addison-Wesley","year":"2000","author":"Czarnecki Krzysztof","key":"e_1_2_1_14_1"},{"volume-title":"Addison-Wesley","year":"1983","author":"Goldberg Adele","key":"e_1_2_1_15_1"},{"volume-title":"Third Edition. Addison-Wesley","year":"2004","author":"Gosling James","key":"e_1_2_1_16_1"},{"key":"e_1_2_1_17_1","unstructured":"Javadoc Tool Home Page. http:\/\/java.sun.com\/j2se\/javadoc\/.  Javadoc Tool Home Page. http:\/\/java.sun.com\/j2se\/javadoc\/."},{"key":"e_1_2_1_18_1","doi-asserted-by":"publisher","DOI":"10.5555\/574212"},{"key":"e_1_2_1_19_1","doi-asserted-by":"publisher","DOI":"10.1145\/286936.286945"},{"volume-title":"Proceedings of the International Conference on Software Engineering","year":"2003","author":"H.","key":"e_1_2_1_20_1"},{"volume-title":"OOPSLA","year":"2002","author":"Madsen Ole Lehrmann","key":"e_1_2_1_21_1"},{"volume-title":"Addison-Wesley","year":"1993","author":"Madsen Ole Lehrmann","key":"e_1_2_1_22_1"},{"key":"e_1_2_1_23_1","doi-asserted-by":"publisher","DOI":"10.1145\/38765.38821"},{"key":"e_1_2_1_24_1","unstructured":"Mjolner Informatics. The Mjolner System: Metaprogramming System. Available at http:\/\/www.mjolner.com\/mjolner-system\/yggdrasil_en.php  Mjolner Informatics. The Mjolner System: Metaprogramming System. Available at http:\/\/www.mjolner.com\/mjolner-system\/yggdrasil_en.php"},{"key":"e_1_2_1_25_1","doi-asserted-by":"publisher","DOI":"10.5555\/646930.710408"},{"key":"e_1_2_1_26_1","first-page":"163","volume-title":"Richmond and James Noble. Reflections on Remote Reflection. Proceedings of the 24th Australasian conference on Computer science. Gold Coast","author":"Michael","year":"2001"},{"key":"e_1_2_1_27_1","unstructured":"Self Programming Language Homepage. http:\/\/research.sun.com\/research\/self\/  Self Programming Language Homepage. http:\/\/research.sun.com\/research\/self\/"},{"key":"e_1_2_1_28_1","doi-asserted-by":"publisher","DOI":"10.1145\/636517.636528"},{"key":"e_1_2_1_29_1","unstructured":"Sun Microsystems. Java Platform Debugger Architecture. http:\/\/java.sun.com\/products\/jpda\/.  Sun Microsystems. Java Platform Debugger Architecture. http:\/\/java.sun.com\/products\/jpda\/."},{"key":"e_1_2_1_30_1","unstructured":"Sun Microsystems. A Metadata Facility for the JavaTM Programming Language. http:\/\/www.jcp.org\/aboutJava\/communityprocess\/review\/jsr175\/  Sun Microsystems. A Metadata Facility for the JavaTM Programming Language. http:\/\/www.jcp.org\/aboutJava\/communityprocess\/review\/jsr175\/"},{"key":"e_1_2_1_31_1","first-page":"117","volume-title":"Reflection and Software Engineering, LNCS","author":"Tatsubori Michiaki","year":"1826"},{"key":"e_1_2_1_32_1","doi-asserted-by":"publisher","DOI":"10.1145\/217838.217845"},{"key":"e_1_2_1_33_1","doi-asserted-by":"publisher","DOI":"10.1145\/38765.38828"},{"key":"e_1_2_1_34_1","unstructured":"Allen Wirfs-Brock Juanita Ewing Harold Williams and Brian Wilkerson. A Declarative Model for Defining Smalltalk Programs October 1996. Invited talk at OOPSLA 96; available at http:\/\/www.smalltalksystems.com\/_awss97\/index.htm.  Allen Wirfs-Brock Juanita Ewing Harold Williams and Brian Wilkerson. A Declarative Model for Defining Smalltalk Programs October 1996. Invited talk at OOPSLA 96; available at http:\/\/www.smalltalksystems.com\/_awss97\/index.htm."},{"key":"e_1_2_1_35_1","doi-asserted-by":"publisher","DOI":"10.5555\/832254.832862"},{"key":"e_1_2_1_36_1","unstructured":"Roel Wuyts A Logic Meta - Programming Approach to Support the Co - Evolution of Object - Oriented Design and Implementation Ph.D. thesis Vrije Universiteit Brussel 2001.  Roel Wuyts A Logic Meta - Programming Approach to Support the Co - Evolution of Object - Oriented Design and Implementation Ph.D. thesis Vrije Universiteit Brussel 2001."},{"volume-title":"ECOOP 2001 International workshop on MultiParadigm Programming with Object - Oriented Languages","year":"2001","author":"Wuyts Roel","key":"e_1_2_1_37_1"}],"container-title":["ACM SIGPLAN Notices"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/2854695.2854699","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/2854695.2854699","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,6,18]],"date-time":"2025-06-18T05:48:47Z","timestamp":1750225727000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/2854695.2854699"}},"subtitle":["Mirrors: Design Principles for Meta-level Facilities of Object-Oriented Programming Languages"],"short-title":[],"issued":{"date-parts":[[2015,12,4]]},"references-count":36,"journal-issue":{"issue":"8S","published-print":{"date-parts":[[2015,12,4]]}},"alternative-id":["10.1145\/2854695.2854699"],"URL":"https:\/\/doi.org\/10.1145\/2854695.2854699","relation":{},"ISSN":["0362-1340","1558-1160"],"issn-type":[{"type":"print","value":"0362-1340"},{"type":"electronic","value":"1558-1160"}],"subject":[],"published":{"date-parts":[[2015,12,4]]},"assertion":[{"value":"2015-12-04","order":2,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}