Three approaches to object evolution

  • Authors:
  • Tal Cohen;Joseph (Yossi) Gil

  • Affiliations:
  • Google Israel Engineering Center;Google Israel Engineering Center

  • Venue:
  • PPPJ '09 Proceedings of the 7th International Conference on Principles and Practice of Programming in Java
  • Year:
  • 2009

Quantified Score

Hi-index 0.00

Visualization

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.