[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[aspectj-dev] Future plans for AJDT


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).

-- Adrian
Adrian_Colyer@xxxxxxxxxx