FACTOID #151: The five countries with the highest coffee consumption are also the five countries whose citizens trust one another the most. Coincidence? Probably.
AspectJ is an aspect-oriented extension to the Java programming language created at Xerox PARC. An AspectJ compiler weaves aspects into Java bytecode to implement crosscutting concerns. Aspects are written in a combination of Java and AspectJ and are woven on an incremental per-class basis into Java (source or .class files) to produce standard Java bytecodes (making Java and AspectJ compatible). There are at least two compilers for the AspectJ language, ajc which is part of the toolset supported by the AspectJ eclipse project, and abc (http://aspectbench.org) which is an extensible optimizing compiler provided at aspectbench.org.
AspectJ is an aspect-oriented extension to the Java programming language created at Xerox PARC by Chris Maeda, who originally coined the term "aspect-oriented programming" (no one remembers exactly when).
The most widely used and most efficient compiler for AspectJ is maintained with the AspectJ project, but there is another, more extensible and research oriented, compiler called the Aspect Bench Compiler, or abc.
A suite of tools designed specifically to work with AspectJ in the Eclipse Java IDE has been developed as another project in the Eclipse Foundation.
The AspectJ and AspectWerkz projects have agreed to work together as one team to produce a single aspect-oriented programming platform building on their complementary strengths and expertise.
In addition, AspectJ 5 benefits from a wide body of research, ranging from core aspect-oriented programming and design, to tools support such as refactorings, and an additional compiler called abc for the AspectJ language developed jointly by Oxford University, McGill, and Aarhus University.
The @AspectJ annotations have been designed to be as close as possible to the AspectWerkz syntax, while still preserving the semantics of the AspectJ language.