Abstract
The dynamic software updating system JRebel from Zeroturnaround has proven to be an efficient mean to improve developer productivity, as it allows developers to change the code of their applications while developing and testing them. Hence, developers no longer have to go through the tedious cycle of serializing application state, halting execution, redeploy the binary, restarting, and de-serializing state before they can test the effect of a code change. However, the current version of JRebel has its limits, as it does not support all kinds of code changes. In this paper, we compare the three most comprehensive dynamic updating systems developed for Java to date. Together, these systems provide comprehensive support for changing class definitions of live objects, including adding, removing and moving fields, methods, classes and interfaces anywhere in the inheritance hierarchy. We then investigate the effects of dynamic updating by performing a dynamic updating experiment on five consecutive revisions of the classical arcade game Breakout using the dynamic updating system Gosh! (Prior to the acquisition by zeroturnaround.com known as Javeleon.). Based on the result of this experiment we show that dynamic updating of class definitions for live objects may under some circumstances result in different run-time behavior than would be observed after a cold restart of the upgraded application. Finally, we conclude by discussing the implication of integrating the dynamic updating model of Gosh! with JRebel. The successful integration of these two systems will set a new standard for dynamic software updating in Java.
This is a preview of subscription content, log in via an institution.
Buying options
Tax calculation will be finalised at checkout
Purchases are for personal use only
Learn about institutional subscriptionsReferences
Lehman, M.M.: Laws of software evolution revisited. In: Montangero, C. (ed.) EWSPT 1996. LNCS, vol. 1149, pp. 108–124. Springer, Heidelberg (1996)
Neamtiu, I., Hicks, M., Stoyle, G., Oriol, M.: Practical dynamic software updating for C. In: Proceedings of PLDI 2006
Chen, H., Yu, J., Chen, R., Zang, B., Yew, P.C.: POLUS: A POwerful live updating system. In: Proceedings of ICSE 2007
Makris, K., Bazzi, R.: Multi-threaded dynamic software updates using stack reconstruction. In: Proceedings of USENIX Annual Technical Conference 2009
Altekar, G., Bagrak, I., Burstein, P., Schultz, A.: OPUS: Online patches and updates for security. In: Proceedings of USENIX Security 2005
Soules, C., Appavoo, J., Hui, K., Da Silva, D., Ganger, G., Krieger, O., Stumm, M., Wisniewski, R., Auslander, M., Ostrowski, M., Rosenburg, B., Xenidis, J.: System support for online reconfiguration. In: Proceedings of USENIX Annual Technical Conference 2003
Baumann, A., Appavoo, J., Da Silva, D., Kerr, J., Krieger, O., Wisniewski, R.W.: Providing dynamic update in an operating system. In: Proceedings of USENIX Annual Technical Conference 2005
Baumann, A., Appavoo, J., Wisniewski, R.W., Da Silva, D., Krieger, O., Heiser, G.: Reboots are for hardware: challenges and solutions to updating an operating system on the fly. In: Proceedings of USENIX Annual Technical Conference 2007
Makris, K., Ryu, K.D.: Dynamic and adaptive updates of non-quiescent subsystems in commodity operating system kernels. In: Proceedings of EuroSys 2007
Chen, H., Chen, R., Zhang, F., Zang, B., Yew, P.C.: Live updating operating systems using virtualization. In: Proceedings of VEE 2006
Arnold, J., Kaashoek, F.: Ksplice: Automatic rebootless kernel updates. In: Proceedings of EuroSys 2009
Sun Microsystems. Java Platform Debugger Architecture, 2004. This supports class replacement. See http://java.sun.com/javase/6/docs/technotes/guides/jpda/
Microsoft Corporation. Edit and continue (2008). http://msdn2.microsoft.com/en-s/library/bcew296c.aspx
Mort Bay Consulting web site, vol. 2002, (2002). http://jetty.mortbay.org/jetty/index.html
Gustavson, J.: A Classification of Unanticipated Runtime Software Changes in Java. In Proc, ICSM (2003)
Ritzau, T., Andersson, J.: Dynamic deployment of Java applications. In Proc, Java for Embedded Systems Workshop (2000)
Malabarba, S., Fabrikant, A., Gragg, J., Barr, E., Barnes, J.: Runtime support for type-safe dynamic java classes. In: Bertino, E. (ed.) ECOOP 2000. LNCS, vol. 1850, pp. 337–361. Springer, Heidelberg (2000)
Orso, A., Rao, A., Harrold, M.J.: A technique for dynamic updating of Java software. In: Proceedings of ICSM 2002
Bierman, G., Parkinson, M., Boyland, J.: UpgradeJ: incremental typechecking for class upgrades. In: Vitek, J. (ed.) ECOOP 2008. LNCS, vol. 5142, pp. 235–259. Springer, Heidelberg (2008)
Kabanov, J.: JRebel tool demo. In: Proceedings of Bytecode 2010 (2010)
Würthinger, T., Wimmer, C., Stadler, L.: Dynamic code evolution for Java. In: Proceedings of PPPJ 2010
Dmitriev, M.: Safe evolution of large and long-lived java applications. Ph.D. Thesis, Department of Computing Science, University of Glasgow, Glasgow G12 8QQ, Scotland (2001)
Subramanian, S., Hicks, M., McKinley, K.S.: Dynamic software updates: a VM-centric approach. SIGPLAN 44(6), 1–12 (2009)
Gregersen, A.R., Rasmussen, M., Jørgensen, B.N.: Dynamic software updating with Gosh! - current status and the road ahead. In: Proceedings of ICSOFT 2013 (2013)
Gregersen, A.R., Jørgensen, B.N.: Dynamic update of Java applications—balancing change flexibility vs programming transparency. J. Softw. Maint. Evol. Res. Pract. 21, 81–112 (2009)
Sato, Y., Chiba, S.: Loosely-separated “Sister” namespaces in Java. In: Black, A.P. (ed.) ECOOP 2005. LNCS, vol. 3586, pp. 49–70. Springer, Heidelberg (2005)
Gregersen, A.R., Hadaytullah, K.K., Jørgensen, B.N.: an integrated platform for dynamic software updating and its application in self-* systems. In: Proceedings of SCET 2012
Gregersen, A.R., Jørgensen, B.N.: Run-time phenomena in dynamic software updating: causes and effects. In: Proceedings of IWPSE-EVOL 2011
Lanza, M., Ducasse, S., Gall, H., Pinzger, M.: CodeCrawler: an information visualization tool for program comprehension. In: Proceedings of ICSE 2005
Author information
Authors and Affiliations
Corresponding author
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2014 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Gregersen, A.R., Rasmussen, M., Jørgensen, B.N. (2014). State of the Art of Dynamic Software Updating in Java. In: Cordeiro, J., van Sinderen, M. (eds) Software Technologies. ICSOFT 2013. Communications in Computer and Information Science, vol 457. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-662-44920-2_7
Download citation
DOI: https://doi.org/10.1007/978-3-662-44920-2_7
Published:
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-662-44919-6
Online ISBN: 978-3-662-44920-2
eBook Packages: Computer ScienceComputer Science (R0)