Abstract
The need to dynamically modify running applications arises in systems that must adapt to changes in their environment, in updating long-running systems that cannot be halted and restarted, and in monitoring and debugging systems without the need to recompile and restart them. Relatively few architectures have explored the meaning and possibilities of applying behavioural modifications to already running applications without static preparation of the application. The desirable characteristics of an architecture for dynamic modification include support for non-invasive association of new behaviour with the application, support for modular reusable components encapsulating the new behaviour and support for dynamic association (and de-association) of new behaviour with any class or object of the application. The Iguana/J architecture explores unanticipated dynamic modification, and demonstrates how these characteristics may be supported in an interpreted language without extending the language, without a preprocessor, and without requiring the source code of the application. This paper describes the Iguana/J programmer’s model and how it addresses some acknowledged issues in dynamic adaptation and separation of concerns, describes how Iguana/J is implemented, and gives examples of applying Iguana/J.
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
Amano, N., Watanabe, T.: Reflection for Dynamic Adaptability: A Linguistic Approach Using LEAD++. In: Pierre Cointe, editor, Meta-Level Architectures and Reflection, Vol. 1616 of Lecture Notes in Computer Science, pages 138–140. Springer-Verlag (1999)
Bouraqadi, N.: Concern Oriented Programming using Reflection. Workshop on Advanced Separation of Concerns at OOPSLA 2000 (position paper)
Bouraqadi-Saâdani, N., Ledoux, T.: How to Weave? Workshop on advanced separation of concerns at ECOOP 2001 (position paper)
Brichau, J., de Meuter, W, de Volder, K.: Jumping Aspects. Workshop on aspects and dimensions of concern at ECOOP 2000 (position paper)
Brichau, J., Glandrup, M., Clarke, S., Bergmans, L.: Advanced Separation of Concerns. Report of workshop on advanced separation of concerns at ECOOP’2001. http://trese.cs.utwente.nl/Workshops/ecoop01asoc/ws.pdf
Czarnecki, K., Eisenecker, U.W.: Generative Programming. Addison Wesley (2000)
Dowling, J., Schäfer, T., Cahill, V., Haraszti, P, Redmond, B.: Using Reflection to Support Dynamic Adaptation of System Software. In: Cazzola, W., Stroud, R.J., Tisato, F. (eds): Reflection and Software Engineering, Vol. 1826 of Lecture Notes in Computer Science, pages 171–190. Springer-Verlag (2000)
Eide, E., Reid, A., Flatt, M., Lepreau, J.: Aspect Weaving as Component Knitting: Separating Concerns with Knit. Workshop on Advanced Separation of Concerns in Software Engineering at ICSE 2001 (position paper).
Gamma, E., Helm, R., Johnson, R., Vlissides, J.: Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley (1995)
Golm, M.: Design and Implementation of a Meta-Architecture for Java. Master’s Thesis, Dept. of Computer Science, Friedrich-Alexander-University, Erlangen-Nuremberg (1997)
Golm, M., Kleinöder, J.: Jumping to the Meta Level: Behavioural Reflection can be Fast and Flexible. In: Cointe, P. (ed): Meta-Level Architectures and Reflection, Vol. 1616 of Lecture Notes in Computer Science, pages 22–39. Springer-Verlag (1999)
Gowing, B., Cahill, V.: Meta-object protocols for C++: The Iguana approach. In: Proceedings of Reflection’ 96, pages 137–152. XEROX Palo Alto Research Center (1996)
Keller, R., Hölzle, U.: Binary Component Adaptation. In: Jul, E. (ed): ECOOP’98-Object-Oriented Programming, Vol. 1445 of Lecture Notes in Computer Science, pages 307–329. Springer-Verlag (1998)
Kiczales, G., Hilsdale, E., Hugunin, J., Kersten, M., Palm, J., Griswold, W.G.: An Overview of AspectJ. In: Knudsen, L.J. (ed): ECOOP 2001-Object-Oriented Programming, Vol. 2072 of Lecture Notes in Computer Science, pages 327–353. Springer-Verlag (2001)
Lieberherr, K., Lorenz, D., Mezini, M.: Programming with Aspectual Components. Technical report NU-CCS-99-01, College of Computer Science, Northeastern University, Boston MA (1999)
Matsuoka, S., Yonezawa, A.: Analysis of Inheritance Anomaly in Object-Oriented Concurrent Programming Languages. In: Agha, G., Wegner, P., Yonezawa, A. (eds): Research Directions in Concurrent Object-Oriented Programming, pages 107–150. MIT Press(1993)
Okamura, H., Ishikawa, Y., Tokoro, M.: AL-1/D: A Distributed Programming System with Multi-Model Reflection Framework. In: Yonezawa, A., Smith, B.C. (eds): Proceedings of the IMSA’92 Workshop on Reflection and Metalevel Architecture. Tokyo (1992)
Oliva, A., Buzato, L.: The Implementation of Guaraná on Java. Technical report IC-98-32 of Instituto de Computação, Universidade Estadual de Campinas, Brazil (1998)
Pawlak, R., Seinturier, L., Duchien, L., Florin, G.: JAC: A Flexible Solution for Aspect-Oriented Programming in Java. In: Yonezawa, A., Matsuoka, S. (eds): MetaLevel Architectures and Separation of Crosscutting Concerns, Vol. 2192 of Lecture Notes in Computer Science, pages 1–24. Springer-Verlag (1999)
Popovici, A., Gross, T., Alonso, G.: Dynamic Homogenous AOP with PROSE. Technical report, Department of Computer Science, Federal Institute of Technology, Zurich (2001)
Redmond, B., Cahill, V.: Iguana/J: Towards a Dynamic and Efficient Reflective Architecture for Java. Presented at ECOOP’00 workshop on Reflection and Meta-Level Architectures. Cannes, 2000. (position paper) http://www.dsg.cs.tcd.ie/~redmondb/iguanaj
Schäfer, T.: Supporting Meta-types in a Compiled Reflective Programming Language. PhD Thesis, Department of Computer Science, University of Dublin, Trinity College (2001)
Java Virtual Machine Debug Interface Refererence. Sun Microsystems (2000) http://java.sun.com/products/jdk/1.2/docs/guide/jvmdi/jvmdi.html.
Tanter, E., Bouraqadi-Saâdani, N., Noyé, J.: Reflex-Towards an Open Reflective Extension of Java. In: Yonezawa, A., Matsuoka, S. (eds): MetaLevel Architectures and Separation of Crosscutting Concerns, Vol. 2192 of Lecture Notes in Computer Science, pages 25–43. Springer-Verlag (2001)
Tarr, P., D’Hondt, M., Bergmans, L., Videira Lopes, C.: Workshop on Aspects and Dimensions of Concern. In: Malenfant, J., Moisant, S., Moreira, A. (eds): Object-Oriented Technology, Vol. 1964 of Lecture Notes in Computer Science, pages 203–240. Springer-Verlag (2000)
Tarr, P., Osher, H.: Hyper/J User and Installation Manual. IBM Research (2000)
Tatsubori, M., Chiba, S., Killijian, M., Itano, K.: OpenJava: A Class-based Macro System for Java. In: Cazzola, W., Stroud, R.J., Tisato, F. (eds): Reflection and Software Engineering, Vol. 1826 of Lecture Notes in Computer Science, pages 117–133. Springer-Verlag (2000)
Tatsubori, M., Sasaki, T., Chiba, S., Itano, K.: A Bytecode Translator for Distributed Execution of “Legacy” Java Software. In: Knudsen, L.J. (ed): ECOOP 2001-Object-Oriented Programming, Vol. 2072 of Lecture Notes in Computer Science, pages 236–255. Springer-Verlag (2001)
Welch, I., Stroud, R.J.: Kava-Using Byte code Rewriting to add Behavioural Reflection to Java. In: proceedings of 6th USENIX Conference on Object Oriented Technologies and Systems. San Antonio, USA, January (2001)
Yellin, F.: The Java Native Code API. Sun Microsystems (1996) http://java.sun.com/docs/jit_interface.html
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2002 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Redmond, B., Cahill, V. (2002). Supporting Unanticipated Dynamic Adaptation of Application Behaviour. In: Magnusson, B. (eds) ECOOP 2002 — Object-Oriented Programming. ECOOP 2002. Lecture Notes in Computer Science, vol 2374. Springer, Berlin, Heidelberg. https://doi.org/10.1007/3-540-47993-7_9
Download citation
DOI: https://doi.org/10.1007/3-540-47993-7_9
Published:
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-43759-8
Online ISBN: 978-3-540-47993-2
eBook Packages: Springer Book Archive