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.
Supplemental Material
Available for Download
Rubah: DSU for Java on a Stock JVM
- 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 Scholar
- 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 Scholar
Digital Library
- Michael Hicks and Scott M. Nettles. Dynamic software updating. TOPLAS, 2005. Google Scholar
Digital Library
- Iulian Neamtiu, Michael Hicks, Gareth Stoyle, and Manuel Oriol. Practical dynamic software updating for C. In PLDI, 2006. Google Scholar
Digital Library
- Iulian Neamtiu and Michael Hicks. Safe and timely dynamic updates for multi-threaded programs. In PLDI, 2009. Google Scholar
Digital Library
- Christopher Hayden, Edward Smith, Michail Denchev, Michael Hicks, and Jeffrey Foster. Kitsune: efficient, general-purpose dynamic software updating for c. In OOPSLA, 2012. Google Scholar
Digital Library
- Twitter moves from rails to java. http://www.gmarwaha.com/blog/2011/04/11/twitter-moves-from-rails-to-java/, 2011.Google Scholar
- Tobias Ritzau and Jesper Andersson. Dynamic deployment of Java applications. In Java for Embedded Systems Workshop, 2000.Google Scholar
- Thomas Würthinger, Christian Wimmer, and Lukas Stadler. Dynamic code evolution for Java. In PPPJ, 2010. Google Scholar
Digital Library
- Suriya Subramanian, Michael Hicks, and Kathryn McKinley. Dynamic software updates: a VM-centric approach. In PLDI, 2009. Google Scholar
Digital Library
- Luís Pina and Joao Cachopo. DuSTM - Dynamic Software Upgrades using Software Transactional Memory. Technical Report 32/2011, INESC-ID Lisboa, 2011.Google Scholar
- Todd Mytkowicz, Amer Diwan, Matthias Hauswirth, and Peter F. Sweeney. Producing wrong data without doing anything obviously wrong! In ASPLOS XIV, 2009. Google Scholar
Digital Library
- Sheng Liang and Gilad Bracha. Dynamic class loading in the Java(™) virtual machine. In OOPSLA, 1998. Google Scholar
Digital Library
- Kristis Makris and Kyung Dong Ryu. Dynamic and adaptive updates of non-quiescent subsystems in commodity operating system kernels. In EuroSys, 2007. Google Scholar
Digital Library
- Christopher Hayden, Edward Smith, Eric Hardisty, Michael Hicks, and Jeffrey Foster. Evaluating dynamic software update safety using efficient systematic testing. IEEE TSE, 2012. Google Scholar
Digital Library
- Christopher Hayden, Karla Saur, Michael Hicks, and Jeffrey Foster. A study of dynamic software update quiescence for multithreaded programs. In HotSWUp, 2012. Google Scholar
Digital Library
- Kristis Makris and Rida A. Bazzi. Immediate multi-threaded dynamic software updates using stack reconstruction. In USENIX ATC, 2009. Google Scholar
Digital Library
- 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 Scholar
Digital Library
- Richard Jones, Antony Hosking, and Eliot Moss. The Garbage Collection Handbook: The Art of Automatic Memory Management. Chapman & Hall, 2012. Google Scholar
Digital Library
- James Gosling, Bill Joy, Guy Steele, and Gilad Bracha. Java(TM) Language Specification, The (3rd Edition) (Java (Addison-Wesley)). Addison-Wesley Professional, 2005. Google Scholar
Digital Library
- Oracle(TM). Java SE 1.4 Enhancements. http://download.java.net/jdk8/docs/technotes/guides/jpda/enhancements1.4.html.Google Scholar
- Dacapo. http://www.dacapobench.org/.Google Scholar
- 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 Scholar
Digital Library
- 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 Scholar
Digital Library
- ZeroTurnAround. JavaRebel. http://www.zeroturnaround.com/jrebel/.Google Scholar
- Alessandro Orso, Anup Rao, and Mary Jean Harrold. A technique for dynamic updating of java software. In ICSM, 2002. Google Scholar
Digital Library
- Haibo Chen, Jie Yu, Rong Chen, Binyu Zang, and Pen-Chung Yew. Polus: A powerful live updating system. In ICSE, 2007. Google Scholar
Digital Library
Index Terms
Rubah: DSU for Java on a stock JVM
Recommendations
Rubah: DSU for Java on a stock JVM
OOPSLA '14: Proceedings of the 2014 ACM International Conference on Object Oriented Programming Systems Languages & ApplicationsThis 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;...
A java virtual machine architecture for very small devices
Special Issue: Proceedings of the 2003 ACM SIGPLAN conference on Language, compiler, and tool support for embedded systems (San Diego, CA).The smallest complete Java™ virtual machine implementations in use today are based on the CLDC standard and are deployed in mobile phones and PDAs. These implementations require several tens of kilobytes. Smaller Java-like implementations also exist, ...
A java virtual machine architecture for very small devices
LCTES '03: Proceedings of the 2003 ACM SIGPLAN conference on Language, compiler, and tool for embedded systemsThe smallest complete Java™ virtual machine implementations in use today are based on the CLDC standard and are deployed in mobile phones and PDAs. These implementations require several tens of kilobytes. Smaller Java-like implementations also exist, ...







Comments