Skip to main content

State of the Art of Dynamic Software Updating in Java

  • Conference paper
  • First Online:
  • 562 Accesses

Part of the book series: Communications in Computer and Information Science ((CCIS,volume 457))

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

Chapter
USD   29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD   39.99
Price excludes VAT (USA)
  • Available as EPUB and PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD   54.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Learn about institutional subscriptions

References

  1. Lehman, M.M.: Laws of software evolution revisited. In: Montangero, C. (ed.) EWSPT 1996. LNCS, vol. 1149, pp. 108–124. Springer, Heidelberg (1996)

    Chapter  Google Scholar 

  2. Neamtiu, I., Hicks, M., Stoyle, G., Oriol, M.: Practical dynamic software updating for C. In: Proceedings of PLDI 2006

    Google Scholar 

  3. Chen, H., Yu, J., Chen, R., Zang, B., Yew, P.C.: POLUS: A POwerful live updating system. In: Proceedings of ICSE 2007

    Google Scholar 

  4. Makris, K., Bazzi, R.: Multi-threaded dynamic software updates using stack reconstruction. In: Proceedings of USENIX Annual Technical Conference 2009

    Google Scholar 

  5. Altekar, G., Bagrak, I., Burstein, P., Schultz, A.: OPUS: Online patches and updates for security. In: Proceedings of USENIX Security 2005

    Google Scholar 

  6. 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

    Google Scholar 

  7. 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

    Google Scholar 

  8. 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

    Google Scholar 

  9. Makris, K., Ryu, K.D.: Dynamic and adaptive updates of non-quiescent subsystems in commodity operating system kernels. In: Proceedings of EuroSys 2007

    Google Scholar 

  10. Chen, H., Chen, R., Zhang, F., Zang, B., Yew, P.C.: Live updating operating systems using virtualization. In: Proceedings of VEE 2006

    Google Scholar 

  11. Arnold, J., Kaashoek, F.: Ksplice: Automatic rebootless kernel updates. In: Proceedings of EuroSys 2009

    Google Scholar 

  12. Sun Microsystems. Java Platform Debugger Architecture, 2004. This supports class replacement. See http://java.sun.com/javase/6/docs/technotes/guides/jpda/

  13. Microsoft Corporation. Edit and continue (2008). http://msdn2.microsoft.com/en-s/library/bcew296c.aspx

  14. Mort Bay Consulting web site, vol. 2002, (2002). http://jetty.mortbay.org/jetty/index.html

  15. Gustavson, J.: A Classification of Unanticipated Runtime Software Changes in Java. In Proc, ICSM (2003)

    Google Scholar 

  16. Ritzau, T., Andersson, J.: Dynamic deployment of Java applications. In Proc, Java for Embedded Systems Workshop (2000)

    Google Scholar 

  17. 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)

    Chapter  Google Scholar 

  18. Orso, A., Rao, A., Harrold, M.J.: A technique for dynamic updating of Java software. In: Proceedings of ICSM 2002

    Google Scholar 

  19. 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)

    Chapter  Google Scholar 

  20. Kabanov, J.: JRebel tool demo. In: Proceedings of Bytecode 2010 (2010)

    Google Scholar 

  21. Würthinger, T., Wimmer, C., Stadler, L.: Dynamic code evolution for Java. In: Proceedings of PPPJ 2010

    Google Scholar 

  22. 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)

    Google Scholar 

  23. Subramanian, S., Hicks, M., McKinley, K.S.: Dynamic software updates: a VM-centric approach. SIGPLAN 44(6), 1–12 (2009)

    Article  Google Scholar 

  24. 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)

    Google Scholar 

  25. 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)

    Article  Google Scholar 

  26. 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)

    Chapter  Google Scholar 

  27. 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

    Google Scholar 

  28. Gregersen, A.R., Jørgensen, B.N.: Run-time phenomena in dynamic software updating: causes and effects. In: Proceedings of IWPSE-EVOL 2011

    Google Scholar 

  29. Lanza, M., Ducasse, S., Gall, H., Pinzger, M.: CodeCrawler: an information visualization tool for program comprehension. In: Proceedings of ICSE 2005

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Bo Nørregaard Jørgensen .

Editor information

Editors and Affiliations

Rights and permissions

Reprints 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)

Publish with us

Policies and ethics