Javari: Adding reference immutability to Java

Download: PDF, slides (PowerPoint), extended version (PDF), Javari implementation.

“Javari: Adding reference immutability to Java” by Matthew S. Tschantz and Michael D. Ernst. In OOPSLA 2005, Object-Oriented Programming Systems, Languages, and Applications, (San Diego, CA, USA), Oct. 2005, pp. 211-230.


This paper describes a type system that is capable of expressing and enforcing immutability constraints. The specific constraint expressed is that the abstract state of the object to which an immutable reference refers cannot be modified using that reference. The abstract state is (part of) the transitively reachable state: that is, the state of the object and all state reachable from it by following references. The type system permits explicitly excluding fields from the abstract state of an object. For a statically type-safe language, the type system guarantees reference immutability. If the language is extended with immutability downcasts, then run-time checks enforce the reference immutability constraints.

This research builds upon previous research in language support for reference immutability. Improvements that are new in this paper include distinguishing the notions of assignability and mutability; integration with Java 5's generic types and with multi-dimensional arrays; a mutability polymorphism approach to avoiding code duplication; type-safe support for reflection and serialization; and formal type rules and type soundness proof for a core calculus. Furthermore, it retains the valuable features of the previous dialect, including usability by humans (as evidenced by experience with 160,000 lines of Javari code) and interoperability with Java and existing JVMs.

Download: PDF, slides (PowerPoint), extended version (PDF), Javari implementation.

BibTeX entry:

   author = {Matthew S. Tschantz and Michael D. Ernst},
   title = {Javari: Adding reference immutability to {Java}},
   booktitle = {OOPSLA 2005, Object-Oriented Programming Systems,
	Languages, and Applications},
   pages = {211--230},
   address = {San Diego, CA, USA},
   month = oct,
   year = {2005}

(This webpage was created with bibtex2web.)

Back to Michael Ernst's publications.