Login

Object and Reference Immutability using Java Generics

Show full item record




Title: Object and Reference Immutability using Java Generics
Author: Zibin, Yoav; Potanin, Alex; Artzi, Shay; Kiezun, Adam; Ernst, Michael D.
Other Contributors: Program Analysis
Advisor: Michael Ernst
Issue Date: 2007-03-16
Abstract: A compiler-checked immutability guarantee provides useful documentation, facilitates reasoning, and enables optimizations. This paper presents Immutability Generic Java (IGJ), a novel language extension that expresses immutability without changing Java’s syntax by building upon Java’s generics and annotation mechanisms. In IGJ, each class has one additional generic parameter that is Immutable, Mutable, or ReadOnly. IGJ guarantees both reference immutability (only mutable references can mutate an object) and object immutability (an immutable reference points to an immutable object). IGJ is the first proposal for enforcing object immutability, and its reference immutability is more expressive than previous work. IGJ also permits covariant changes of generic arguments in a type-safe manner, e.g., a readonly list of integers is a subtype of a readonly list of numbers. IGJ extends Java’s type system with a few simple rules. We formalize this type system and prove it sound. Our IGJ compiler works by type-erasure and generates byte-code that can be executed on any JVM without runtime penalty.
URI: http://hdl.handle.net/1721.1/36850
Other Identifiers: MIT-CSAIL-TR-2007-018
Series/Report no.: Massachusetts Institute of Technology Computer Science and Artificial Intelligence Laboratory

Files in this item

Files Size Format View
MIT-CSAIL-TR-2007-018.pdf 519.6Kb PDF View/Open

Files in this item

Files Size Format View
MIT-CSAIL-TR-2007-018.ps 2.590Mb Postscript View/Open

This item appears in the following Collection(s)

Show full item record

Search DSpace@MIT


Advanced Search

Browse

My Account

Links