skip to main content
research-article

Rubah: DSU for Java on a stock JVM

Authors Info & Claims
Published:15 October 2014Publication History
Skip Abstract Section

Abstract

This paper presents Rubah, the first dynamic software updating system for Java that: is portable, implemented via libraries and bytecode rewriting on top of a standard JVM; is efficient, imposing essentially no overhead on normal, steady-state execution; is flexible, allowing nearly arbitrary changes to classes between updates; and isnon-disruptive, employing either a novel eager algorithm that transforms the program state with multiple threads, or a novel lazy algorithm that transforms objects as they are demanded, post-update. Requiring little programmer effort, Rubah has been used to dynamically update five long-running applications: the H2 database, the Voldemort key-value store, the Jake2 implementation of the Quake 2 shooter game, the CrossFTP server, and the JavaEmailServer.

Skip Supplemental Material Section

Supplemental Material

References

  1. Eric Bruneton, Romain Lenglet, and Thierry Coupaye. ASM: A code manipulation tool to implement adaptable systems. In In Adaptable and extensible component systems, 2002.Google ScholarGoogle Scholar
  2. Rajesh Nishtala, Hans Fugal, Steven Grimm, Marc Kwiatkowski, Herman Lee, Harry C. Li, Ryan McElroy, Mike Paleczny, Daniel Peek, Paul Saab, David Stafford, Tony Tung, and Venkateshwaran Venkataramani. Scaling memcache at facebook. In USENIX NSDI, 2013. Google ScholarGoogle ScholarDigital LibraryDigital Library
  3. Michael Hicks and Scott M. Nettles. Dynamic software updating. TOPLAS, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. Iulian Neamtiu, Michael Hicks, Gareth Stoyle, and Manuel Oriol. Practical dynamic software updating for C. In PLDI, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. Iulian Neamtiu and Michael Hicks. Safe and timely dynamic updates for multi-threaded programs. In PLDI, 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. Christopher Hayden, Edward Smith, Michail Denchev, Michael Hicks, and Jeffrey Foster. Kitsune: efficient, general-purpose dynamic software updating for c. In OOPSLA, 2012. Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. Twitter moves from rails to java. http://www.gmarwaha.com/blog/2011/04/11/twitter-moves-from-rails-to-java/, 2011.Google ScholarGoogle Scholar
  8. Tobias Ritzau and Jesper Andersson. Dynamic deployment of Java applications. In Java for Embedded Systems Workshop, 2000.Google ScholarGoogle Scholar
  9. Thomas Würthinger, Christian Wimmer, and Lukas Stadler. Dynamic code evolution for Java. In PPPJ, 2010. Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. Suriya Subramanian, Michael Hicks, and Kathryn McKinley. Dynamic software updates: a VM-centric approach. In PLDI, 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. Luís Pina and Joao Cachopo. DuSTM - Dynamic Software Upgrades using Software Transactional Memory. Technical Report 32/2011, INESC-ID Lisboa, 2011.Google ScholarGoogle Scholar
  12. Todd Mytkowicz, Amer Diwan, Matthias Hauswirth, and Peter F. Sweeney. Producing wrong data without doing anything obviously wrong! In ASPLOS XIV, 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. Sheng Liang and Gilad Bracha. Dynamic class loading in the Java(™) virtual machine. In OOPSLA, 1998. Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. Kristis Makris and Kyung Dong Ryu. Dynamic and adaptive updates of non-quiescent subsystems in commodity operating system kernels. In EuroSys, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. Christopher Hayden, Edward Smith, Eric Hardisty, Michael Hicks, and Jeffrey Foster. Evaluating dynamic software update safety using efficient systematic testing. IEEE TSE, 2012. Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. Christopher Hayden, Karla Saur, Michael Hicks, and Jeffrey Foster. A study of dynamic software update quiescence for multithreaded programs. In HotSWUp, 2012. Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. Kristis Makris and Rida A. Bazzi. Immediate multi-threaded dynamic software updates using stack reconstruction. In USENIX ATC, 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. Christopher Hayden, Stephen Magill, Michael Hicks, Nate Foster, and Jeffrey S. Foster. Specifying and verifying the correctness of dynamic software updates. In VSTTE, 2012. Google ScholarGoogle ScholarDigital LibraryDigital Library
  19. Richard Jones, Antony Hosking, and Eliot Moss. The Garbage Collection Handbook: The Art of Automatic Memory Management. Chapman & Hall, 2012. Google ScholarGoogle ScholarDigital LibraryDigital Library
  20. James Gosling, Bill Joy, Guy Steele, and Gilad Bracha. Java(TM) Language Specification, The (3rd Edition) (Java (Addison-Wesley)). Addison-Wesley Professional, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  21. Oracle(TM). Java SE 1.4 Enhancements. http://download.java.net/jdk8/docs/technotes/guides/jpda/enhancements1.4.html.Google ScholarGoogle Scholar
  22. Dacapo. http://www.dacapobench.org/.Google ScholarGoogle Scholar
  23. Nathan Bronson, Zach Amsden, George Cabrera, Prasad Chakka, Peter Dimov, Hui Ding, Jack Ferris, Anthony Giardullo, Sachin Kulkarni, Harry Li, Mark Marchukov, Dmitri Petrov, Lovro Puzar, Yee Jiun Song, and Venkat Venkataramani. Tao: Facebook's distributed data store for the social graph. In USENIX ATC, 2013. Google ScholarGoogle ScholarDigital LibraryDigital Library
  24. Misha Dimitriev and Malcolm P. Atkinson. Evolutionary data conversion in the PJama persistent language. In Proceedings of the Workshop on Object-Oriented Technology, 1999. Google ScholarGoogle ScholarDigital LibraryDigital Library
  25. ZeroTurnAround. JavaRebel. http://www.zeroturnaround.com/jrebel/.Google ScholarGoogle Scholar
  26. Alessandro Orso, Anup Rao, and Mary Jean Harrold. A technique for dynamic updating of java software. In ICSM, 2002. Google ScholarGoogle ScholarDigital LibraryDigital Library
  27. Haibo Chen, Jie Yu, Rong Chen, Binyu Zang, and Pen-Chung Yew. Polus: A powerful live updating system. In ICSE, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. Rubah: DSU for Java on a stock JVM

          Recommendations

          Comments

          Login options

          Check if you have access through your login credentials or your institution to get full access on this article.

          Sign in

          Full Access

          • Published in

            cover image ACM SIGPLAN Notices
            ACM SIGPLAN Notices  Volume 49, Issue 10
            OOPSLA '14
            October 2014
            907 pages
            ISSN:0362-1340
            EISSN:1558-1160
            DOI:10.1145/2714064
            • Editor:
            • Andy Gill
            Issue’s Table of Contents
            • cover image ACM Conferences
              OOPSLA '14: Proceedings of the 2014 ACM International Conference on Object Oriented Programming Systems Languages & Applications
              October 2014
              946 pages
              ISBN:9781450325851
              DOI:10.1145/2660193

            Copyright © 2014 ACM

            Publisher

            Association for Computing Machinery

            New York, NY, United States

            Publication History

            • Published: 15 October 2014

            Check for updates

            Qualifiers

            • research-article

          PDF Format

          View or Download as a PDF file.

          PDF

          eReader

          View online with eReader.

          eReader
          About Cookies On This Site

          We use cookies to ensure that we give you the best experience on our website.

          Learn more

          Got it!