Skip to main content
Log in

A Generic Reification Technique for Object-Oriented Reflective Languages

  • Published:
Higher-Order and Symbolic Computation

Abstract

Computational reflection is gaining interest in practical applications as witnessed by the use of reflection in the Java programming environment and recent work on reflective middleware. Reflective systems offer many different reflection programming interfaces, the so-called Meta-Object Protocols (MOPs). Their design is subject to a number of constraints relating to, among others, expressive power, efficiency and security properties. Since these constraints are different from one application to another, it would be desirable to easily provide specially-tailored MOPs.

In this paper, we present a generic reification technique based on program transformation. It enables the selective reification of arbitrary parts of object-oriented meta-circular interpreters. The reification process is of fine granularity: individual objects of the run-time system can be reified independently. Furthermore, the program transformation can be applied to different interpreter definitions. Each resulting reflective implementation provides a different MOP directly derived from the original interpreter definition.

This is a preview of subscription content, log in via an institution to check access.

Access this article

Price excludes VAT (USA)
Tax calculation will be finalised during checkout.

Instant access to the full article PDF.

Similar content being viewed by others

References

  1. McAffer, J. Meta-level programming with CODA. In Proceedings of ECOOP, LNCS Vol. 952, Springer Verlag, 1995, pp. 190-214.

  2. Asai, K., Matsuoka, S., and Yonezawa, A. Duplication and partial evaluation-For a better understanding of reflective languages. Lisp and Symbolic Computation 9(2/3) (1996) 203-241.

    Google Scholar 

  3. Blair, G. and Campbell, R. (chairs). Workshop on Reflective Middleware, 2000. http://www.comp. lancs.ac.uk/computing/RM2000/.

  4. Braux, M. and Noyé, J. Towards partial evaluating reflection in JAVA. In Proceedings of Workshop on Partial Evaluation and Semantics-Based Program Manipulation, 2000. ACM Press, pp. 2-11.

  5. Briot, J.P. and Cointe, P. Programming with explicit metaclasses in SMALLTALK. Proceedings of OOPSLA, ACM SIGPLAN Notices 24(10) (1989) 419-431.

    Google Scholar 

  6. Chiba, S. A metaobject protocol for CCC. Proceedings of OOPSLA, ACM SIGPLAN Notices 30(10) (1995) 285-299.

    Google Scholar 

  7. Cointe, P. Metaclasses are first class objects: The OBJVLISP model. Proceedings of OOPSLA, ACMSIGPLAN Notices 22(12) (1987) 156-162.

    Google Scholar 

  8. Cointe, P. CLOS and SMALLTALK: A comparison. In Object-Oriented Programming: The CLOS perspectives?, A. Päpcke (Ed.). MIT Press, 1993, Ch. 9, pp. 215-274.

  9. Cointe, P. (Ed.). Proceedings of Reflection'99, LNCS Vol. 1616, Springer Verlag, 1999.

  10. Danvy, O. and Malmkjæ r, K. Intensions and extensions in a reflective tower. In Proceedings of the ACM Conference on Lisp and Functional Programming, 1988, pp. 327-341.

  11. Douence, R. and Südholt, M. On the lightweight and selective introduction of reflective capabilities in applications. International Workshop on Reflection and Metalevel Architectures at ECOOP, 2000. ftp://ftp.disi.unige.it/person/CazzolaW/EWRMA/sudholt.ps.gz

  12. Gamma, E., Helms, R., Johnson, R., and Vlissides, J. Design Patterns. Addison-Wesley, 1995.

  13. Goldberg, A. and Robson, D. SMALLTALK 80, The Language and its Implementation. Addison-Wesley, 1983.

  14. Golm, M. Design and implementation of a meta architecture for Java. Master's Thesis, Universität Erlangen, 1997.

  15. Gowing, B. and Cahill, V. Meta-object protocols for CCC: The IGUANA approach. In Informal Proceedings of Reflection'96, 1996, pp. 137-152.

  16. Itoh, J.-I., Yokote, Y., and Lea, R. Using meta-objects to support optimisation in the Apertos operating system. In Proceedings of the USENIX Conference on Object-Oriented Technologies(COOTS), 1995.USENIX Association, pp. 147-158.

  17. JAVA home page. Sun Microsystems, Inc. http://java.sun.com.

  18. Kiczales, G., des Riviè res, J., and Bobrow, D. The Art of the Metaobject Protocol. MIT Press, 1991.

  19. Maes, P. Concepts and experiments in computational reflection. Proceedings of OOPSLA, ACM SIGPLAN Notices 22(12) (1987) 147-155.

    Google Scholar 

  20. Malenfant, J., Dony, C., and Cointe, P. A semantics of introspection in a reflective prototype-based language. Lisp and Symbolic Computation 9(2/3) (1996) 153-180.

    Google Scholar 

  21. Mendhekar, A. and Friedman, D.P. Towards a theory of reflective programming languages. In Informal Proceedings of the Third Workshop on Reflection and Metalevel Architectures in Object-Oriented Programming at OOPSLA, 1993.

  22. METAJ (version 1.1), http://www.emn.fr/sudholt/research/metaj/.

  23. De Meuter, W. AGORA: The story of the simplest MOP in the world. In Prototype-based Programming, J. Noble et al. (Eds.), Springer Verlag, 1998.

  24. Muller, R. M-LISP: A representation-independant dialect of LISP with reduction semantics. ACM TOPLAS 14(4) (1992) 589-616.

    Google Scholar 

  25. Rivard, F. SMALLTALK: A reflective language. In Informal Proceedings of Reflection'96, 1996, pp. 21-38.

  26. Smith, B.C. Reflection and semantics in LISP. In Proceedings of POPL, 1984. ACM Press, pp. 23-35.

  27. Wand, M. The theory of Fexprs is trivial. Lisp and Symbolic Computation 10(3) (1998) 189-199.

    Google Scholar 

  28. Wand, M. and Friedman, D.P. The mystery of the tower revealed: A non-reflective description of the reflective tower. Lisp and Symbolic Computation 1(1) (1988) 11-38.

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Rights and permissions

Reprints and permissions

About this article

Cite this article

Douence, R., Südholt, M. A Generic Reification Technique for Object-Oriented Reflective Languages. Higher-Order and Symbolic Computation 14, 7–34 (2001). https://doi.org/10.1023/A:1011549115358

Download citation

  • Issue Date:

  • DOI: https://doi.org/10.1023/A:1011549115358

Navigation