I am pleased to announce the availability of JBoss AOP 1.3.0. We put in a bunch of work to optimize load-time weaving and also pointcut matching in general. You should see huge improvements of boot time when running with load-time weaving and also noticable improvements in overall startup time of JBoss AOP. Special thanks goes out to Miro Technologies for subsidizing this work. You can find the release notes on jira.jboss.com.
What's coming in AOP 2.0?
This summer you should start seeing snippets of JBoss AOP 2.0 arriving. We're planning on multiple alpha releases now and then to introduce people to the technology we're developing for 2.0.
We're working on tight integration of JBoss AOP with the new JBoss 5 Microcontainer. This integration will allow you to configure aspects via our dependency injection microcontainer. Also, weaved aspects will publish and propagate their dependencies up into the microcontainer. For example, let's say you have a service that is using the transaction annotations of our aspect library. JBoss AOP will propagate to the container that this particular service uses the transaction aspect and that that transaction aspect depends on the Transaction Manager. Thus, if the service starts before the Transaction Manager, it will wait to finish initialization until the TM is ready.
Enhanced per-instance dynamic AOP
We are enhancing our per-instance dynamic AOP API (org.jboss.aop.InstanceAdvised) to allow a more parallel feature set to regular class scoped AOP. As part of this, we're writing a proxy architecture for those who do not want to do bytecode weaving, or for when byte-code weaving is not possible. These new redesigns and features are being driven by the JBoss 5 Microcontainer project's requirement to allow overriding of annotations on a per bean basis. The idea is to be able to effect the attached aspects to a particular deployed bean through configuration.
Before/After/After Throwing/After returning
I've long stated that before, after, etc. semantics with advices were not needed as around could handle all of those use cases. I still contend that around is the best model to implement advices. The thing is, around requires an object allocation in JBoss AOP for an Invocation object. So, for performance reasons only, we'll be adding these additional advice features in the next release.
Finally, we're doing a bunch of research with the hot-swapping feature that comes with the JDK 5.0 java.lang.instrument package. There are already some features using it within AOP 1.3 from the great work of Flavia Rainone, one of Francisco Reverbel's students.