AspectWerkz team has just released the 2.0 version. The new version contains many good features from the AspectJ users’ perspective :
- AspectWerkz is now an extensible aspect container. AspectJ excels at providing a language-level support for AOP concepts and AspectWerkz excels at its integration with application servers. It seems that one can now write aspects in AspectJ and deploy using AspectWerkz’s deployment technology.
- AspectWerkz’s AOP support is now more closely aligned to that implemented in AspectJ:
- variations of the after() advice
- percflow() aspect association
- this(), target(), and args() pointcuts to capture join point context
The AspectWerkz team plans to address some of the remaining differences from AspectJ (cflow(), cflowbelow() etc.) in a future version. It seems like AspectJ and AspectWerkz will become nearly isomorphic — you can write program in AspectJ or AspectWerkz and translate between them without much loss of information.
Of course, there are many AspectWerkz-specific improvements such as 20x improvement in performance and hot deployment/redeployment that got to make it more useful as an enterprise AOP solution.
This is exciting! Congratulation to the AspectWerkz team.
AspectJ in Action
Indeed on the OOPSLA AOP-BOF there was some short discussion about a general effort to bring most of the AOP frameworks we have today to bytecode compatibility in the above sense. Of course this has benefits (e.g. for deployment) but also drawbacks one must not forget: For example a lot of work has been done on more soghisticated joinpoint models in the past, which people might find more and more difficult to push forward once a quasi-standard has developed. (almost nobody would consider some Java-like bytecode today that does not run on any JVM either)