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,
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:
- Basic Information about the AspectJ Language
- AspectJ compilers command-line options:
- Introductory Articles on AOP and AspectJ
- Basic Information on using AspectJ in Eclipse
- Some more advanced topics
There are two compilers for the AspectJ language:
The original AspectJ compiler called
ajc, originally developed at
Xerox Parc, and now developed and supported by the
AspectJ Eclipse project.
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 (http://aspectbench.org),
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
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.