Unrestricted and safe dynamic code evolution for Java
Science of Computer Programming, 2013•Elsevier
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, but can also be …
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, but can also be …
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, but can also be applied for updating of long-running applications. Changes can be applied at any point at which a Java program can be suspended. Our virtual machine is able to continue execution of old changed or deleted methods and also to access deleted static fields. A dynamic verification of the current state of the program ensures type safety of complex class hierarchy changes. However, the programmer still has to ensure that the semantics of the modified program are correct and that the new program version can start running from the state left behind by the old program version. The evaluation section shows that our modifications to the virtual machine have no negative performance impact on normal program execution. The in-place instance update algorithm is in many cases faster than a full garbage collection. Standard Java development environments automatically use the code evolution features of our modified virtual machine, so no additional tools are required.
Elsevier
Showing the best result for this search. See all results