@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.}
}
