As many of you know, the AspectJ Development
Tools (AJDT) project provides Eclipse integration for AspectJ development
(analogous to the role of the JDT that ships with Eclipse for Java development).
We're planning a major overhaul of AJDT for the next release (codenamed
Lancaster[1]) - the purpose of this email is to give you a heads up on
our plans and direction, and to invite your feedback and contributions.
The major goals of the Lancaster release
are to put in place a solid, heavily unit tested foundation (to meet the
quality needs of teams using AspectJ for serious development projects),
to support incremental compilation and structure model generation as the
default mode of operation, and to provide a comparable editing experience
to that offered by the JDT for Java source (including things like code
completion). The Lancaster release is also being built as an AspectJ project
using AJDT - this is a great way for us to ensure that the AJDT tools work
well as an everyday development environment on a reasonable sized team
project.
Here are the key items in the Lancaster
plan:
Restructure:
We are undertaking another restructure of the core AJDT plugins, to move
AJDT into the realm of product-level quality. The new AJDT plugin structure
mimics that of the JDT tools. Lancaster is being built around a solid unit
test foundation, and is itself an AspectJ project. To ensure we get this
right, we're working from a new codebase, carefully pulling function across
from the existing source where we can. The new AJDT sources can be found
in CVS at dev.eclipse.org/home/technology, rooted in org.eclipse.ajdt/AJDT_GEN3.
AspectJ Model :
Eclipse's JDT provides a JavaModel that contains information about all
the Java resources in the workspace. We are building an AspectJModel that
serves the equivalent function for AspectJ resources. The model serves
as the foundation from which AspectJ structure can be presented in views,
and as the reference point for supporting code completions, searching and
browsing. It adapts the Ajde IDE support provided by AspectJ to present
it in an Eclipse-friendly format.
AspectJEditor rewrite: The current AspectJEditor supports syntax
highlighting and code templates, but is lacking many of the features of
the Java Editor. We are re-designing the editor as a more principled extension
of the JavaEditor. The new AspectJEditor will support hover-help, auto-indentation,
bracket matching, code-formatting, syntax highlighting, content assist,
context-sensitive help, organize imports, and reconciling. The associated
outline view will eagerly update rather than requiring a compilation.
AJDT Scalability:
AJDT should be usable on large projects, without consuming excessive memory,
and retaining good user responsiveness.
Cross-Reference View:
We've been working on a separate view that shows crosscutting structure,
so that this information will be available from any selected item in any
view, not just in the outline. It should also be better for navigation.
New Aspect Wizard:
For various reasons (complex) it is not possible to create aspects using
the ".aj" extension from the current new aspect wizard (which
is a subclass of the new class wizard). If you look closely, the wizard
also has some options that are not strictly appropriate. The new aspect
wizard has been rewritten to avoid this problem, and a preference added
to indicate whether .aj or .java extension is preferred.
Integrated Samples:
The AspectJ samples and examples will be integrated via a simple "new
-> examples -> aspectj examples" wizard. It is easy to add new
examples into the plugin with no extra programming.
Pointcut Wizard:
We've begun work on a set of wizard pages that make it easy(/ier) to
enter pointcut definitions, These will be packaged into a new -> pointcut
wizard.
Crosscutting Delta View:
This compares the results of a project build to the previous compilation.
Tells the user of any new aspects, and any differences in advice / inter-type
declaration matching since the last compilation.
Debugging:
Build on the JDT debug support, but filter out aj-synthetic items. More
step options? (eg step with/without advice)
Design discussion for AJDT developers
(and other interested parties) is taking place on the ajdt-dev@xxxxxxxxxxx
mailing list.
[1] For those of you at the recent AspectJ
BoF at OOPSLA, we were previously using the codename "Vancouver"
for the next release of AJDT. This caused some confusion because some people
thought we meant that the release wouldn't be out until OOPSLA 2004 (which
is to be held in Vancouver). So we changed the name to "Lancaster"
(which also happens to be the venue of the AOSD 2004 conference).