Dynamic software updating is critical for many systems that must provide continuous service. In addition, the Java language
is gaining increasing popularity in developing distributed systems. Most previous works on updating are concerned with safely
updating one class every time. It has many limitations on updating classes, such as not allowing deleting methods invoked
in other classes. In this paper, the update transaction is purposed to dynamically update the class set, and some of its properties
are discussed, such as atomicity, consistency, isolation, and durability (ACID). Then the property of type-safety is proven
formally. In order to update without changing the Java Virtual Machine (JVM) and the Java programming language, this paper
proposes a new implementation method. The method makes use of the Java class loading mechanism and reflection mechanism. We
also present how to design an updatable Java program and a Java updating program. At the end of the paper, an experiment is
made for analysis.
Keywords dynamic software update - update transaction - Java language - program design