Abstract
Current implementations of reflective Java extensions typically either require access to source code, or require a modified Java platform. This makes them unsuitable for applying reflection to Commercial-off-the-Shelf (COTS) systems. In order to address this we developed a prototype Java extension Dalang based on class wrapping that worked with compiled code, and was implemented using a standard Java platform. In this paper we evaluate the class wrapper approach, and discuss issues that relate to the transparent application of reflection to COTS systems. This has informed our design of a new version of Dalang called Kava that implements a metaobject protocol through the application of standard byte code transformations. Kava leverages the capabilities of byte code transformation toolkits whilst presenting a high-level abstraction for specifying behavioural changes to Java components.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
References
Benantar M., Blakley B., and Nadain A. J.: Approach to Object Security in Distributed SOM. IBM Systems Journal, Vol35, No.2, (1996).
Agesen, O., Freund S., and Mitchell J. C.: Adding Type Parameterization. In Proceedings of OOPSLA’97, Atlanta, Georgia (1997).
Bracha, Gilad: personal communication (1999).
Burns A., Mitchell S., and Wellings A. J.: Mopping up Exceptions. In ECOOP98 Workshop Reader: Workshop on Reflective Object-Oriented Programming and Systems (1998).
Chiba S and Masuda T.: Designing an Extensible Distributed Language with a Meta-Level Architecture. In proceedings of ECOOP93 (1993).
Chiba S.: A Metaobject Protocol for C++. In proceedings of ECOOP95 (1995).
Cohen, Geoff A., and Chase, Jeffery S.: Automatic Program Transformation with JOIE. Proceedings of USENIX Annual Technical Symposium (1998).
Czaijkowski, Grzegorz and von Eicken, Thorsten. JRes: A Resource Accounting Interface for Java. Proceedings of OOPSLA’98 (1998).
Danforth, S. H. and Forman, I. R.: Reflections on Metaclass Programming in SOM. In proceedings of OOPLSA’94 (1994).
Dony, Christophe: Exception Handling and Object Oriented Programming: towards a synthesis. Proceedings of ECOOP/OOPSLA’90. Ottawa, Canada (1990).
Fabre, J.-C. and Perennou, T.: FRIENDS: A Flexible Architecture for Implementing Fault Tolerant and Secure Distributed Applications. Proceedings of the Second European Dependable Computing Conference (EDCC-2) (1996).
Fabre, J.-C. and Nicomette, V. and Perennou, T., Stroud, R. J. and Wu, Z.: Implementing Fault-Tolerant Applications using Reflective Object-Oriented Programming. Proceedings 25th International Symposium on Fault-Tolerant Computing (FTCS-25), (1995).
Gamma E., Helm R., Johnson R., and Vlissides J.: Design Patterns: Elements of Reusable Object-Oriented Software. Reading, Mass.: Addison-Wesley, (1995).
Golm, M.: Design and Implementation of a Meta Architecture for Java. MSc Thesis (1997). University of Erlangen.
Guimares, Jos de Oliveira: Reflection for Statically Typed Languages. Proceedings of ECOOP98 (1998).
Holzle, U.: Integrating Independently-Developed Components in Object-Oriented Languages. Proceedings of ECOOP’93 (1993).
IBM. Bean Extender Documentation, version 2.0 (1997).
JavaSoft, Sun Microsystems, Inc.: Reflection, 1997. JDK 1.1 documentation, available athttp://java.sun.com/products/jdk/1.1/docs/guide/reflection.
Keller, R. and Holzle, U.: Binary Component Adaptation. Proceedings of ECOOP’98 (1998).
Kiczales G., des Rivieres J.: The Art of the Metaobject Protocol. MIT Press (1991).
Killijian Marc-Olivier, Fabre Jean-Charles, Ruiz-Garcia Juan-Carlos, and Chiba Shigeru: A Metaobject Protocol for Fault-Tolerant CORBA Applications. Proceedings of SRDS’98 (1998).
Liang, Sheng and Bracha, Gilad: Dynamic Class Loading in the Java(tm) Virtual Machine. Proceedings of OOPSLA’98 (1998).
Lieberman, Henry: Using Prototypical Objects to Implement Shared Behaviour in Object-Oriented Systems. Proceedings of OOPSLA’86 (1986).
Masuhara H., Matsuoka S., Watanabe T. and Yonezawa A.: Object-Oriented Concurrent Reflective Languages can be Implemented Efficiently. In proceedings of OOPSLA’92 (1992).
Matsuoka S., Ogawa H., Shimura K., Kimura, Y., and Takagi H.: OpenJIT-A Reflective Java JIT Compiler. Proceedings of Workshop on Reflective Programming in C++ and Java, UTCCP Report 98-4, Center for Computational Physics, University of Tsukuba, Japan ISSN 1344-3135, (1998).
McAffer, J.: Meta-Level Programming with CodA. In proceedings of ECOOP95 (1995).
Mulet, P. and Malenfant, J. and Cointe, P.: Towards a Methodology for Explicit Composition of MetaObjects. Proceedings of OOPSLA’95 (1995).
Oliva, Alexandre; Buzato, Luiz Eduardo; Garcia, Islene Calciolari: The Reflective Architecture of Guaran. Available from: http://www.dcc.unicamp.br/oliva.
Stroud, Robert: Transparency and Reflection in Distributed Systems. Operating Systems Review 27(2): 99–103 (1993)
Stroud, R. J. and Z. Wu: Using Metaobject Protocols to Satisfy Non-Functional Requirements. Chapter 3 from “Advances in Object-Oriented Metalevel Architectures and Reflection” (1996), ed. Chris Zimmermann. Published by CRC Press.
Stroud, R.J. and Wu, Z.: Using Metaobject Protocols to Implement Atomic Data Types, Proceedings of ECOOP’95 (LNCS-925), Aarhus, Denmark, (1995).
Tatsubori, Michiaki and Chiba, Shigeru: Programming Support of Design Patterns with Compile-time Reflection. Proceedings of Workshop on Reflective Programming in C++ and Java, UTCCP Report 98-4, Center for Computational Physics, University of Tsukuba, Japan ISSN 1344-3135, (1998).
Van Oeyen Johan, Bijnens Stijn, Joosen Wouter, Robben Bert, Matthijs Frank and Verbaeten Pierre: A Flexible Object Support System as a Runtime for Concurrent Object-Oriented Languages. Chapter 13 from “Advances in Object-Oriented Metalevel Architectures and Reflection” (1996), ed. Chris Zimmermann. Published by CRC Press.
Welch, Ian and Stroud Robert: Adaptation of Connectors in Software Architectures. ECOOP’98 Workshop on Component-Oriented Programming. Extended abstract published in workshop reader, and full paper published by Turku Centre for Computer Science, (1998).
Welch, Ian and Stroud, Robert: Dalang-A Reflective Extension for Java. Computing Science Technical Report CS-TR-672, University of Newcastle upon Tyne, (1999).
Wu, Z. and Schwiderski, S.: Reflective Java-Making Java Even More Flexible. FTP: Architecture Projects Management Limited (apm@ansa.co.uk), Cambridge, UK (1997).
Zimmerman, Chris: Metalevels, MOPs and What all the Fuzz is All about. Chapter 1 from “Advances in Object-Oriented Metalevel Architectures and Reflection” (1996), ed. Chris Zimmermann. Published by CRC Press.
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 1999 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Welch, I., Stroud, R. (1999). From Dalang to Kava - the Evolution of a Reflective Java Extension. In: Cointe, P. (eds) Meta-Level Architectures and Reflection. Reflection 1999. Lecture Notes in Computer Science, vol 1616. Springer, Berlin, Heidelberg. https://doi.org/10.1007/3-540-48443-4_2
Download citation
DOI: https://doi.org/10.1007/3-540-48443-4_2
Published:
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-66280-8
Online ISBN: 978-3-540-48443-1
eBook Packages: Springer Book Archive