Live Software Development with Dynamic Classes

Software modification at run-time can facilitate rapid prototyping, streamline development and debugging, and enable interactive educational programming environments. However, supporting live fine-grain program modification while reaping the benefits of a compiled type-safe language is a challenging problem. This paper presents fine-grain dynamic classes that support live object-oriented software development in which a program can be modified during execution. We present an implementation of dynamic classes in Java that does not require modification of the Java Virtual Machine. Our implementation supports full interoperability between instances of dynamic classes and compiled classes, including polymorphism, with minimal overhead. Changes to dynamic classes, such as the declaration of instance variables and methods, as well as the modification of statements and expressions within method bodies, take immediate effect on existing instances of those classes. We describe benefits of using dynamic classes in the context of a tightly integrated development environment.

[1]  Kenneth J. Goldman,et al.  Dynamic reconfiguration with I/O abstraction , 1995, Proceedings.Seventh IEEE Symposium on Parallel and Distributed Processing.

[2]  Robert Laddaga,et al.  Dynamic object technology , 1997, CACM.

[3]  Ophir Frieder,et al.  On-the-fly program modification: systems for dynamic updating , 1993, IEEE Software.

[4]  Toby Bloom,et al.  Dynamic module replacement in a distributed programming system , 1983 .

[5]  Kenneth J. Goldman A concepts-first introduction to computer science , 2004, SIGCSE '04.

[6]  Craig Chambers,et al.  An efficient implementation of SELF, a dynamically-typed object-oriented language based on prototypes , 1991 .

[7]  Kenneth J. Goldman A demonstration of JPie: an environment for live software construction in Java , 2003, OOPSLA '03.

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

[9]  Raju Pandey,et al.  Dynamically evolvable distributed systems , 2002, Proceedings 26th Annual International Computer Software and Applications.

[10]  Liuba Shrira,et al.  Lazy modular upgrades in persistent object stores , 2003, OOPSLA.

[11]  Ken Arnold,et al.  The Java Programming Language , 1996 .

[12]  Charles Simonyi,et al.  Intentional Programming - Innovation in the Legacy Age , 1996 .

[13]  Thomas M. Breuel,et al.  Implementing dynamic language features in Java using dynamic code generation , 2001, Proceedings 39th International Conference and Exhibition on Technology of Object-Oriented Languages and Systems. TOOLS 39.

[14]  Ravi Sethi,et al.  Adding New Code to a Running C++ Program , 1990, C++ Conference.

[15]  Michael J. Day,et al.  Shadows: A Type-safe Framework for Dynamically Extensible Objects , 1994 .

[16]  Kenneth J. Goldman,et al.  An interactive environment for beginning Java programmers , 2004, Sci. Comput. Program..

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

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

[19]  Kenneth Goldman A concepts-first introduction to computer science , 2004 .