AspectWerkz 0.10 RC1 is released
Jonas Bonér <jonas-yCVjj/[email protected]>
| Newsgroups | gmane.comp.java.aspectwerkz.devel,gmane.comp.java.aspectwerkz.user |
|---|---|
| Message-ID | <[email protected]> |
Hi.
Today we released the 0.10 Release Candidate 1 of AspectWerkz
<http://aspectwerkz.codehaus.org/>. Which forms the foundation for the
next generation of AspectWerkz.
AspectWerkz has gone through a lot of changes, the whole core engine has
for example been thrown out and replaced by a much more flexible and
performant one. The join point model is much more expressive and
orthogonal we have also implemented a JIT compiler that is making
AspectWerkz much more performant. On top of that we have a new
implementation of true runtime weaving, which allows you to redefine
your aspect model including adding *new* pointcuts at runtime.
Expressiveness and orthogonality
We have improved the expressiveness and orthogonality a lot.
AspectWerkz currently supports the following join points:
* method (static and member) execution
* method (static and member) call
* constructor execution
* constructor call
* field (static and member) modification
* field (static and member) access
* catch clauses
* cflow
In the latest version we have reached a high level of orthogonality:
* All advice types (around, after and before) works with all poincut
designators (except for the handler pointcut which is only
possible to bind to the before advice).
* You can compose new pointcuts by mixing any types of pointcuts.
The syntax has changed slightly, both in the XML and attribute
definition. However not more than that the migration should be fairly
easy. See the docs <http://aspectwerkz.codehaus.org/> for details on the
new syntax.
Performance improvements and JIT compilation
We have implemented a JIT (Just-In-Time) compiler that detects advice
chains that are often executed and generates a custom class on the fly
that invokes the advice chain and the target join point statically.
Here are some simple but interesting benchmarks comparing the latest
distribution of AspectWerkz, JBoss and AspectJ:
*The overhead of one around advice applied to a method call join point:*
AspectJ 1.1.1 0.000018 ms/call
AspectWerkz 0.10 RC1 0.000097 ms/call
JBoss AOP 1.0Beta 0.000181 ms/call
*The overhead of five around advice applied to a method call join point:*
AspectJ 1.1.1 0.000097 ms/call
AspectWerkz 0.10 RC1 0.000163 ms/call
JBoss AOP 1.0Beta 0.000263 ms/call
Runtime weaving
In addition to the capabilities to rearrange aspects and advices at
existing join points and swapping mixin implementation at runtime, we
provide a unique feature of adding new pointcuts at runtime without any
prior knowledge. The implementation is based on Java HotSwap and thus
requires a compliant JVM.
A simple API allows to refine the aspect definition to add new pointcuts
and then trigger the activation of it. Prior to pointcuts addition, your
programs are guaranteed to run without any overhead since the bytecode
does not gets modified prior activation. Moreover the runtime weaving
does not require to have a remote JVM to control the HotSwap API since
we provide a dedicated in-process module.
Download the distribution
You can download the distribution from here
<http://aspectwerkz.codehaus.org/releases.html>