Authors: Alex Potanin, James Noble, Dave Clarke, Robert Biddle, Elvis Software Design Research Group ~
Source: GZipped PostScript (191kb); Adobe PDF (259kb)
Modern programming languages provide little support for object encapsulation and ownership. Escaped aliases to objects stored in private fields can compromise both security and reliability of code in reference-abundant languages such as Java. Object ownership is a widely accepted approach to controlling aliasing in programming languages. Generally, proposals for adding ownership to programming languages don't support generics, or support it in an ad-hoc way. We present Generic Ownership --- a unified approach of providing generics and ownership. By including support for default ownership, Generic Ownership imposes no more syntactic or runtime overheads than traditional generic types. We have implemented Generic Ownership in the context of the Ownership Generic Java (OGJ) programming language, an extension to Generic Java, and we ground the formal side of this work within the Featherweight Generic Java framework. We hope that our work will help bring full support for object encapsulation to the mainstream programming world.