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
Statically scoped object adaptation with expanders
Proceedings of the 21st annual ACM SIGPLAN conference on Object-oriented programming systems, languages, and applications
Proceedings of the 21st annual ACM SIGPLAN conference on Object-oriented programming systems, languages, and applications
Overcoming JVM HotSwap constraints via binary rewriting
Proceedings of the 1st International Workshop on Hot Topics in Software Upgrades
Proceedings of the tenth international conference on Aspect-oriented software development
Hi-index | 0.00 |
In a grid application, some requirements may change while the execution is in progress. This paper presents in-vivo enhancement--updating running grid applications to facilitate their perfective maintenance. Because applications in this domain are not only typically long-running, but also time-consuming to deploy, we propose a dynamic update technique that can change a running application flexibly and efficiently. Specifically, this paper presents a novel technique for dynamically updating grid applications deployed on the Java Virtual Machine (JVM). Our technique overcomes constraints of JVM HotSwap, a facility for replacing classes at runtime. While HotSwap precludes the programmer from adding new methods and fields, changing the signatures of existing methods, and has no support for transferring state between old and new objects, our approach effectively removes these constraints by rewriting program bytecode. Further, the rewritten programs incur only minimal performance overhead (less than 2% on average). We demonstrate the efficiency and extensibility of our approach through micro and macro benchmarks, as well as through a case study of dynamically updating a parallel bioinformatics application.