Applications of enhanced dynamic code evolution for Java in GUI development and dynamic aspect-oriented programming

While dynamic code evolution in object-oriented systems is an important feature supported by dynamic languages, there is currently only limited support for dynamic code evolution in high-performance, state-of-the-art runtime systems for statically typed languages, such as the Java Virtual Machine. In this tool demonstration, we present the Dynamic Code Evolution VM, which is based on a recent version of Oracle's state-of-the-art Java HotSpot(TM) VM and allows unlimited changes to loaded classes at runtime. Based on the Dynamic Code Evolution VM, we developed an enhanced version of the Mantisse GUI builder (which is part of the NetBeans IDE) that allows adding GUI components without restarting the application under development. Furthermore, we redesigned the dynamic AOP framework HotWave to take advantage of the enhanced dynamic code evolution capabilities. The new version, HotWave2, now supports most AspectJ constructs, including around() advice and static cross-cutting. We will demonstrate both the enhanced Mantisse GUI builder as well as HotWave2, weaving several aspects for dynamic analysis in sizable applications at runtime.

[1]  Thomas Würthinger Dynamic code evolution for Java , 2010, PPPJ.

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

[3]  Walter Binder,et al.  Visualizing and exploring profiles with calling context ring charts , 2010 .

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

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

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

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

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

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

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

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

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

[13]  Hanspeter Mössenböck,et al.  Improving aspect-oriented programming with dynamic code evolution in an enhanced Java virtual machine , 2010, RAM-SE@ECOOP.

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

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

[16]  Walter Binder,et al.  Exploring large profiles with calling context ring charts , 2010, WOSP/SIPEW '10.

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