Abstract
Since version 1.1 of the Java Development Kit, the Java reflective facilities have been successively extended. However, they still prove to be limited. A number of systems (e.g. MetaXa, Guaraná, Kava, Javassist) have addressed this limitation by providing reflective extensions of Java with richer MetaObject Protocols (MOPs). All these extensions provide a particular, monolithic, infrastructure that reflects the commitment of the designer to particular trade-offs between efficiency, portability, expressiveness and flexibility. Unfortunately, these trade-offs are not satisfactory for all applications, since different applications may have different needs. This calls for breaking down the building of a reflective extension into different components that can be specialized in order to fit specific needs. We qualify such a reflective extension as open. In this paper, we present Reflex, a prototype open reflective extension of Java. Reflex can be seen both as a reflective extension of Java and as a first step towards a framework for building such extensions.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
Similar content being viewed by others
References
V. Aggarwal. The magic of Merlin-how the new JDK 1.4 levitates its functionality. Java World, March 2001.
M. Braux and J. Noyé. Towards partially evaluating reflection in Java. In ACM SIGPLAN Workshop on Partial Evaluation and Semantics-Based Program Manipulation, Boston, MA, USA, January 2000. ACM Press. ACM SIGPLAN Notices, 34(11).
J.-P. Briot, R. Guerraoui, and K.-P. Löhr. Concurrency and distribution in object oriented programming. ACM Computer Surveys, 30(3), September 1998.
D. Caromel, W. Klauser, and J. Vayssiere. Towards seamless computing and metacomputing in Java. In Concurrency Practice and Experience, volume 10. Wiley & Sons, September 1998.
S. Chiba. Load-time structural reflection in Java. In E. Bertino, editor, ECOOP 2000-Object-Oriented Programming-14th European Conference, number 1850 in Lecture Notes in Computer Science, pages 313–336, Sophia Antipolis and Cannes, France, June 2000. Springer-Verlag.
S. Chiba and M. Tatsubori. Yet another java.lang.class. In ECOOP’98 Workshop on Reflective Object-Oriented Programming and Systems, Brussels, Belgium, July 1998.
P. Cointe, editor. Proceedings of Reflection’ 99, volume 1616 of Lecture Notes in Computer Science, Saint-Malo, France, 1999. Springer-Verlag.
R. Douence and M. Südholt. A generic reification technique for object-oriented reflective languages. Higher-Order and Symbolic Computation, 14(1), 2001.
S. Ducasse. Evaluating message passing control techniques in Smalltalk. Journal of Object-Oriented Programming, June:39–50, 1999.
Proceedings of the ACM SIGPLAN Workshop on Dynamic and Adaptive Compilation and Optimization (Dynamo’00), Boston, MA, USA, January 2000. ACM Press. ACM SIGPLAN Notices, 35(7).
B. Foote and R.E. Johnson. Reflective facilities in Smalltalk-80. In N. Meyrowitz, editor, OOPSLA’89, Conference Proceedings, pages 327–335, New Orleans, Louisiana, USA, October 1989. ACM SIGPLAN Notices, 24(10).
E. Gamma, R. Helm, R. Johnson, and J. Vlissides. Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley, 1994.
M. Golm and J. Kleinöder. Jumping to the meta level, behavioral reflection can be fast and flexible. In Cointe[7], pages 22–39.
N.D. Jones, C.K. Gomard, and P. Sestoft. Partial Evaluation and Automatic Program Generation. International Series in Computer Science. Prentice Hall, 1993.
SUN Microsystems. Dynamic proxy classes. http://java.sun.com/j2se/1.3/docs/guide/reflection/proxy.html, 1999.
P. Mulet, J. Malenfant, and P. Cointe. Towards a methodology for explicit composition of metaobjects. In Proceedings of OOPSLA’95, pages 316–330. ACM Press, October 1995.
H. Okamura and Y. Ishikawa. Object location control using meta-level programming. In Proceedings of ECOOP’94, pages 299–319, 1994.
A. Oliva and L. E. Buzato. Composition of meta-objects in Guarana. In Proceedings of the 5th USENIX Conference on Object-Oriented Technologies & Systems (COOTS’99), San Diego, California, USA, May 1999.
B. Redmond and V. Cahill. Iguana/J: Towards a dynamic and efficient reflective architecture for Java. ECOOP 2000 Workshop on Reflection and Metalevel Architectures, June 2000.
R.J. Stroud and Z. Wu. Using metaobject protocols to satisfy non-functional requirements. In C. Zimmermann, editor, Advances in Object-Oriented Metalevel Architectures and Reflection, pages 31–52. CRC Press, 1996.
SUN Microsystems. Object Serialization, 1998. http://java.sun.com/products/jdk/1.2/docs/guide/serialization/.
Java Remote Method Invocation specification. Technical report, SUN Microsystems, 1999. http://java.sun.com.products/jdk/1.2/docs/guide/rmi/.
E. Tanter. Reflex, a reflective system for Java — application to flexible resource management in Java mobile object systems. Master’s thesis, Universidad de Chile, Chile-Vrije Universiteit Brussel, Belgium, 2000.
E. Tanter. Reflex Website, 2001. http://www.dcc.uchile.cl/~etanter/Reflex.
M. Tatsubori. An extension mechanism for the Java language. Master’s thesis, University of Tsukuba, Japan, 1999.
I. Welch and R. Stroud. From Dalang to Kava-the evolution of a reflective Java extension. In Cointe[7], pages 2–21.
Z. Wu. Reflective Java and a reflective-component-based transaction architecture. In J.-C. Fabre and S. Chiba, editors, Proceedings of the ACM OOPSLA’98 Workshop on Reflective Programming in Java and C++, October 1998.
Z. Wu and S. Schwiderski. Reflective Java: Making Java even more flexible. APM 1936.02, APM Limited, Castle Park, Cambridge, UK, February 1997.
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2001 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Tanter, É., Bouraqadi-Saâdani, N.M.N., Noyé, J. (2001). Reflex — Towards an Open Reflective Extension of Java. In: Yonezawa, A., Matsuoka, S. (eds) Metalevel Architectures and Separation of Crosscutting Concerns. Reflection 2001. Lecture Notes in Computer Science, vol 2192. Springer, Berlin, Heidelberg. https://doi.org/10.1007/3-540-45429-2_2
Download citation
DOI: https://doi.org/10.1007/3-540-45429-2_2
Published:
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-42618-9
Online ISBN: 978-3-540-45429-8
eBook Packages: Springer Book Archive