My top vote is performance and scalability. For performance, I see value in
benchmarking and optimizing common scenarios like pertype for logging
and deferred instantiation of tjp. For scalability, it's important to
support large projects that use large numbers of aspects.
A close second would be IDE support: getting incremental compilation to be
reliable in AJDT is very important. Eager parsing and refactoring
support are also important (they will go a long way to ease adoption).
AspectJ support for Java 1.5 language features is going to be critical when
Java 1.5 ships. Assuming that's next summer, then I think at least basic support
will need to be in AspectJ 1.2; any thoughts on when 1.2 and 1.3 will
ship?
Another possible theme would be extending the AspectJ language itself.
There are a few features from 1.1 (like extensible pointcuts) that are worth
considering in this category, but I think this theme will need to be a focus
of a later release (after Java 1.5 features have been incorporated. We
might consider adding more powerful declarations like a declare delegate and
declare parameter to add parameters to methods. Other possibilities would
include separating aspect interfaces from implementations and polymorphism in
aspect roles for classes (like Caesar does), more powerful pointcuts (like
pcflow), etc. Many of these features would require careful design that would be
worth a research paper, which also suggests they aren't the best use of the AJ
team's time.
Another possible theme is AspectJ language compatibility. Intellij is
creating an alternative AspectJ parser, and even if they use ajc's back-end
weaver, this raises the question of what's the correct behavior. At a minimum,
it will be important to work with them to ensure compatibility. I don't think
there's time for the 1.2, but the ideal solution would be writing a language
spec. and a compatibility test.
Ron
Ron Bodkin
Chief Technology Officer
New Aspects of Security
m: (415) 509-2895
------------Original Message-------------
From: "Adrian Colyer" <adrian_colyer@xxxxxxxxxx>
To: aspectj-dev@xxxxxxxxxxx
Date: Wed, Oct-1-2003 9:25 AM
Subject: [aspectj-dev] Themes for AspectJ 1.2
Now that AspectJ 1.1.1 is out,
it's time to turn our attention to 1.2. This post is to start a
discussion about possible themes and priorities for the 1.2 release. The
eventual plan will be influenced by AspectJ's users, it's developers, and of
course which items contributors will sign up to implement - so anything we
discuss here should not be treated as a plan commitment at this stage. I'm
including all project tasks, not just those that might involve writing
code.
With that said, here are
some candidate themes to start the discussion (not an ordered list):
* AspectJ for the Enterprise
This theme could include adding (and
developing) material for the website / docs / ... explaining how to use
AspectJ with various app servers and J2EE technologies. A classloader would
come under this category too, and perhaps even a set of samples or an aspect
library for working with AspectJ in J2EE.
* Preparation for Java 1.5
Including consideration of the impact of generics and metadata on the
language.
* Performance and
scalability
Memory usage (across
AspectJ and AJDT), compile time, weave time, runtime performance. This theme
might for example build a benchmark suite and then use it to optimise the
compiler and its output. Supporting pertype could fall into this category - as
it's needed for some common logging idioms, as could looking into the
possibility of creating thisJoinPoint objects lazily.
* Enhanced IDE support
Work in the ajde components (and possibly below) to
allow deeper IDE integration (e.g. to support eager outline views, code
formatting, structure model operations etc.). JSR 45 support. AJDT needs
this...
* Clean-up : working
through P3's etc. that have built up during release cycle
We have a reasonable list now that we're going to have
to work through. This task will also include things like fixing up the failing
BCWeaver tests
* Miscellaneous
(these things don't fit neatly in any of the above yet)
There are many items carried over from 1.1 planning for
example, that we should consider (some may fit into the above themes). I'll
dig these out and post separately. One item I would like to consider is
getting context information into declare warning / error messages (we had a
prototype implementation here in Hursley a while back but never got to
discussing the rights and wrongs on the list as there were other priorities at
the time). Wes has begun work on some general purpose samples and we should
continue that.... there's the possibility of a general purpose aspect library
in time.
I'd like to begin our
planning by focusing on what the right themes are to go after (please cast
your votes, and add your own suggestions too) on the dev list, then we can go
to the users list once we have a first pass in place. Then we have to start
fleshing out what the individual items we want to attack in each category are,
and figuring out who wants to work on what.
--
Adrian
Adrian_Colyer@xxxxxxxxxx