D08: Bringing Ownership Domains to Mainstream Java |
D08: Bringing Ownership Domains to Mainstream JavaTuesday, Oct 24, from 10:30 to 11:00 Tuesday, Oct 24, from 14:00 to 14:30 Wednesday, Oct 25, from 16:30 to 17:00 Thursday, Oct 26, from 16:00 to 16:30 AliasJava implements the Ownership Domains system as a language extension of the Java programming language that adds annotations to reference types. AliasJava divides objects into conceptual groups called ownership domains (where each object belongs to a single ownership domain) and allows developers to specify policies that govern references between ownership domains. AliasJava was previously implemented as a non-backwards compatible extension to Java using a custom infrastructure. We re-implemented the AliasJava language and analysis as annotations using the annotation facility in Java 1.5 and the Eclipse Java Development Tooling (JDT) infrastructure. We think this tool improves the adoptability of the ownership domains technique by mainstream Java developers. First, this would lead to improved tool support; in particular, we wanted all the capabilities of the Eclipse environment to become available to AliasJava programs. Second, using annotations would make it easier to extend the AliasJava language in a non-breaking way to support additional features. Finally, using annotations gives the ability to incrementally and partially specify annotations on large code bases while maintaining a running system. The analysis consists of several visitors on the Abstract Syntax Tree (AST) maintained by the Eclipse JDT. The implementation also uses a a lightweight data flow analysis framework also implemented using the Eclipse JDT to check that unique data is passed linearly. We address usability concerns using the following strategies: first, the analysis only generates warnings about inconsistent annotations and displays them in the Eclipse Problems window. Second, we supply reasonable defaults to reduce the annotation burden. Finally, our approach involves purely a static analysis and non-executable annotations that do not interfere with the running of the program. We think this tool can encourage additional case studies to evaluate the true benefits of using ownership domains by annotating and evolving real object-oriented implementations. Marwan Abi-Antoun, Carnegie Mellon University Jonathan Aldrich, Carnegie Mellon University
|