skip to main content
10.1145/1542476.1542478acmconferencesArticle/Chapter ViewAbstractPublication PagespldiConference Proceedingsconference-collections
research-article

Dynamic software updates: a VM-centric approach

Published: 15 June 2009 Publication History

Abstract

Software evolves to fix bugs and add features. Stopping and restarting programs to apply changes is inconvenient and often costly. Dynamic software updating (DSU) addresses this problem by updating programs while they execute, but existing DSU systems for managed languages do not support many updates that occur in practice and are inefficient. This paper presents the design and implementation of Jvolve, a DSU-enhanced Java VM. Updated programs may add, delete, and replace fields and methods anywhere within the class hierarchy. Jvolve implements these updates by adding to and coordinating VM classloading, just-in-time compilation, scheduling, return barriers, on-stack replacement, and garbage collection. Jvolve, is safe: its use of bytecode verification and VM thread synchronization ensures that an update will always produce type-correct executions. Jvolve is flexible: it can support 20 of 22 updates to three open-source programs--Jetty web server, JavaEmailServer, and CrossFTP server--based on actual releases occurring over 1 to 2 years. Jvolve is efficient: performance experiments show that incurs no overhead during steady-state execution. These results demonstrate that this work is a significant step towards practical support for dynamic updates in virtual machines for managed languages.

References

