Department of Computer Science and Technology

Technical reports

UpgradeJ: Incremental typechecking for class upgrades

Gavin M. Bierman, Matthew J. Parkinson, James Noble

April 2008, 35 pages

DOI: 10.48456/tr-716


One of the problems facing developers is the constant evolution of components that are used to build applications. This evolution is typical of any multi-person or multi-site software project. How can we program in this environment? More precisely, how can language design address such evolution? In this paper we attack two significant issues that arise from constant component evolution: we propose language- level extensions that permit multiple, co-existing versions of classes and the ability to dynamically upgrade from one version of a class to another, whilst still maintaining type safety guarantees and requiring only lightweight extensions to the runtime infrastructure. We show how our extensions, whilst intuitive, provide a great deal of power by giving a number of examples. Given the subtlety of the problem, we formalize a core fragment of our language and prove a number of important safety properties.

Full text

PDF (0.5 MB)

BibTeX record

  author =	 {Bierman, Gavin M. and Parkinson, Matthew J. and Noble,
  title = 	 {{UpgradeJ: Incremental typechecking for class upgrades}},
  year = 	 2008,
  month = 	 apr,
  url = 	 {},
  institution =  {University of Cambridge, Computer Laboratory},
  doi = 	 {10.48456/tr-716},
  number = 	 {UCAM-CL-TR-716}