Aspect-Oriented Programming in Jiazzi. Sean McDirmid and Wilson Hsieh. In the proceedings of AOSD 2003. [more info][pdf] (12 pages). Jiazzi 3 implements Jiazzi as specified in this paper.
Jiazzi: New Age Components for Old Fashioned Java. Sean McDirmid, Matthew Flatt, and Wilson Hsieh. In the proceedings of OOPSLA 2001. [more info][ps.gz][pdf] (12 pages)
Mixin COP and OOP. Sean McDirmid, Matthew Flatt, and Wilson Hsieh. In the proceedings of the first workshop on Component Languages, OOPSLA 2001. [more info][ps.gz][pdf] (4 pages)
Java Component Development in Jiazzi. Sean McDirmid, Matthew Flatt, and Wilson Hsieh. Extended Abstract (poster abstract). [pdf] (2 pages)
And of course we have Documentation for our implementation.
Sean McDirmid and Wilson Hsieh
University of Utah, School of Computing
We present aspect-oriented
programming in Jiazzi. Jiazzi enhances Java with separately compiled, externally
linked code modules called units. Units can act as effective "aspect"
constructs with the ability to separate crosscutting concern code in a
non-invasive and safe way. Unit linking provides a convenient way
for programmers to explicitly control the inclusion and configuration of code
that implements a concern, while separate compilation of units enhances the
independent development and deployment of the concern. The expressiveness of
concern separation is enhanced by units in two ways. First, classes can be made
open to the addition of new behavior, fields, and methods after they are
initially defined, which enables the direct modularization of concerns whose
code crosscut object boundaries. Second, the signatures of methods and classes
can also be made open to refinement, which permits more aggressive
modularization by isolating the naming and calling requirements of a concern
implementation.
To appear in the AOSD 2003.
Download the paper: [pdf].
Sean McDirmid, Matthew Flatt, and Wilson Hsieh
University of Utah, School of Computing
We present Jiazzi, a system that enables the construction of large-scale binary components in Java. Jiazzi components can be thought of as generalizations of Java packages with added support for external linking and separate compilation. Jiazzi components are practical because they are constructed out of standard Java source code. Jiazzi requires neither extensions to the Java language nor special conventions for writing Java source code that will go inside a component. Our components are expressive because Jiazzi supports cyclic component linking and mixins, which are used together in an open class pattern that enables the modular addition of new features to existing classes. This paper describes Jiazzi, how it enhances Java with components, its implementation, and how type checking works. An implementation of Jiazzi is available for download.
In the Proceedings of the ACM Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA) 2001.
Download the paper: [ps.gz][pdf].
Sean McDirmid, Matthew Flatt, and Wilson Hsieh
University of Utah, School of Computing
In this short position paper, we describe and justify thirteen technical properties that a
component system must possess to work with object-oriented programming languages (such as Java, C++, or
C#). Our components are designed for large-scale, modular construction of programs with
static checking of program compositions.
Jiazzi, our enhancement of Java, implements the technical properties that we describe. We use Jiazzi components in our examples, but only
to make the discussion more concrete. Readers interested in the details of the Jiazzi component system should refer to
Jiazzi: New Age Components for Old Fashioned Java.
In the Proceedings of the the first Workshop on Component Languages, OOPSLA 2001.