[1]
B. Alpern, D. Attanasio, J J. Barton, A. Cocchi, S. Flynn Hummel, D. Lieber, M. Mergen, T. Ngo, J Shepherd, and S. Smith. Implementing Jalapeño in Java. In Proc. OOPSLA, 1999.
[2]
Gautam Altekar, Ilya Bagrak, Paul Burstein, and Andrew Schultz. OPUS: Online patches and updates for security. In Proc. USENIX Security, 2005.
[3]
Jeff Arnold and Frans Kaashoek. Ksplice: Automatic rebootless kernel updates. In Proc. EuroSys, 2009.
[4]
Miles Barr and Susan Eisenbach. Safe upgrading without restarting. In Proc. ICSM, 2003.
[5]
A. Baumann, J. Appavoo, D. Da Silva, J. Kerr, O. Krieger, and R. W. Wisniewski. Providing dynamic update in an operating system. In Proc. USENIX Annual Technical Conference, 2005.
[6]
Andrew Baumann, Jonathan Appavoo, Robert W. Wisniewski, Dilma Da Silva, et al. Reboots are for hardware: challenges and solutions to updating an operating system on the fly. In Proc. USENIX Annual Technical Conference, 2007.
[7]
Gavin Bierman, Michael Hicks, Peter Sewell, and Gareth Stoyle. Formalizing dynamic software updating. In Proc. Second International Workshop on Unanticipated Software Evolution, 2003.
[8]
Gavin Bierman, Matthew Parkinson, and James Noble. UpgradeJ: Incremental typechecking for class upgrades. In Proc. ECOOP, pages 235--259, 2008.
[9]
S. M. Blackburn, P. Cheng, and K. S. McKinley. Oil and water? High performance garbage collection in Java with MMTk. In Proc. ICSE, 2004.
[10]
S. M. Blackburn, K. S. McKinley, R. Garner, C. Hoffman, A. M. Khan, R. Bentzur, A. Diwan, D. Feinberg, D. Frampton, S. Z. Guyer, M. Hirzel, A. Hosking, M. Jump, H. Lee, J. E. B. Moss, A. Phansalkar, D. Stefanovi, T. VanDrunen, D. von Dincklage, and B. Wiedermann. Wake up and smell the coffee: Evaluation methodology for the 21st century. Communications of the ACM, 51(8):83--89, August 2008.
[11]
Chandrasekhar Boyapati, Barbara Liskov, Liuba Shrira, Chuang-Hue Moh, and Steven Richman. Lazy modular upgrades in persistent object stores. In Proc. OOPSLA, 2003.
[12]
Haibo Chen, Rong Chen, Fengzhe Zhang, Binyu Zang, and Pen-Chung Yew. Live updating operating systems using virtualization. In Proc. VEE, June 2006.
[13]
Haibo Chen, Jie Yu, Rong Chen, Binyu Zang, and Pen-Chung Yew. POLUS: A POwerful Live Updating System. In Proc. ICSE, 2007.
[14]
Microsoft Corporation. Edit and continue. http://msdn2.microsoft.com/en-us/library/bcew296c.aspx, 2008.
[15]
M. Dmitriev. Towards flexible and safe technology for runtime evolution of java language applications. In Proc. Workshop on Engineering Complex Object-Oriented Systems for Evolution, 2001.
[16]
Dominic Duggan. Type-based hot swapping of running modules. Acta Inf., 41(4-5):181--220, 2005.
[17]
Marc Eaddy and Steven Feiner. Multi-language edit-and-continue for the masses. Technical Report CUCS-015-05, Columbia University Department of Computer Science, April 2005.
[18]
Torbjörn Ekman and Görel Hedin. The Jastadd extensible Java compiler. In Proc. OOPSLA, 2007.
[19]
Slashdot forum. Patch the kernel without reboots. http://tech.slashdot.org/article.pl?sid=08/04/24/1334234, April 2008. Consists of a lively technical debate about the benefits and drawbacks of in-place dynamic updates vs. using redundant hardware.
[20]
Stephen Gilmore, Dilsun Kirli, and Chris Walton. Dynamic ML without dynamic types. Technical Report ECS-LFCS-97-378, LFCS, University of Edinburgh, 1997.
[21]
Deepak Gupta, Pankaj Jalote, and Gautam Barua. A formal framework for on-line software version change. IEEE Trans. Softw. Eng., 22(2):120--131, 1996.
[22]
G. Hjálmtýsson and R. Gray. Dynamic C classes, a lightweight mechanism to update code in a running program. In Proc. USENIX Annual Technical Conference, 1998.
[23]
Yueh-Feng Lee and Ruei-Chuan Chang. Hotswapping linux kernel modules. J. Syst. Softw., 79(2):163--175, 2006.
[24]
Kristis Makris and Rida Bazzi. Multi-threaded dynamic software updates using stack reconstruction. In Proc. USENIX Annual Technical Conference, 2009.
[25]
Kristis Makris and Kyung Dong Ryu. Dynamic and adaptive updates of non-quiescent subsystems in commodity operating system kernels. In Proc. EuroSys, March 2007.
[26]
Scott Malabarba, Raju Pandey, Jeff Gragg, Earl Barr, and J. Fritz Barnes. Runtime support for type-safe dynamic Java classes. In Proc. ECOOP, 2000.
[27]
Sun Microsystems. Java Platform Debugger Architecture, 2004. This supports class replacement. See http://java.sun.com/javase/6/docs/technotes/guides/jpda/.
[28]
Marco Milazzo, Giuseppe Pappalardo, Emiliano Tramontana, and Giuseppe Ursino. Handling run-time updates in distributed applications. In Proc. SAC, 2005.
[29]
Iulian Neamtiu, Jeffrey S. Foster, and Michael Hicks. Understanding source code evolution using abstract syntax tree matching. In Proc. International Workshop on Mining Software Repositories, 2005.
[30]
Iulian Neamtiu and Michael Hicks. Safe and timely dynamic updates for multi-threaded programs. In Proc. PLDI, 2009.
[31]
Iulian Neamtiu, Michael Hicks, Jeffrey S. Foster, and Polyvios Pratikakis. Contextual effects for version-consistent dynamic software updating and safe concurrent programming. In Proc. POPL, 2008.
[32]
Iulian Neamtiu, Michael Hicks, Gareth Stoyle, and Manuel Oriol. Practical dynamic software updating for C. In Proc. PLDI, 2006.
[33]
Angela Nicoara, Gustavo Alonso, and Timothy Roscoe. Controlled, systematic, and efficient code replacement for running Java programs. In Proc. Eurosys, 2008.
[34]
D. Oppenheimer, A. Brown, J. Beck, D. Hettena, J. Kuroda, N. Treuhaft, D. A. Patterson, and K. Yelick. Roc-1: Hardware support for recovery-oriented computing. IEEE Trans. Comput., 51(2):100--107, 2002.
[35]
Alessandro Orso, Anup Rao, and Mary Jean Harrold. A technique for dynamic updating of Java software. In Proc. ICSM, 2002.
[36]
J. W. Pratt and J. D. Gibbons. Concepts of Nonparametric Theory. Springer-Verlag, 1981.
[37]
Tobias Ritzau and Jesper Andersson. Dynamic deployment of Java applications. In Proc. Java for Embedded Systems Workshop, 2000.
[38]
D. Scott. Assessing the Costs of Application Downtime. Gartner Group, 1998.
[39]
C. Soules, J. Appavoo, K. Hui, D. Da Silva, G. Ganger, O. Krieger, M. Stumm, R. Wisniewski, M. Auslander, M. Ostrowski, B. Rosenburg, and J. Xenidis. System support for online reconfiguration. In Proc. USENIX Annual Technical Conference, June 2003.
[40]
Gareth Stoyle, Michael Hicks, Gavin Bierman, Peter Sewell, and Iulian Neamtiu. phMutatis Mutandis: Safe and flexible dynamic software updating (full version). TOPLAS, 29(4):22, August 2007.
[41]
Ewan Tempero, Gavin Bierman, James Noble, and Matthew Parkinson. From Java to UpgradeJ: an empirical study. In Proc. International Workshop on Hot Topics in Software Upgrades (HotSWUp), 2008.
[42]
The Jikes RVM Core Team. VM performance comparisons, 2007. http://dacapo.anu.edu.au/regression/perf/head.html.
[43]
Taiichi Yuasa. Design and implementation of Kyoto Common Lisp. Journal of Information Processing, 13(3):284--295, 1990.
[44]
Benjamin Zorn. Personal communication, based on experience with Microsoft Windows customers, August 2005.

