- Loading...
The project website including binaries for download and a bugtracking system can be found at http://ssw.jku.at/dcevm/.
The class data structures of the Java HotSpot virtual machine are immutable during the execution of a program. While new classes can be loaded, it is not possible to change existing classes (e.g. add/remove methods or fields). This projects tries to relax this condition to allow arbitrary changes to existing Java classes (including changes to the class hierarchy) while running a Java program.
Warning | ||
---|---|---|
| ||
Work in progress. |
Latest patch update: December 17, 2010
Patch base: jdk7-b118
Full patch (advanced version): hotswap.patch
Patch with VM modifications only and limited feature set: hotswaplight.patch
Please send any comments or questions to: wuerthinger@ssw.jku.at
Initial implementation description (April 1, 2009): Thomas Wuerthinger, Dynamic Code Evolution for the Java HotSpotVirtual Machine
For more recent information, see the list of publications.
Type of Change | Supported? | Possible problems after resume |
---|---|---|
Swap Method Body | yes |
|
Add Method | yes |
|
Remove Method | yes | NoSuchMethodError / none in advanced version |
Add Field | yes |
|
Remove Field | yes | NoSuchFieldError / none for static fields in advanced version |
Add Supertype | yes |
|
Remove Supertype | no / yes in advanced version | none, but not always guaranteed to be possible |
Classes can implement a method "void $transformer()".
This method is called on every object whose class was redefined and can therefore be used to initialize the new instances of a class.
Additionally, it is possible to implement a static method "void $staticTransformer()" that will be called on the class only.
Example code:
|
| ||||||||||||||