abc aspectJ compiler AspectJ Programming Language (AspectJ Language) and AspectJ Compiler Links

The AspectJ Programming Language

The AspectJ language provides a seamless extension to Java which introduces aspect-oriented programming (AOP) tecniques into the Java language. When we use the term AspectJ by itself we mean the programming language AspectJ.

An LALR(1) grammar for the AspectJ Programming Language

The grammar of the AspectJ language can be found (in html, pdf or postscript format): As part of the abc AspectJ compiler project we developed this complete definition of the lexical structure of the AspectJ programming language, as well as a complete LALR(1) grammar for the AspectJ language.

Getting started with AspectJ - Documents for Free

There are quite a few free resources to help you get started in AspectJ, some are free sample chapters of books and some are documents which come with the abc or ajc AspectJ compilers. I suggest that you start with:

AspectJ Compilers

There are two compilers for the AspectJ language:
  • ajc: The original AspectJ compiler called ajc, originally developed at Xerox Parc, and now developed and supported by the AspectJ Eclipse project.

  • abc: There is also a brand new compiler for AspectJ, developed independently of ajc, called abc which has been designed and implemented by the abc group (, a joint effort between members of the Programming Tools Group at Oxford University and the Sable Research Group McGill University, plus a member of the group from BRICS (University of Aarhus).

    The abc AspectJ compiler supports all the AspectJ programming language. In addition, it has also been designed to be extensible, so researchers can add their own new aspect-oriented features. Furthermore, the abc AspectJ compiler is an optimizing compiler (i.e. it produces fast code), with both standard and aspect-specific optimizations.

    The abc AspectJ compiler is built using Polyglot and Soot.

    Polyglot is a compiler frontend framework for building Java language extensions. abc itself is an extension in Polyglot, and researchers can easily extend abc to support new language features.

    Since the abc AspectJ compiler uses the Soot framework as its backend, researchers can also add new analyses and optimizations quite easily.

AspectJ Books

Although AspectJ is a relatively new programming language, there are already some books on the topic. Please let me know if you know of other books to add to this list.

Maintained by Laurie J. Hendren. Last modified Tue Mar 8 10:03:12 EST 2005. [HOME]