Cited By

View all
  • (2024)Active DSU: Dynamic Software Updates for Active FunctionsProceedings of the 2024 ACM SIGPLAN International Symposium on New Ideas, New Paradigms, and Reflections on Programming and Software10.1145/3689492.3690046(26-37)Online publication date: 17-Oct-2024
  • (2024)Fast state transfer for updates and live migration of industrial controller runtimes in container orchestration systemsJournal of Systems and Software10.1016/j.jss.2024.112004211(112004)Online publication date: May-2024
  • (2022)Change is the only constantProceedings of the 44th International Conference on Software Engineering10.1145/3510003.3510065(350-362)Online publication date: 21-May-2022
  • Show More Cited By

Index Terms

  1. Dynamic software updates: a VM-centric approach

    Recommendations

    Comments

    Please enable JavaScript to view thecomments powered by Disqus.

    Information & Contributors

    Information

    Published In

    cover image ACM Conferences
    PLDI '09: Proceedings of the 30th ACM SIGPLAN Conference on Programming Language Design and Implementation
    June 2009
    492 pages
    ISBN:9781605583921
    DOI:10.1145/1542476
    • cover image ACM SIGPLAN Notices
      ACM SIGPLAN Notices  Volume 44, Issue 6
      PLDI '09
      June 2009
      478 pages
      ISSN:0362-1340
      EISSN:1558-1160
      DOI:10.1145/1543135
      Issue’s Table of Contents
    Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

    Sponsors

    Publisher

    Association for Computing Machinery

    New York, NY, United States

    Publication History

    Published: 15 June 2009

    Permissions

    Request permissions for this article.

    Check for updates

    Author Tags

    1. dynamic software updating
    2. garbage collection
    3. virtual machine technology

    Qualifiers

    • Research-article

    Conference

    PLDI '09
    Sponsor:

    Acceptance Rates

    Overall Acceptance Rate 406 of 2,067 submissions, 20%

    Contributors

    Other Metrics

    Bibliometrics & Citations

    Bibliometrics

    Article Metrics

    • Downloads (Last 12 months)21
    • Downloads (Last 6 weeks)1
    Reflects downloads up to 24 Oct 2024

    Other Metrics

    Citations

    Cited By

    View all
    • (2024)Active DSU: Dynamic Software Updates for Active FunctionsProceedings of the 2024 ACM SIGPLAN International Symposium on New Ideas, New Paradigms, and Reflections on Programming and Software10.1145/3689492.3690046(26-37)Online publication date: 17-Oct-2024
    • (2024)Fast state transfer for updates and live migration of industrial controller runtimes in container orchestration systemsJournal of Systems and Software10.1016/j.jss.2024.112004211(112004)Online publication date: May-2024
    • (2022)Change is the only constantProceedings of the 44th International Conference on Software Engineering10.1145/3510003.3510065(350-362)Online publication date: 21-May-2022
    • (2022)TOAST: Automated Testing of Object Transformers in Dynamic Software UpdatesJournal of Computer Science and Technology10.1007/s11390-021-1693-137:1(50-66)Online publication date: 31-Jan-2022
    • (2021)Hotfixing misuses of crypto APIs in Java programsProceedings of the 31st Annual International Conference on Computer Science and Software Engineering10.5555/3507788.3507799(73-82)Online publication date: 22-Nov-2021
    • (2021)Synthesizing Object State Transformers for Dynamic Software Updates2021 IEEE/ACM 43rd International Conference on Software Engineering (ICSE)10.1109/ICSE43902.2021.00103(1111-1122)Online publication date: May-2021
    • (2021)PASTA: Synthesizing Object State Transformers for Dynamic Software Updates2021 IEEE/ACM 43rd International Conference on Software Engineering: Companion Proceedings (ICSE-Companion)10.1109/ICSE-Companion52605.2021.00094(211-212)Online publication date: May-2021
    • (2021)A Programming Language for Sound Self-Adaptive Systems2021 IEEE International Conference on Autonomic Computing and Self-Organizing Systems (ACSOS)10.1109/ACSOS52086.2021.00036(145-150)Online publication date: Sep-2021
    • (2020)Testing for Dynamic Software Update: An Object-State-Oriented ApproachProceedings of the 12th Asia-Pacific Symposium on Internetware10.1145/3457913.3457942(41-50)Online publication date: 1-Nov-2020
    • (2020)Dynamic software updating: a systematic mapping studyIET Software10.1049/iet-sen.2019.020114:5(468-481)Online publication date: 2-Sep-2020
    • Show More Cited By

    View Options

    Get Access

    Login options

    View options

    PDF

    View or Download as a PDF file.

    PDF

    eReader

    View online with eReader.

    eReader

    Media

    Figures

    Other

    Tables

    Share

    Share

    Share this Publication link

    Share on social media