Abstract
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.
- }}J. Andersson and T. Ritzau. Dynamic code update in JDrums. In Workshop on Software Engineering for Wearable and Pervasive Computing, 2000.Google Scholar
- }}C. Bockisch, M. Haupt, M. Mezini, and K. Ostermann. Virtual machine support for dynamic join points. In AOSD '04: Proceedings of the 3rd international conference on Aspect-oriented software development, pages 83--92, New York, NY, USA, 2004. ACM. Google Scholar
Digital Library
- }}S. Chiba, Y. Sato, and M. Tatsubori. Using Hotswap for Implementing Dynamic AOP Systems. In Proceedings of the 1st Workshop on Advancing the State-of-the-Art in Run-time Inspection, 2003.Google Scholar
- }}M. Dmitriev. Safe Class and Data Evolution in Large and Long-Lived Java Applications. PhD thesis, University of Glasgow, 2001.Google Scholar
- }}M. Dmitriev. Towards flexible and safe technology for runtime evolution of Java language applications. In Proceedings of the Workshop on Engineering Complex Object-Oriented Systems for Evolution, 2001.Google Scholar
- }}Eclipse Foundation. Eclipse, 2010. http://www.eclipse.org/.Google Scholar
- }}A. Goldberg and D. Robson. Smalltalk-80: the language and its implementation. Addison-Wesley Longman Publishing Co., Inc., Boston, MA, USA, 1983. Google Scholar
Digital Library
- }}E. Hilsdale and J. Hugunin. Advice weaving in AspectJ. In AOSD '04: Proceedings of the 3rd International Conference on Aspect-Oriented Software Development, pages 26--35, New York, NY, USA, 2004. Google Scholar
Digital Library
- }}Institute for System Software, Johannes Kepler University Linz. Dynamic Code Evolution VM, 2010. http://ssw.jku.at/dcevm/.Google Scholar
- }}JBoss. Open source middleware software. http://labs.jboss.com/jbossaop/, 2010.Google Scholar
- }}S. Malabarba, R. Pandey, J. Gragg, E. Barr, and J. F. Barnes. Runtime support for type-safe dynamic Java classes. In Proceedings of the European Conference on Object-Oriented Programming, pages 337--361. Springer-Verlag, 2000. Google Scholar
Digital Library
- }}P. Moret, W. Binder, D. Ansaloni, and A. Villazon. Exploring Large Profiles with Calling Context Ring Charts. In WOSP/SIPEW 2010: Proceedings of the First Joint International Conference on Performance Engineering, pages 63--68. ACM Press, Jan. 2010. Google Scholar
Digital Library
- }}P. Moret, W. Binder, A. Villazon, D. Ansaloni, and A. Heydarnoori. Visualizing and Exploring Profiles with Calling Context Ring Charts. Software: Practice and Experience, 2010. Google Scholar
Digital Library
- }}A. Nicoara, G. Alonso, and T. Roscoe. Controlled, Systematic, and Efficient Code Replacement for Running Java Programs. In Eurosys '08: Proceedings of the 3rd ACM SIGOPS/EuroSys European Conference on Computer Systems 2008, pages 233¿246, New York, NY, USA, 2008. ACM. Google Scholar
Digital Library
- }}Oracle Corporation. Da Vinci Machine Project, 2010. http://openjdk.java.net/projects/mlvm/.Google Scholar
- }}Oracle Corporation. Java Debug Wire Protocol (JDWP), 2010. http://java.sun.com/javase/6/docs/technotes/guides/jpda/jdwp-spec.html.Google Scholar
- }}Oracle Corporation. Java Virtual Machine Tool Interface (JVM TI), 2010. http://java.sun.com/javase/6/docs/technotes/guides/jvmti/index.html.Google Scholar
- }}Oracle Corporation. NetBeans, 2010. http://netbeans.org/.Google Scholar
- }}G. L. Steele, Jr. Common LISP: the Language. Digital Press, second edition, 1990. Google Scholar
Digital Library
- }}S. Subramanian, M. Hicks, and K. S. McKinley. Dynamic software up- dates: a VM-centric approach. In Proceedings of the ACM SIGPLAN Conference on Programming Language Design and Implementation, pages 1--12. ACM Press, 2009. Google Scholar
Digital Library
- }}W. Vanderperren, D. Suvee, B. Verheecke, M. A. Cibran, and V. Jonckers. Adaptive Programming in JAsCo. In AOSD '05: Proceedings of the 4th international conference on Aspect-oriented software development, pages 75¿86, New York, NY, USA, 2005. ACM. Google Scholar
Digital Library
- }}A. Vasseur. Dynamic AOP and Runtime Weaving for Java: How does AspectWerkz address it? In Dynamic Aspects Workshop (DAW04), Lancaster, England, Mar. 2004.Google Scholar
- }}A. Villazon, D. Ansaloni, W. Binder, and P. Moret. HotWave: Creating Adaptive Tools with Dynamic Aspect-Oriented Programming in Java. In GPCE '09: Proceedings of the Eighth International Conference on Generative Programming and Component Engineering. ACM, Oct. 2009. Google Scholar
Digital Library
- }}A. Villazon, W. Binder, D. Ansaloni, and P. Moret. Advanced Runtime Adaptation for Java. In GPCE '09: Proceedings of the Eighth International Conference on Generative Programming and Component Engineering, pages 85--94. ACM, Oct. 2009. Google Scholar
Digital Library
- }}T. Würthinger, W. Binder, D. Ansaloni, P. Moret, and H. Mössenböck. Improving aspect-oriented programming with dynamic code evolution in an enhanced Java virtual machine. In RAM-SE '10: Proceedings of the 7th ECOOP Workshop on Reflection, AOP and Meta-Data for Software Evolution. ACM, June 2010. Google Scholar
Digital Library
- }}T. Würthinger, L. Stadler, and C. Wimmer. Dynamic code evolution for Java. In Proceedings of the 8th International Conference on the Principles and Practice of Programming in Java (PPPJ'10), 2010. Google Scholar
Digital Library
Index Terms
Applications of enhanced dynamic code evolution for Java in GUI development and dynamic aspect-oriented programming
Recommendations
Applications of enhanced dynamic code evolution for Java in GUI development and dynamic aspect-oriented programming
GPCE '10: Proceedings of the ninth international conference on Generative programming and component engineeringWhile 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 ...
Improving aspect-oriented programming with dynamic code evolution in an enhanced Java virtual machine
RAM-SE '10: Proceedings of the 7th Workshop on Reflection, AOP and Meta-Data for Software EvolutionDynamic 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 ...
Dynamic aspect-oriented programming in java: the hotwave experience
Transactions on Aspect-Oriented Software Development IXDynamic aspect-oriented programming (AOP) enables runtime adaptation of programs. It enables sophisticated, aspect-based software engineering tools, such as adaptive profilers or debuggers, which dynamically modify instrumentation code in response to ...







Comments