Dynamic Software Updating with Gosh! - Current Status and the Road Ahead

Allan Raundahl Gregersen, Michael Rasmussen, Bo Nørregaard Jørgensen


Any non-trivial software system has to be upgraded regularly to incorporate bug fixes and security patches or simply to keep up with the inevitable evolution in end-user requirements. Software upgrading is challenging, especially when it comes to online upgrading of running systems. In this paper, we present the current status of Gosh!, a dynamic-software-updating system for Java, which provides comprehensive support for changing class definitions of live objects, including adding, removing and moving fields, methods, classes and interfaces anywhere in the inheritance hierarchy. Prior to the acquisition by zeroturnaround.com, Gosh! was known as Javeleon. In this paper we demonstrate the capabilities of Gosh! by performing a dynamic updating experiment on five consecutive revisions of the classical arcade game Breakout. 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 this finding for future research directions within dynamic software updating.


  1. Altekar, G., Bagrak, I., Burstein, P., Schultz, A., 2005. OPUS: Online patches and updates for security. In Proc. USENIX Security.
  2. Arnold, J., Kaashoek, F., 2009. Ksplice: Automatic rebootless kernel updates. In Proc. EuroSys.
  3. Baumann, A., Appavoo, J., Silva, D. D., Kerr, J., Krieger, O., Wisniewski, R. W., 2005. Providing dynamic update in an operating system. In Proc. USENIX Annual Technical Conference.
  4. Baumann, A., Appavoo, J., Wisniewski, R. W., Silva, D. D., Krieger, O., Heiser, G., 2007. Reboots are for hardware: challenges and solutions to updating an operating system on the fly. In Proc. USENIX Annual Technical Conference.
  5. Bierman, G., Parkinson, M., Noble, J., 2008. UpgradeJ: Incremental typechecking for class upgrades. In Proc. ECOOP.
  6. Chen, H., Chen, R., Zhang, F., Zang, B., Yew, P. C., 2006. Live updating operating systems using virtualization. In Proc. VEE.
  7. Chen, H., Yu, J., Chen, R., Zang, B., Yew, P., 2007. POLUS: A POwerful Live Updating System. In Proc. ICSE.
  8. Dmitriev, M., 2001. Safe Evolution of Large and LongLived Java Applications. PhD thesis, Department of Computing Science, University of Glasgow, Glasgow G12 8QQ, Scotland.
  9. Gustavson, J., 2003. A Classification of Unanticipated Runtime Software Changes in Java. In Proc. ICSM.
  10. Gregersen, A. R., Jørgensen, B. N., 2009. Dynamic update of Java applications-balancing change flexibility vs programming transparency. In J. Softw. Maint. Evol.: Res. Pract. 21.
  11. Gregersen, A. R., Jørgensen, B. N., 2011. Run-time Phenomena in Dynamic Software Updating: Causes and Effects. In Proc. IWPSE-EVOL.
  12. Gregersen, A. R., Hadaytullah, Koskimies, K., Jørgensen, B. N., 2012. An Integrated Platform for Dynamic Software Updating and its Application in Self-* systems. In Proc. SCET.
  13. Kabanov, J., 2010. JRebel Tool Demo. In Proc. Bytecode 2010.
  14. Lanza, M., Ducasse, S., Gall, H., and Pinzger, M., 2005. CodeCrawler: an information visualization tool for program comprehension. In Proc. ICSE.
  15. Lehman, M. M., 1997. Laws of Software Evolution Revisited, pos. paper, EWSPT96, Oct. 1996, Lecture Notes in Computer Science, Vol. 1149, SpringerVerlag.
  16. Makris, K., Bazzi, R., 2009. Multi-threaded dynamic software updates using stack reconstruction. In Proc. USENIX Annual Technical Conference.
  17. Makris, K., Ryu, K. D., 2007. Dynamic and adaptive updates of non-quiescent subsystems in commodity operating system kernels. In Proc. EuroSys.
  18. Malabarba, S., Pandey, R., Gragg, J., Barr, E., Barnes, J. F., 2000. Runtime support for type-safe dynamic Java classes. In Proc. ECOOP.
  19. Microsoft Corporation. Edit and continue. http://msdn2.microsoft.com/en-us/library/ bcew296c.aspx, 2008.
  20. Neamtiu, I., Hicks, M., Stoyle, G., Oriol, M., 2006. Practical dynamic software updating for C. In Proc. PLDI.
  21. Orso, A., Rao, A., Harrold, M. J., 2002. A technique for dynamic updating of Java software. In Proc. ICSM.
  22. Ritzau, T., Andersson, J., 2000. Dynamic deployment of Java applications. In Proc. Java for Embedded Systems Workshop.
  23. Sato, Y., Chiba, S.,2005. Loosely-separated "Sister" Namespaces in Java. In Proc. ECOOP'05.
  24. Soules, C., Appavoo, J., Hui, K., Silva, D. D., Ganger, G., Krieger, O., Stumm, M., Wisniewski, R., Auslander, M., Ostrowski, M., Rosenburg, B., Xenidis, J., 2003. System support for online reconfiguration. In Proc. USENIX Annual Technical Conference.
  25. Subramanian, S., Hicks, M., McKinley K. S., 2009. Dynamic software updates: a VM-centric approach. SIGPLAN No. 44, 6.
  26. Sun Microsystems. Java Platform Debugger Architecture, 2004. This supports class replacement. See http://java.sun.com/javase/6/docs/technotes/guides /jpda/.
  27. Würthinger, T., Wimmer,C. and Stadler, L. 2010. Dynamic code evolution for Java. In Proc. PPPJ.

Paper Citation

in Harvard Style

Raundahl Gregersen A., Rasmussen M. and Nørregaard Jørgensen B. (2013). Dynamic Software Updating with Gosh! - Current Status and the Road Ahead . In Proceedings of the 8th International Joint Conference on Software Technologies - Volume 1: ICSOFT-EA, (ICSOFT 2013) ISBN 978-989-8565-68-6, pages 220-226. DOI: 10.5220/0004562302200226

in Bibtex Style

author={Allan Raundahl Gregersen and Michael Rasmussen and Bo Nørregaard Jørgensen},
title={Dynamic Software Updating with Gosh! - Current Status and the Road Ahead},
booktitle={Proceedings of the 8th International Joint Conference on Software Technologies - Volume 1: ICSOFT-EA, (ICSOFT 2013)},

in EndNote Style

JO - Proceedings of the 8th International Joint Conference on Software Technologies - Volume 1: ICSOFT-EA, (ICSOFT 2013)
TI - Dynamic Software Updating with Gosh! - Current Status and the Road Ahead
SN - 978-989-8565-68-6
AU - Raundahl Gregersen A.
AU - Rasmussen M.
AU - Nørregaard Jørgensen B.
PY - 2013
SP - 220
EP - 226
DO - 10.5220/0004562302200226