abc: The AspectBench Compiler for AspectJ

Differences with ajc, and limitations

Differences with ajc

The reference implementation of AspectJ is ajc. We have attempted to stay very close to ajc, in particular by adopting the same test suite, and by actively seeking out "corner" cases in the language on which to compare the two compilers. In a number of minor ways, however, the abc team has deliberately chosen to deviate from the standard set by ajc. This page describes the language differences between abc 1.1.0 and ajc 1.2.1. There are more recent releases of ajc, leading up to 1.5.0, which supports Java 5 features. At this moment abc does not support any Java 5 features: no annotations, no generics.

Additional features

abc has a number of features that are not supported by ajc. Among these are the following:


The following is a list of differences with ajc that we consider bugs in abc. Contrary to the above differences (which are by design), we aim to resolve these when possible. If you would like us to increase the priority we give to fixing a particular problem, please let us know on the mailing lists, or by using Bugzilla to vote for the appropriate bug, if any.

One of the items relates to options supported by ajc but not abc. There are many other options that we also do not support, but do not currently plan to ever support. If one of these is important to you, let us know and we will consider adding it.

Please also see the Bugzilla database for a more comprehensive list of known bugs.

Valid XHTML 1.1!