|
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
Note: OCR errors may be found in this Reference List extracted from the full text article. ACM has opted to expose the complete List rather than only correct and linked references.
 |
1
|
Bowen Alpern , C. R. Attanasio , Anthony Cocchi , Derek Lieber , Stephen Smith , Ton Ngo , John J. Barton , Susan Flynn Hummel , Janice C. Sheperd , Mark Mergen, Implementing jalapeño in Java, Proceedings of the 14th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications, p.314-324, November 01-05, 1999, Denver, Colorado, United States
|
| |
2
|
Gautam Altekar , Ilya Bagrak , Paul Burstein , Andrew Schultz, OPUS: online patches and updates for security, Proceedings of the 14th conference on USENIX Security Symposium, p.19-19, July 31-August 05, 2005, Baltimore, MD
|
 |
3
|
|
| |
4
|
|
| |
5
|
Andrew Baumann , Gernot Heiser , Jonathan Appavoo , Dilma Da Silva , Orran Krieger , Robert W. Wisniewski , Jeremy Kerr, Providing dynamic update in an operating system, Proceedings of the annual conference on USENIX Annual Technical Conference, p.32-32, April 10-15, 2005, Anaheim, CA
|
| |
6
|
Andrew Baumann , Jonathan Appavoo , Robert W. Wisniewski , Dilma Da Silva , Orran Krieger , Gernot Heiser, Reboots are for hardware: challenges and solutions to updating an operating system on the fly, 2007 USENIX Annual Technical Conference on Proceedings of the USENIX Annual Technical Conference, p.1-14, June 17-22, 2007, Santa Clara, CA
|
| |
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
|
|
| |
9
|
|
 |
10
|
Stephen M. Blackburn , Kathryn S. McKinley , Robin Garner , Chris Hoffmann , Asjad M. Khan , Rotem Bentzur , Amer Diwan , Daniel Feinberg , Daniel Frampton , Samuel Z. Guyer , Martin Hirzel , Antony Hosking , Maria Jump , Han Lee , J. Eliot B. Moss , Aashish Phansalkar , Darko Stefanovik , Thomas VanDrunen , Daniel von Dincklage , Ben Wiedermann, Wake up and smell the coffee: evaluation methodology for the 21st century, Communications of the ACM, v.51 n.8, August 2008
[doi> 10.1145/1378704.1378723]
|
 |
11
|
Chandrasekhar Boyapati , Barbara Liskov , Liuba Shrira , Chuang-Hue Moh , Steven Richman, Lazy modular upgrades in persistent object stores, Proceedings of the 18th annual ACM SIGPLAN conference on Object-oriented programing, systems, languages, and applications, October 26-30, 2003, Anaheim, California, USA
|
 |
12
|
Haibo Chen , Rong Chen , Fengzhe Zhang , Binyu Zang , Pen-Chung Yew, Live updating operating systems using virtualization, Proceedings of the 2nd international conference on Virtual execution environments, June 14-16, 2006, Ottawa, Ontario, Canada
[doi> 10.1145/1134760.1134767]
|
| |
13
|
|
| |
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
|
|
| |
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
|
|
| |
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
|
|
| |
22
|
|
| |
23
|
|
| |
24
|
Kristis Makris and Rida Bazzi. Multi-threaded dynamic software updates using stack reconstruction. In Proc. USENIX Annual Technical Conference, 2009.
|
 |
25
|
|
| |
26
|
|
| |
27
|
Sun Microsystems. Java Platform Debugger Architecture, 2004. This supports class replacement. See http://java.sun.com/javase/6/docs/technotes/guides/jpda/.
|
 |
28
|
|
 |
29
|
|
 |
30
|
|
 |
31
|
Iulian Neamtiu , Michael Hicks , Jeffrey S. Foster , Polyvios Pratikakis, Contextual effects for version-consistent dynamic software updating and safe concurrent programming, Proceedings of the 35th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages, January 07-12, 2008, San Francisco, California, USA
|
 |
32
|
Iulian Neamtiu , Michael Hicks , Gareth Stoyle , Manuel Oriol, Practical dynamic software updating for C, Proceedings of the 2006 ACM SIGPLAN conference on Programming language design and implementation, June 11-14, 2006, Ottawa, Ontario, Canada
|
 |
33
|
Angela Nicoara , Gustavo Alonso , Timothy Roscoe, Controlled, systematic, and efficient code replacement for running java programs, Proceedings of the 3rd ACM SIGOPS/EuroSys European Conference on Computer Systems 2008, April 01-04, 2008, Glasgow, Scotland UK
|
| |
34
|
David Oppenheimer , Aaron Brown , James Beck , Daniel Hettena , Jon Kuroda , Noah Treuhaft , David A. Patterson , Katherine Yelick, ROC-1: Hardware Support for Recovery-Oriented Computing, IEEE Transactions on Computers, v.51 n.2, p.100-107, February 2002
[doi> 10.1109/12.980002]
|
| |
35
|
|
| |
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
|
|
 |
41
|
|
| |
42
|
The Jikes RVM Core Team. VM performance comparisons, 2007. http://dacapo.anu.edu.au/regression/perf/head.html.
|
| |
43
|
|
| |
44
|
Benjamin Zorn. Personal communication, based on experience with Microsoft Windows customers, August 2005.
|
|