ArchJava : Publications

Note: these papers are provided for fair-use purposes only. The copyrights are owned by the respective publishers.  All papers are provided in PDF format.

Jonathan Aldrich. Using Types to Enforce Architectural Structure. Submitted for publication.

This paper is the best short overview of the ArchJava language and type system.
 

Jonathan Aldrich and Criag Chambers. Ownership Domains: Separating Aliasing Policy from Mechanism. To appear in European Conference on Object-Oriented Programming, June 2004.

This paper describes a generalization of ownership types, allowing more than one ownership domain to be defined per object, and allowing developers to specify the permitted aliasing relationships between domains at a fine grain. Our system is the first to provide a fully general solution to expressing iterators and event callbacks, while still enforcing a strong encapsulation guarantee.
 

Jonathan Aldrich. Using Types to Enforce Architectural Structure. University of Washington Ph.D. Dissertation, August 2003.

This is the most complete and up-to-date reference on the ArchJava language. It describes ownership domains, the key technical advance that completes the picture and allows the language to enforce full architectural conformance. It contains material from several conference papers below, updated to reflect the latest language definition. The material from our ECOOP '03 paper on connectors, however, is not included.
 

Jonathan Aldrich, Vibha Sazawal, Craig Chambers, and David Notkin. Language Support for Connector Abstractions. In proceedings of the European Conference on Object-Oriented Programming (ECOOP '03), July 2003.

Note: there are minor syntactic differences between the language in the preliminary version of the paper and the final version. The current implementation uses the syntax in the preliminary version, but an update will be available shortly.

This paper describes an extension of ArchJava that supports connectors with user-defined static and dynamic semantics. We evaluate the extension on PlantCare, a ubiquitous computing application being developed at Intel Research Seattle.
 

Jonathan Aldrich, Craig Chambers, and David Notkin. ArchJava: Connecting Software Architecture to Implementation. In proceedings of ICSE 2002, May 2002.

A practical paper describing the ArchJava language and a case study applying ArchJava to a circuit-design application, which suggests that ArchJava can express architectural structure effectively within an implementation, and that it can aid in program understanding and software evolution. A shorter version of the paper appears in the OOPSLA '01 Workshop on Language Mechanisms for Software Components, October 2001.
 

Jonathan Aldrich, Valentin Kostadinov, and Craig Chambers. Alias Annotations for Program Understanding. In proceedings of OOPSLA 2002.

AliasJava is a type annotation system for specifying data sharing relationships in Java programs. AliasJava complements ArchJava by specifying the data sharing between components in an architecture, just as ArchJava specifies the control flow between architectural components. A prototype implementation of AliasJava is available in the 1.2.1 release of the ArchJava compiler.

A longer technical report, UW-CSE-02-11-01, contains additional details on the implementation and semantics of the language. The TR has the complete semantics of the core AliasFJ language and fleshed-out proofs of the ownership and uniqueness properties. It also gives the precise constraint-generation rules used in alias type inference, and discusses the constraint-solving algorithm in some detail.
 

Jonathan Aldrich, Craig Chambers, and David Notkin. Architectural Reasoning in ArchJava. In proceedings of ECOOP 2002, June 2002.

A more theoretical paper describing the design and technical properties of the ArchJava language. Type soundness and communication integrity properties are proven for a simplified core language, ArchFJ. In addition, we report on a second case study with Taprats, an islamic tile design application. The ArchJava source code (tar.gz, zip) to Taprats is available for the purposes of understanding ArchJava.

A longer technical report, UW-CSE-02-04-01, contains the full semantics of the core ArchFJ language and more details about the proofs. A shorter version of the paper appears in the OOPSLA '01 Workshop on Specification and Verification of Component-Based Systems, October 2001.
 

Jonathan Aldrich, Vibha Sazawal, Craig Chambers, and David Nokin. Architecture-Centric Programming for Adaptive Systems. Proceedings of the Workshop on Self-Healing Systems.

This position paper applies ArchJava to PlantCare, a ubiquitous computing application being developed at Intel Research Seattle. We propose an extension to ArchJava that allows users to define and use custom connector types, and show how the extended language can be used to improve the software engineering characteristics of one service in the PlantCare application.
 

Vibha Sazawal and Jonathan Aldrich. Architecture-Centric Programming for Context-Aware Configuration. In proceedings of the Workshop on Engineering Context-Aware Object-Oriented Systems and Environments.

This paper argues that ArchJava has the potential to ease the development of context-aware ubiquitous computing applications.  We illustrate our position with a hypothetical implementation of a context-sensitive display service that uses location to choose among available display resources.
 

The ArchJava Language Reference Manual describes the detailed language syntax and semantics.

We recommend reading one of the overview papers above first. This manual is also somewhat out of date.
 

Andrei Alexandrescu and Konrad Lorincz.  ArchJava: An Evaluation.  University of Washington CSE 503 class report.

This paper is a short independant evaluation of the ArchJava language with respect to its software engineering properties and the performance of the prototype implementation.  Note that this paper describes an earlier, monolithic ArchJava compiler; the current ArchJava compiler uses a modular compilation strategy much like javac.

ArchJava Presentations:


Contact Information