Efficient implementation of Java interfaces: Invokeinterface considered harmless
OOPSLA '01 Proceedings of the 16th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Extending RMI to Support Dynamic Reconfiguration of Distributed Systems
ICDCS '02 Proceedings of the 22 nd International Conference on Distributed Computing Systems (ICDCS'02)
A Technique for Dynamic Updating of Java Software
ICSM '02 Proceedings of the International Conference on Software Maintenance (ICSM'02)
An easy-to-use toolkit for efficient Java bytecode translators
Proceedings of the 2nd international conference on Generative programming and component engineering
Binary refactoring: improving code behind the scenes
Proceedings of the 27th international conference on Software engineering
Java Enterprise in a Nutshell
How do APIs evolve? A story of refactoring: Research Articles
Journal of Software Maintenance and Evolution: Research and Practice - IEEE International Conference on Software Maintenance (ICSM2005)
Statically scoped object adaptation with expanders
Proceedings of the 21st annual ACM SIGPLAN conference on Object-oriented programming systems, languages, and applications
J-Orchestra: Enhancing Java programs with distribution capabilities
ACM Transactions on Software Engineering and Methodology (TOSEM)
Dynamic Software Updates for Accelerating Scientific Discovery
ICCS '09 Proceedings of the 9th International Conference on Computational Science: Part I
Flexible and Efficient In-Vivo Enhancement for Grid Applications
CCGRID '09 Proceedings of the 2009 9th IEEE/ACM International Symposium on Cluster Computing and the Grid
Static analysis for dynamic updates
Proceedings of the 9th Central & Eastern European Software Engineering Conference in Russia
Hi-index | 0.00 |
Java HotSpot VM provides a facility for replacing classes at runtime called HotSwap. One design property of HotSwap is that the signature of a replaced class must remain the same between different versions, which significantly constrains the programmer modifying a class to be replaced. Specifically, the programmer is precluded from adding new methods, constructors, or fields, or even changing the signatures of existing methods or fields. This paper presents a novel approach that overcomes these constraints of HotSwap by using binary refactoring, a technique that rewrites the binary representation of a program without affecting its functionality. A series of micro and macro benchmarks we conducted demonstrate that the approach is extensible and efficient. In particular, the new binary refactoring technique, which enables the approach, produces highly-efficient refactored application versions, outperforming a widely-used prior technique by as much as an order of magnitude. These initial results indicate that by rewriting the bytecode of a swapped program, one can effectively overcome constraints of HotSwap with minimal performance overhead.