Safe class and data evolution in large and long-lived Java applications

There is a growing class of applications implemented in object-oriented languages that are large and complex, that exploit object persistence, and need to run uninterrupted for long periods of time. Development and maintenance of such applications can present challenges in the following interrelated areas: consistent and scalable evolution of persistent data and code, optimal build management, and runtime changes to applications. The research presented in this thesis addresses the above issues. Since the Java[tm] programming language is becoming the increasingly popular platform for implementing large and long-lived applications, it was chosen for experiments.

[1]  Simon R. Monk,et al.  A model for schema evolution in object-oriented database systems , 1993 .

[2]  Michel Léonard,et al.  Multiobjects to Ease Schema Evolution in an OODBMS , 1998, ER.

[3]  Francisco Charte Ojeda C++ Builder 5 , 2000 .

[4]  Shigeru Chiba,et al.  Load-Time Structural Reflection in Java , 2000, ECOOP.

[5]  Erik Odberg,et al.  MultiPerspectives: Object Evolution and Schema Modification Management for Object-Oriented Databases , 1995 .

[6]  Michael L. Van de Vanter Coordinated Editing of Versioned Packages in the JP Programming Environment , 1998, SCM.

[7]  J. Ousterhout An Introduction To Tcl and Tk , 1997 .

[8]  Jay Banerjee,et al.  Data model issues for object-oriented applications , 1987, TOIS.

[9]  John Rosenberg,et al.  Grasshopper: An Orthogonally Persistent Operating System , 1994, Comput. Syst..

[10]  Satoshi Matsuoka,et al.  OpenJIT: An Open-Ended, Reflective JIT Compiler Framework for Java , 2000, ECOOP.

[11]  Ifor Williams,et al.  The design and evaluation of a high-performance smalltalk system , 1988 .

[12]  Won Kim,et al.  Versions of Schema for Object-Oriented Databases , 1988, VLDB.

[13]  Robert Gray,et al.  Dynamic C++ Classes - A Lightweight Mechanism to Update Code in a Running Program , 1998, USENIX Annual Technical Conference.

[14]  Geoffrey Phipps Comparing Observed Bug and Productivity Rates for Java and C++ , 1999, Softw. Pract. Exp..

[15]  Bharat Bhargava,et al.  Advanced Database Systems , 1993, Lecture Notes in Computer Science.

[16]  Ian Sommerville,et al.  Schema evolution in OODBs using class versioning , 1993, SGMD.

[17]  Malcolm P. Atkinson,et al.  Issues Raised by Three Years of Developing PJama: An Orthogonally Persistent Platform for Java , 1999, ICDT.

[18]  Toshiaki Yasue,et al.  Overview of the IBM Java Just-in-Time Compiler , 2000, IBM Syst. J..

[19]  Adele Goldberg,et al.  Smalltalk-80 - the interactive programming environment , 1984 .

[20]  Urs Hölzle,et al.  Adaptive optimization for self: reconciling high performance with exploratory programming , 1994 .

[21]  Antonios Printezis,et al.  Management of long-running high-performance persistent object stores , 2000 .

[22]  Fabrizio Ferrandina,et al.  Schema and Database Evolution in the O2 Object Database System , 1995, VLDB.

[23]  David Jordan,et al.  The Object Database Standard: ODMG 2.0 , 1997 .

[24]  Malcolm P. Atkinson,et al.  Persistence and Java - A Balancing Act , 2000, Objects and Databases.

[25]  Mahadev Satyanarayanan,et al.  Lightweight recoverable virtual memory , 1993, SOSP '93.

[26]  D. Sjøberg,et al.  Quantifying schema evolution , 1993, Inf. Softw. Technol..

[27]  Susan Spence,et al.  PJRMI: remote method invocation for a persistent system , 1999, Proceedings of the International Symposium on Distributed Objects and Applications.

[28]  Jack A. Orenstein,et al.  The ObjectStore database system , 1991, CACM.

[29]  Malcolm P. Atkinson,et al.  A review of the rationale and architectures of PJama - a durable, flexible, evolvable and scalable orthogonally persistent programming platform , 2000, SMLI TR.

[30]  Earl T. Barr,et al.  Runtime Support for Type-Safe Dynamic Java Classes , 2000, ECOOP.

[31]  Jack Trout,et al.  The Power Of Simplicity , 1998 .

[32]  Alex Garthwaite,et al.  The GC Interface in the EVM 1 , 1998 .

[33]  L. Peter Deutsch,et al.  Efficient implementation of the smalltalk-80 system , 1984, POPL.

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

[35]  David Robson,et al.  Smalltalk-80: The Language and Its Implementation , 1983 .

[36]  Peter Sawyer,et al.  Evaluation for Evolution: How Well Commercial Systems Do , 1999, ECOOP Workshops.

[37]  Malcolm P. Atkinson Programming Languages and Databases , 1978, VLDB.

[38]  Jay Banerjee,et al.  Semantics and implementation of schema evolution in object-oriented databases , 1987, SIGMOD '87.

[39]  Ian Sommerville,et al.  A Model for Versioning of Classes in Object-Oriented Databases , 1992, BNCOD.

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

[41]  Stephen Slade Object-oriented common LISP , 1997 .

[42]  Robert W. Schwanke,et al.  Cross references are features , 1989, SCM.

[43]  Michael L. Van De Vanter,et al.  Software configuration management in an object oriented database , 1995 .

