SOFTWARE—PRACTICE AND EXPERIENCE Softw. Pract. Exper. 2011; 00:1–33 Published online in Wiley InterScience (www.interscience.wiley.com). DOI: 10.1002/spe JAVADAPTOR – Flexible Runtime Updates of Java Applications Mario Pukall1∗, Christian Kastner¨ 2, Walter Cazzola3, Sebastian Gotz¨ 4, Alexander Grebhahn5, Reimar Schroter¨ 5, Gunter Saake1 1University of Magdeburg, fmario.pukall,
[email protected] 2Philipps-University Marburg,
[email protected] 3University of Milano,
[email protected] 4University of Dresden,
[email protected] 5University of Magdeburg, falexander.grebhahn,
[email protected] SUMMARY Software is changed frequently during its life cycle. New requirements come and bugs must be fixed. To update an application it usually must be stopped, patched, and restarted. This causes time periods of unavailability which is always a problem for highly available applications. Even for the development of complex applications restarts to test new program parts can be time consuming and annoying. Thus, we aim at dynamic software updates to update programs at runtime. There is a large body of research on dynamic software updates, but so far, existing approaches have shortcomings either in terms of flexibility or performance. In addition, some of them depend on specific runtime environments and dictate the program’s architecture. We present JAVADAPTOR, the first runtime update approach based on Java that (a) offers flexible dynamic software updates, (b) is platform independent, (c) introduces only minimal performance overhead, and (d) does not dictate the program architecture. JAVADAPTOR combines schema changing class replacements by class renaming and caller updates with Java HotSwap using containers and proxies.