ABSTRACT
Dynamic object reclassification allows changes to the type of an object at runtime. This paper makes the case for object evolution, a restriction of general reclassification by which an object may gain, but never lose properties. We argue that evolution is an expressive and useful language construct and can be implemented efficiently. Further, the monotonicity property of evolution promotes static type-safety better than general reclassification. We describe three concrete variants of evolution, relying on inheritance, mixins and shakeins, and explain how any combination of these can be integrated into a concrete programming language. We chart the language design space, mention our implementation, and introduce the notion of evolvers, a critical mechanism for maintaining class invariants in the course of reclassification.
- A. Albano et al. Fibonacci: A programming language for object databases. The VLDB J., 4(3):403--444, 1995. Google ScholarDigital Library
- D. Ancona et al. Jam-designing a Java extension with mixins. ACM Trans. on Prog. Lang. Syst., 25(5), 2003. Google ScholarDigital Library
- K. Beck. Instance specific behavior: how and why. The Smalltalk Report, 2(6):13--15, March-April 1993.Google Scholar
- J. Bloch. Effective Java, 2nd Edition. Addison-Wesley, 2008. Google ScholarDigital Library
- G. Bracha and W. R. Cook. Mixin-based inheritance. In OOPSLA/ECOOP'90. Google ScholarDigital Library
- C. Chambers. Predictable classes. In ECOOP'93.Google Scholar
- T. Cohen and J. Gil. AspectJ2EE = AOP+J2EE. In ECOOP'04.Google Scholar
- T. Cohen and J. Gil. Shakeins: Non-intrusive aspects for middleware frameworks. In Trans. AOSD, Nov. 2006. Google ScholarDigital Library
- P. Costanza. Dynamic replacement of active objects in the Gilgul programming language. In IFIP/ACM Working Conf. Google ScholarDigital Library
- F. Damiani et al. Re-classification and multi-threading: FickleMT. In SAC'04. Google ScholarDigital Library
- F. Damiani et al. Refined effects for unanticipated object re-classification: Fickle3 (extended abstract). In ICTCS'03.Google Scholar
- S. Drossopoulou et al. Fickle: Dynamic object re-classification. In ECOOP'01. Google ScholarDigital Library
- S. Drossopoulou et al. More dynamic object re-classification: FickleII. ACM TOPLAS, March 2002. Google ScholarDigital Library
- E. Gamma et al. Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley, 1995. Google ScholarDigital Library
- G. Ghelli. Foundations for extensible objects with roles. Inf. Comput., 175(1):50--75, 2002.Google ScholarCross Ref
- G. Ghelli and D. Palmerini. Foundations of extensible objects with roles (extended abstract). In FOOL'6, 1999.Google Scholar
- P. D. Gianantonio et al. A lambda calculus of objects with self-inflicted extension. In OOPSLA'98. Google ScholarDigital Library
- A. Goldberg and D. Robson. Smalltalk-80: The Language and Its Implementation. Addison-Wesley, 1983. Google ScholarDigital Library
- Y. Hollander, M. Morley, and A. Noy. The e language: A fresh separation of concerns. In TOOLS'01 Europe. Google ScholarDigital Library
- P. Kenens et al. An AOP case with static and dynamic aspects. In ECOOP'98 Workshop Reader. Google ScholarDigital Library
- G. Kiczales et al. An overview of AspectJ. In ECOOP'01. Google ScholarDigital Library
- B. Meyer. Object Oriented Software Construction, 2nd ed. Prentice-Hall, 1997. Google ScholarDigital Library
- R. Pawlak et al. JAC: An aspect-based distributed dynamic framework. Soft. - Pract. and Exper., 34(12), 2004. Google ScholarDigital Library
- A. Popovici, T. R. Gross, and G. Alonso. Dynamic weaving for aspect-oriented programming. In AOSD'02. Google ScholarDigital Library
- M. Serrano. Wide classes. In ECOOP'99.Google Scholar
- A. Taivalsaari. Object-oriented programming with modes. J. of OO Prog., 6(3):25--32, June 1993.Google Scholar
Index Terms
- Three approaches to object evolution
Recommendations
From object evolution to object emergence
CIKM '99: Proceedings of the eighth international conference on Information and knowledge managementDatabase applications which model aspects of the real world should be able to express as accurately as possible the different nuances of reality; that includes the need to evolve internally in response to signals of updates coming from the environment. ...
The evolution of Lisp
History of programming languages---IILisp is the world's greatest programming language---or so its proponents think. The structure of Lisp makes it easy to extend the language or even to implement entirely new dialects without starting from scratch. Overall, the evolution of Lisp has been ...
The evolution of Lisp
Lisp is the world's greatest programming language—or so its proponents think. The structure of Lisp makes it easy to extend the language or even to implement entirely new dialects without starting from scratch. Overall, the evolution of Lisp has been ...
Comments