Rubah: Dynamic Software Updating for Java on a Stock JVM

This talk 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 is non-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 SQL database; the Voldemort key-value store, which is used by LinkedIn; the Jake2 implementation of the Quake 2 shooter game; the CrossFTP server; and the JavaEmailServer.

Luís Pina is a final year PhD student at Technical University of Lisbon. Since 2012, he has been working with the PLUM group (programming languages) at University of Maryland. His main research interest is Dynamic Software Updating, which is the topic of his dissertation. Recently, he became interested in program analysis and understanding, and joined ongoing research on reasoning about sensitive information flow on Android apps with symbolic execution. He is also interested in concurrent systems/algorithms and runtime systems for high-level languages.