Concepts and experiments in computational reflection
OOPSLA '87 Conference proceedings on Object-oriented programming systems, languages and applications
Dynamic class loading in the Java virtual machine
Proceedings of the 13th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Architecture-based runtime software evolution
Proceedings of the 20th international conference on Software engineering
A Bytecode Translator for Distributed Execution of ``Legacy'' Java Software
ECOOP '01 Proceedings of the 15th European Conference on Object-Oriented Programming
ISCC '02 Proceedings of the Seventh International Symposium on Computers and Communications (ISCC'02)
Dynamic update of Java applications—balancing change flexibility vs programming transparency
Journal of Software Maintenance and Evolution: Research and Practice - Special Issue on the 12th Conference on Software Maintenance and Reengineering (CSMR 2008)
Dynamic software updates: a VM-centric approach
Proceedings of the 2009 ACM SIGPLAN conference on Programming language design and implementation
Hi-index | 0.00 |
The server side of business software systems is commonly implemented today by an ensemble of Java classes distributed over several hosts. In this scenario, it is often necessary, for performance tuning or bug fixing, to update the code or change the location of some classes. Since business systems must typically stay on-line 24 hours a day, changes and updates should be made without stopping system execution.This paper proposes a distributed software architecture which clearly separates the functionalities of the server-side application from its on-line adaptation capabilities. As a result, developers are freed from considering adaptation concerns, which are instead provided by separate, application-independent, transparently integrated components. The latter analyse data related to the operational conditions of the application, and, based on available statistics and expected behaviour, trigger changes on the application classes.The bytecode of classes expected to need on-line updating is modified at load time, so as to insert hooks that will support run-time changes. No tampering with class files is required. Particular care has been taken to ensure the type-compatibility of classes thus manipulated.