November 2004
[ avasseur ] 07:14, Monday, 29 November 2004

With the release of the AspectWerkz 2.x first release candidate, we felt it was important to be able to track down performance results of the framework, as well as provide a place to compare it to other implementations like AspectJ, JBoss AOP, Spring, DynAOP and CGLib.

AWbench project has been started for that purpose and the first results have been published today.

In this report we explain what AWbench microbenchmark is about, and provides element of comparison for performance of

  • AspectWerkz 2.x and 1.0
  • AspectJ
  • JBoss AOP
  • Spring
  • DynAOP
  • CGLib
  • AspectJ, Spring and AOP Alliance aspects running in AspectWerkz 2.x extensible container

We will include any fix, new implementation, or hand written version of the microbenchmark that will be contributed.

Read the AOP benchmark report
Read more about AspectWerkz 2.x extensible AOP container

[ jonas ] 14:21, Tuesday, 16 November 2004

Today we released AspectWerkz 2.0 RC1.

Here is a short summary of the new features and enhancements in this releases. For more details read the What is new in AspectWerkz 2? paper, or dive in into the online documentation.

New architecture

  • Fast: Average 20x faster architecture as compared to AspectWerkz 1.0
  • Open: Extensible AOP container allow to deploy Spring AOP, AspectJ aspects and virtually any aspects in the same runtime
  • Dynamic: Hotdeployment and undeployment of aspects thru a simple atomic API
  • Simpe: Aspects can be written in plain Java, using Java 5 annotations or equivalent doclets for Java 1.3/1.4

Richer semantics

  • Support for after returning and after throwing advices
  • Access advised instance and advised member arguments direclty without any casting or unboxing
  • New mixin model
  • New Java 1.3/1.4 annotations model to minimize the migration effort to Java 5 annotations
  • Pay as you go model, the overhead of an advice is dependant upon the use or not of reflective information vs explicit binding

Higher reliability

  • Fully based on ObjectWeb's ASM bytecode kit
  • Weaved code is entirely statically compiled (no reflection or unsafe casting and object wrapping)

You can download the distribution here

Enjoy.

[ avasseur ] 09:54, Thursday, 4 November 2004

AspectWerkz 1.0 final is released.
This release contains minor fix as compared to 1.0.RC3, as well as some new facilities like new Ant tasks for strongly typed annotation compilation and weaving.
As a reminder, AspectWerkz 1.0 supports the following:

  • Aspects, advices and mixins are plain Java
    • Before, Around, After advices
    • Method and interface introduction (mixin)
    • Aspect (singleton, perClass, perInstance, perThread)
  • Pointcuts are composable
    • Method and constructor call and execution
    • Field read and write access
    • Matching on types and signatures
    • Matching on Annotations (Java 1.3/1.4 strongly typed annotations)
    • within(..), hasfield(..), hasmethod(..) and withincode(..) designators
    • cflow supports
    • args(..) designators to gain strongly typed access to advised member parameters
  • Aspects definitions allows deployment modules
    • Aspects defined as annotated classes
    • Aspects defined and refined in XML
    • Deployment module with META-INF/aop.xml
  • Annotation driven AOP
    • Custom annotation compiler for Java 1.3/1.4 which behave like Java 5 annotations, available thru Ant task and command line
    • Strongly typed annotations support for Java 1.3/1.4
    • Matching on annotations on target classes and members
    • Definining Aspects, advices and pointcuts with annotations
  • Integration facilities
    • Post compilation thru Ant task and command line
    • Class load time weaving thru JVMTI/JSR-163 for Java 5, plain Java hooks for Java 1.3, 1.4, JMAPI API for BEA JRockit, specific native module for Java 1.4

If you are not familiar with AspectWerkz, tutorials are available.

The source for this release is in a branch named branch_1_0 in the aspectwerkz3 CVS module.

Thanks to all of you who provide feedback and bug reports.

Download it.
Read the release note.