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>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.