The Evolving Philosophers Problem: Dynamic Change Management
IEEE Transactions on Software Engineering
On dynamically updating a computer program: from concept to prototype
Journal of Systems and Software - Special issue on software maintenance
CLOS: integrating object-oriented and functional programming
Communications of the ACM - Special issue on LISP
Debugging optimized code with dynamic deoptimization
PLDI '92 Proceedings of the ACM SIGPLAN 1992 conference on Programming language design and implementation
On line software version change using state transfer between processes
Software—Practice & Experience
A Formal Framework for On-line Software Version Change
IEEE Transactions on Software Engineering
Java Virtual Machine Specification
Java Virtual Machine Specification
Runtime Support for Type-Safe Dynamic Java Classes
ECOOP '00 Proceedings of the 14th European Conference on Object-Oriented Programming
Supporting Unanticipated Dynamic Adaptation of Application Behaviour
ECOOP '02 Proceedings of the 16th European Conference on Object-Oriented Programming
Evolutionary Data Conversion in the PJama Persistent Language
Proceedings of the Workshop on Object-Oriented Technology
Adapting Applications on the Fly
Proceedings of the 17th IEEE international conference on Automated software engineering
Analysing Dynamic Change in Software Architectures: A Case Study
CDS '98 Proceedings of the International Conference on Configurable Distributed Systems
How to design a system in which modules can be changed on the fly
ICSE '76 Proceedings of the 2nd international conference on Software engineering
DYMOS: A dynamic modification system
SIGSOFT '83 Proceedings of the ACM SIGSOFT/SIGPLAN software engineering symposium on High-level debugging
A Technique for Dynamic Updating of Java Software
ICSM '02 Proceedings of the International Conference on Software Maintenance (ICSM'02)
A Classification of Unanticipated Runtime Software Changes in Java
ICSM '03 Proceedings of the International Conference on Software Maintenance
Safe Class and Data Evolution in Large and Long-Lived Java[tm] Applications
Safe Class and Data Evolution in Large and Long-Lived Java[tm] Applications
Java(TM) Language Specification, The (3rd Edition) (Java (Addison-Wesley))
Java(TM) Language Specification, The (3rd Edition) (Java (Addison-Wesley))
Common Lisp: The Language
ACM Transactions on Programming Languages and Systems (TOPLAS)
Practical dynamic software updating for C
Proceedings of the 2006 ACM SIGPLAN conference on Programming language design and implementation
The DaCapo benchmarks: java benchmarking development and analysis
Proceedings of the 21st annual ACM SIGPLAN conference on Object-oriented programming systems, languages, and applications
An alternative to Quiescence: Tranquility
ICSM '06 Proceedings of the 22nd IEEE International Conference on Software Maintenance
Mutatis Mutandis: Safe and predictable dynamic software updating
ACM Transactions on Programming Languages and Systems (TOPLAS)
The java hotspotTM server compiler
JVM'01 Proceedings of the 2001 Symposium on JavaTM Virtual Machine Research and Technology Symposium - Volume 1
Dynamic C++ classes: a lightweight mechanism to update code in a running program
ATEC '98 Proceedings of the annual conference on USENIX Annual Technical Conference
Design of the Java HotSpot™ client compiler for Java 6
ACM Transactions on Architecture and Code Optimization (TACO)
Towards Unanticipated Runtime Adaptation of Java Applications
APSEC '08 Proceedings of the 2008 15th Asia-Pacific Software Engineering Conference
Dynamic software updates: a VM-centric approach
Proceedings of the 2009 ACM SIGPLAN conference on Programming language design and implementation
Towards a dynamic-update-enabled JVM
Proceedings of the Workshop on AOP and Meta-Data for Software Evolution
HotWave: creating adaptive tools with dynamic aspect-oriented programming in Java
GPCE '09 Proceedings of the eighth international conference on Generative programming and component engineering
GPCE '10 Proceedings of the ninth international conference on Generative programming and component engineering
JavAdaptor: unrestricted dynamic software updates for Java
Proceedings of the 33rd International Conference on Software Engineering
Implications of modular systems on dynamic updating
Proceedings of the 14th international ACM Sigsoft symposium on Component based software engineering
Run-time phenomena in dynamic software updating: causes and effects
Proceedings of the 12th International Workshop on Principles of Software Evolution and the 7th annual ERCIM Workshop on Software Evolution
Safe and atomic run-time code evolution for Java and its application to dynamic AOP
Proceedings of the 2011 ACM international conference on Object oriented programming systems languages and applications
Using first-class contexts to realize dynamic software updates
Proceedings of the International Workshop on Smalltalk Technologies
Efficient support of dynamic inheritance for class- and prototype-based languages
Journal of Systems and Software
Unrestricted and safe dynamic code evolution for Java
Science of Computer Programming
Hi-index | 0.00 |
Dynamic code evolution is a technique to update a program while it is running. In an object-oriented language such as Java, this can be seen as replacing a set of classes by new versions. We modified an existing high-performance virtual machine to allow arbitrary changes to the definition of loaded classes. Besides adding and deleting fields and methods, we also allow any kind of changes to the class and interface hierarchy. Our approach focuses on increasing developer productivity during debugging. Changes can be applied at any point a Java program can be suspended. The evaluation section shows that our modifications to the virtual machine have no negative performance impact on normal program execution. The fast in-place instance update algorithm ensures that the performance characteristics of a change are comparable with performing a full garbage collection run. Standard Java development environments are capable of using the code evolution features of our modified virtual machine, so no additional tools are required.