@article {14683, title = {Dynamic software updates for Java: A VM-centric approach}, journal = {Proceedings of the ACM Conference on Programming Language Design and Implementation (PLDI)}, year = {2009}, month = {2009///}, abstract = {Software evolves to fix bugs and add features, but stopping andrestarting existing programs to take advantage of these changes can be inconvenient and costly. Dynamic software updating (DSU) addresses these problems by updating programs while they run. The challenge is to develop DSU infrastructure that is flexible, safe, and efficient{\textemdash}DSU should enable updates that are likely to occur in practice, and updated programs should be as reliable and as efficient as those started from scratch. This paper presents the design and implementation of a JVM we call JVOLVE that is enhanced with DSU support. The pa- per{\textquoteright}s key insight is that flexible, safe, and efficient DSU can be supported by naturally extending existing VM services. By piggybacking on classloading and garbage collection, JVOLVE can flexibly support additions and replacements of fields and methods anywhere within the class hierarchy, and in a manner that may alter class signatures. By utilizing bytecode verifi- cation and thread synchronization support, JVOLVE can ensure that an applied update will never violate type-safety. Finally, by employing JIT compilation, all DSU-related overhead be- fore or after an update can be effectively eliminated. Using JVOLVE, we successfully applied dynamic continuous updates corresponding to 20 of the 22 releases that occurred over nearly two years{\textquoteright} time, one update per release, for three open-source programs, Jetty web server, JavaEmailServer, and CrossFTP server. Our results indicate that the VM is well-suited to sup- port practical DSU services. }, author = {Subramanian,S. and Hicks, Michael W. and McKinley,K.S.} }