[44]  Stuart I. Feldman,et al.  Make — a program for maintaining computer programs , 1979, Softw. Pract. Exp..

[45]  Dag I. K. Sjoberg Thesaurus-based methodologies and tools for maintaining persistent application systems , 1993 .

[46]  A. Nico Habermann,et al.  Beyond schema evolution to database reorganization , 1990, OOPSLA/ECOOP '90.

[47]  Ronald Morrison,et al.  An Approach to Persistent Programming , 1989, Comput. J..

[48]  Frank Yellin,et al.  The Java Virtual Machine Specification , 1996 .

[49]  Gilad Bracha,et al.  Strongtalk: typechecking Smalltalk in a production environment , 1993, OOPSLA '93.

[50]  Hans-Juergen Boehm,et al.  Garbage collection in an uncooperative environment , 1988, Softw. Pract. Exp..

[51]  Erik Odberg,et al.  Category Classes: Flexible Classification and Evolution in Object-Oriented Databases , 1994, CAiSE.

[52]  Gail E. Kaiser,et al.  Smarter recompilation , 1988, TOPL.

[53]  V. Rich Personal communication , 1989, Nature.

[54]  Suad Alagic,et al.  Type-checking OQL queries in the ODMG type systems , 1999, TODS.

[55]  Malcolm P. Atkinson,et al.  PS-algol: an algol with a persistent heap , 1982, SIGP.

[56]  Brian T. Lewis,et al.  Architecture of the PEVM: A High-Performance Orthogonally Persistent Java Virtual Machine , 2000, POS.

[57]  Erik Odberg A Global Perspective of Schema Modification Management for Object-Oriented Databases , 1994, POS.

[58]  Marie-Jo Bellosta,et al.  Supporting Exceptions to Behavioral Schema Consistency to Ease Schema Evolution in OODBMS , 1994 .

[59]  Malcolm P. Atkinson,et al.  Orthogonal Persistence for Java? - A Mid-term Report , 1998, POS/PJW.

[60]  Hamid Pirahesh,et al.  ARIES: a transaction recovery method supporting fine-granularity locking and partial rollbacks using write-ahead logging , 1998 .

[61]  Suad Alagic,et al.  The ODMG object model: does it make sense? , 1997, OOPSLA '97.

[62]  Malcolm P. Atkinson,et al.  Main-Memory Management to support Orthogonal Persistence for Java , 1997 .

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

[64]  Randall B. Smith,et al.  SELF: The power of simplicity , 1987, OOPSLA '87.

[65]  Bowen Alpern,et al.  Implementing jalapeño in Java , 1999, OOPSLA '99.

[66]  Vivek Sarkar,et al.  Jalape~ No | a Compiler-supported Java Tm Virtual Machine for Servers , 1999 .

[67]  Tobias Murer,et al.  Replacing copies with connections: managing software across the virtual organization , 1999, Proceedings. IEEE 8th International Workshops on Enabling Technologies: Infrastructure for Collaborative Enterprises (WET ICE'99).

[68]  David Detlefs,et al.  Garbage collection and local variable type-precision and liveness in Java virtual machines , 1998, PLDI.

[69]  Malcolm P. Atkinson,et al.  Evaluating Usability Aspects of PJama Based on Source Code Measurements , 1998, POS/PJW.

[70]  Richard C. H. Connor,et al.  The Napier88 Reference Manual , 1997 .

[71]  Tony Printezis Analysing a Simple Disk Garbage Collector , 1996 .

[72]  Michel Léonard,et al.  Evolution Features of the F2 OODBMS , 1995, DASFAA.

[73]  James Gosling The Java Language Specification - Second Edition , 2000 .

[74]  Fabrizio Ferrandina,et al.  An Integrated Approach to Schema Evolution for Object Databases , 1996, OOIS.

[75]  Rolf Adams,et al.  The cost of selective recompilation and environment processing , 1994, TSEM.

[76]  Geoffrey Phipps Comparing observed bug and productivity rates for Java and C++ , 1999 .

[77]  Awais Rashid,et al.  A database evolution approach for object-oriented databases , 2001, Proceedings IEEE International Conference on Software Maintenance. ICSM 2001.

[78]  Malcolm P. Atkinson,et al.  A scalable model of distribution promoting autonomy of and cooperation between PJava object stores , 1997, Proceedings of the Thirtieth Hawaii International Conference on System Sciences.

[79]  Misha Dmitriev,et al.  Towards Scalable and Recoverable Object Evolution for the PJama Persistent Platform , 2000, Objects and Databases.

[80]  Wai Yee Peter Wong,et al.  The evolution of a high-performing Java virtual machine , 2000, IBM Syst. J..

[81]  Brian T. Lewis,et al.  Efficient Barriers for Persistent Object Caching in a High-Performance Java TM Virtual Machine , 1999 .

[82]  Malcolm P. Atkinson,et al.  Scalable and Recoverable Implementation of Object Evolution for the PJama1 Platform , 2000, POS.

[83]  Tobias Murer,et al.  Global Names: Support for Managing Software in a World of Virtual Organizations , 1999, SCM.

[84]  Walter F. Tichy,et al.  Smart recompilation , 1986, TOPL.

[85]  John K. Ousterhout,et al.  Tcl: An Embeddable Command Language , 1989, USENIX Winter.

[86]  Rafael Dueire Lins,et al.  Garbage collection: algorithms for automatic dynamic memory management , 1996 .