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.