Improving aspect-oriented programming with dynamic code evolution in an enhanced Java virtual machine

Dynamic aspect-oriented programming (AOP) is a powerful approach for integrating new features into running applications without disrupting their execution. In Java, dynamic AOP frameworks often use runtime weaving of previously loaded classes, which is however severely restricted because of limitations in current Java Virtual Machines (JVMs). These constraints make it very difficult or even impossible to support important AOP features such as static join point information, around() advice, or explicit structural modifications of classes and the class hierarchy. In this position paper we advocate the idea of using advanced dynamic code evolution features to improve dynamic AOP. We present an enhanced JVM, based on a state-of-the-art production JVM, which offers unrestricted class redefiniton. Thanks to this feature, we are able to redesign the dynamic AOP framework HotWave in order to overcome the aforementioned restrictions in the programming model.

[1]  Gustavo Alonso,et al.  Just-in-time aspects: efficient dynamic weaving for Java , 2003, AOSD '03.

[2]  Robert Hirschfeld,et al.  AspectS - Aspect-Oriented Programming with Squeak , 2002, NetObjectDays.

[3]  Éric Tanter Execution levels for aspect-oriented programming , 2010, AOSD.

[4]  M. Dmitriev Towards Flexible and Safe Technology for Runtime Evolution of Java Language Applications , 2001 .

[5]  이준상,et al.  미래 소프트웨어 개발기술 : Aspect - Oriented Programming과 Subject - Oriented Programming , 2003 .

[6]  David Robson,et al.  Smalltalk-80: The Language and Its Implementation , 1983 .

[7]  Laurence Duchien,et al.  JAC: an aspect‐based distributed dynamic framework , 2004, Softw. Pract. Exp..

[8]  Walter Binder,et al.  HotWave: creating adaptive tools with dynamic aspect-oriented programming in Java , 2009, GPCE '09.

[9]  Shigeru Chiba,et al.  Load-Time Structural Reflection in Java , 2000, ECOOP.

[10]  Alexandre Bergel FacetS: First Class Entities for an Open Dynamic AOP Language , 2006 .

[11]  Walter Binder,et al.  Advanced runtime adaptation for Java , 2009, GPCE '09.

[12]  Mikhail Dmitriev,et al.  Safe class and data evolution in large and long-lived Java applications , 2001 .

[13]  Ondrej Lhoták,et al.  abc: an extensible AspectJ compiler , 2005, AOSD '05.

[14]  William G. Griswold,et al.  An Overview of AspectJ , 2001, ECOOP.

[15]  Insup Lee,et al.  DYMOS: a dynamic modification system , 1983 .

[16]  Tobias Ritzau,et al.  Dynamic Code Update in JDRUMS , 2000 .

[17]  Michael Haupt,et al.  Virtual machine support for dynamic join points , 2004, AOSD '04.

[18]  Gustavo Alonso,et al.  Making Applications Persistent at Run-time , 2007, 2007 IEEE 23rd International Conference on Data Engineering.

[19]  Jim Hugunin,et al.  Advice weaving in AspectJ , 2004, AOSD '04.

[20]  Kathryn S. McKinley,et al.  Dynamic software updates: a VM-centric approach , 2009, PLDI '09.

[21]  Michiaki Tatsubori,et al.  Using HotSwap for Implementing Dynamic AOP Systems , 2003 .

[22]  Gregor Kiczales,et al.  Aspect-oriented programming , 1996, CSUR.

[23]  Pascal Costanza,et al.  Dynamic Replacement of Active Objects in the Gilgul Programming Language , 2002, Component Deployment.

[24]  Earl T. Barr,et al.  Runtime Support for Type-Safe Dynamic Java Classes , 2000, ECOOP.

[25]  Shirley Dex,et al.  JR 旅客販売総合システム(マルス)における運用及び管理について , 1991 .

[26]  Gustavo Alonso,et al.  Dynamic weaving for aspect-oriented programming , 2002, AOSD '02.

[27]  Gustavo Alonso,et al.  Controlled, systematic, and efficient code replacement for running java programs , 2008, Eurosys '08.

[28]  Stephen J. Fink,et al.  The Jalapeño virtual machine , 2000, IBM Syst. J..

[29]  Wim Vanderperren,et al.  Adaptive programming in JAsCo , 2005, AOSD '05.

[30]  Guy L. Steele,et al.  Common Lisp the Language , 1984 .

[31]  Bo Nørregaard Jørgensen,et al.  Towards a dynamic-update-enabled JVM , 2009, RAM-SE@ECOOP.

[32]  Cristina V. Lopes,et al.  Aspect-oriented programming , 1999, ECOOP Workshops.