Safe upgrading without restarting

The distributed development and maintenance paradigm for component delivery is fraught with problems. One wants a relationship between developers and clients that is autonomous and anonymous. Yet components written in languages such as C++ require the recompilation of all dependent subsystems when a new version of a component is released. The design of Java's binary format has side-stepped this constraint, removing the need for total recompilation with each change. But the potential is not fulfilled if programs have to be stopped to swap in each new component. This paper describes a framework that allows Java programs to be dynamically upgraded. Its key purpose is to allow libraries that are safe to replace existing libraries without adversely affecting running programs. The framework provides developers with a mechanism to release their libraries and provides clients with the surety of only upgrading when it is safe to do so.

[1]  Sophia Drossopoulou,et al.  Flexible Models for Dynamic Linking , 2003, ESOP.

[2]  Sophia Drossopoulou,et al.  What is Java binary compatibility? , 1998, OOPSLA '98.

[3]  Walter F. Tichy,et al.  Distributed Configuration Management via Java and the World Wide Web , 1997, SCM.

[4]  Robert Wahbe,et al.  Adaptable Binary Programs , 1995, USENIX.

[5]  Guy L. Steele,et al.  The Java Language Specification , 1996 .

[6]  Sophia Drossopoulou,et al.  A fragment calculus-towards a model of separate compilation, linking and binary compatibility , 1999, Proceedings. 14th Symposium on Logic in Computer Science (Cat. No. PR00158).

[7]  Geoff A. Cohen,et al.  Automatic Program Transformation with JOIE , 1998, USENIX Annual Technical Conference.

[8]  Jonathan E. Cook,et al.  Highly reliable upgrading of components , 1999, Proceedings of the 1999 International Conference on Software Engineering (IEEE Cat. No.99CB37002).

[9]  Urs Hölzle,et al.  Binary Component Adaptation , 1997, ECOOP.

[10]  Dennis Heimbigner,et al.  Versioned software architecture , 1998, ISAW '98.

[11]  Peter Sewell Modules, abstract types, and distributed versioning , 2001, POPL '01.

[12]  Susan Eisenbach,et al.  Changing Java programs , 2001, Proceedings IEEE International Conference on Software Maintenance. ICSM 2001.

[13]  Ira R. Forman,et al.  Release-to-release binary compatibility in SOM , 1995, OOPSLA.

[14]  Mira Mezini,et al.  Adaptive plug-and-play components for evolutionary software development , 1998, OOPSLA '98.

[15]  Kim Mens,et al.  Vrije Universiteit Brussel Faculteit Wetenschappen Reuse Contracts: Managing the Evolution of Reusable Assets Reuse Contracts: Managing the Evolution of Reusable Assets , 2022 .

[16]  Juha Lindfors,et al.  JMX: Managing J2EE with Java Management Extensions , 2002 .

[17]  Peter H. Golde,et al.  C# Language Specification , 2003 .

[18]  Hausi A. Müller,et al.  A framework for live software upgrade , 2002, 13th International Symposium on Software Reliability Engineering, 2002. Proceedings..

[19]  Susan Eisenbach,et al.  Evolution of Distributed Java Programs , 2002, Component Deployment.