Patent ID: 8707287

Claim:
A method for transparent runtime switching of live objects of a previous version of a class, as present in an actively running computer system, into surrogate objects for corresponding objects of a new version of the class that has been dynamically loaded after the live objects were instantiated from a previous version of the class, wherein, object identity and class type assignability are shared between the surrogate objects and their co-existing live objects of the previous version of the class, the method comprising: providing a software update, wherein the software update comprises byte-code for a change set of class definitions that constitute the difference between the previous version of the class in the actively running computer system and the new version of the class; performing a non-blocking software update of the actively running computer system by transparently switching behavior of the currently live objects instantiated from the class in the change set to become un-initialized surrogates for future on-demand instantiated corresponding objects of a new class definition; performing pre-boot transformations of Virtual Machine specific bootstrap classes, to prepare the bootstrap classes for future updates to application sub-classes of the bootstrap classes, by injecting byte-code into the bootstrap classes so that extended and/or overridden behavior, as defined by updated subclasses, are effectuated for already instantiated objects of former versions of the bootstrap classes; executing an application instance in which the transformed bootstrap classes constitute a new set of Virtual Machine bootstrap classes for the application instance; intercepting loading of byte-code of the class loaded into the Virtual Machine and once the class loading is initiated, in successive phases, transforming the byte-code of the class to enable shared object identity and class type identity for correspondent co-existent objects and the class; between alternatives: transforming a system class definition on-demand, to prepare the system class for future updates of application sub-classes of the system class, by injecting byte-code into the system class so that extended and/or overridden behavior, as defined by updated subclasses, are effectuated for already instantiated objects of former versions of the updated subclasses; and transforming an application class to make it update-enabled by injecting byte-code into the application class itself enabling run-time switching of the application class and instances hereof to become a surrogate class for future corresponding objects of the application class, to which the identity and state are automatically transferred in a non-blocking fashion.