[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[aspectj-users] AJDT 1.6.1 Release Candidate now available

What's been happening with AJDT lately? It may seem like the AJDT team
has been quiet for the last little while. But actually, we've been
quite busy revamping the internals of AJDT. We've been optimizing the
build, especially in multi-project settings. (See bugs 249216, 246476,
245566, 243376, and 249881. http://www.eclipse.org/ajdt/bugs.php )

We are therefore pleased to announce the AJDT 1.6.1 release candidate.
You can grab it from the update site:
http://download.eclipse.org/tools/ajdt/34/dev/update

Many of you will find your builds getting a bit more peppy after you
upgrade. Details below...

As always (but in particular before a release) we appreciate community
feedback. If you want to contribute to making AJDT and AspectJ better,
please upgrade to the release candidate and send any questions,
comments or bugs to one of these mailing lists or to create a bug on
bugzilla ( http://bugs.eclipse.org ).


Now, the details of what's new in this release:

*Crosscutting model enhancements*

In this release, AJDT's internal representation of the crosscutting
model has been made redundant and has been removed. The old way of
doing things was that AJDT maintained its own copy of the model
AspectJ was using internally for builds. And it was recreated from
scratch after each successful build (both full and incremental builds,
even if there were no changes!).  The AJDT copy was more suitable for
AJDT to work with when creating markers, populating views, etc.
However, with some changes to AspectJ, the compiler's internal model
has been modified to suit AJDT's needs directly--thereby removing any
need for a duplicate model and saving memory and computation.  There
is a significant speed-up and memory-use reduction here. I will post
numbers with the official release.

Unfortunately, in order to implement this improvement, we had to
disable the crosscutting comparisons view, because it requires AJDT's
specific crosscutting model. Our understanding is that this view was
not used often, but if there is enough community interest, we will
re-enable the feature.  Our goal is to optimize for the common use
case - and we believe that 90% of the time users will be doing quick
edit/save/build cycles, rather than using views like the crosscutting
comparisons view.


*Incremental build optimizations*

The second major improvement in this release has been improved
performance during incremental builds. There is now more fine-grained
communication between AJDT and AspectJ before incremental builds.
Previously AspectJ did comprehensive analysis of the classpath,
inpath, aspectpath, etc.--in order to determine what needed to be
compiled.  Even though AJDT already has precise knowledge of what the
user had changed, there was no communications interface between AJDT
and the compiler to transfer this information.  Now before an
incremental build, AJDT instead provides the compiler with specific
information about what state has changed since the last successful
build. And the compiler will then only do appropriate analysis. This
leads to a significant speed up for incremental builds (SIGNIFICANT!).
I will post numbers later.


*Multi-threaded builds*

The final major improvement in this release is a multi-threaded build.
Now, the essential part of the build (compilation) occurs in a single
thread, and the more peripheral post build jobs (updating of gutter
markers, and displaying error and warning messages) occur in separate
threads. This frees the UI from sluggish builds and gives the user
more control over the workspace.

We hope you find these improvements worthwhile.  Please contact us
with any bugs so that we can improve AJDT for 1.6.1 final.

sincerely,
the AJDT team