AspectWerkz - Plain Java AOP

##### General Information

- Overview
- Features
- License
- Downloads

##### Documentation

- New features in 2.x
- Introduction
- Tutorials
- Implementation issues
- General definition issues
- Annotation definition
- XML definition
- Annnotation driven development
- Deployment
- Weaving
- Dynamic AOP
- AOP container extensions
- Examples
- IDE integration
- JavaDoc
- FAQ

##### Misc.

- Releases & Release notes
- Build & install
- CVS access
- Mailing lists
- Tasks
- Papers, articles & talks

##### Project Documentation

- About AspectWerkz - Plain Java AOP
- Project Info
- Project Reports
- Development Process

## Official Builds

### Releases

The latest official release is 2.0

Download:

- 2.0
- 2.0.RC3
- 2.0.RC2
- 1.0
- Native HotSwap modules (for Java 1.4).

## Release notes

### Changes in 2.0 final

AspectWerkz 2.0 final comes with bug fixes.

- option -keepjp renamed in -genjp (generate jit join points) (affects offline mode)
- perJVM mixin deployment-model restablished
- after returning advice was not handled properly in some cases
- issue with around advice and set() pointcut could happen with long/double fields
- issue with serialization and advised classes not implementing directly java.io.Serializable
- issue could happen when using hot re-deployment of advised J2EE applications

### New features and changes in release 2.0.RC3

AspectWerkz 2.0.RC3 comes with small features completions and several bug fixes.

- cflowbelow() is supported
- staticinitialization() pointcut (contributed by Alexandru Popescu / Mindstorm)
- patterns can be only annotation defined like within(@Foo), execution(@Tx) etc (contributed by Alexandru Popescu / Mindstorm)
- new `-keepjp` option in offline mode to keep internal statically compiled structure and speed up deployment time

- Aspects.aspectOf() fixed to support aspect reuse
- Advisable API fixed for call side pointcut

### New features and changes in release 2.0.RC2

AspectWerkz 2.0.RC2 comes with several major bug fixes, but comes with feature completion as compared to 1.0 final (cflow and handler support), as well as with new features :AWProxy, per object instance programmatic interception mechanism, and strongly typed `proceed(args..)`.
Features completion from 1.0 final:

- cflow() is supported
- handler() pointcut is supported

New features:

- strongly typed proceed to change invocation arguments from within an around advice - read more
- per object instance programmatic interception - read more
- AWProxy, applying aspects transparently to CGLIB or AspectWerkz proxies - read more

Bug fix:

- Class not found raised for the aspect classes in application servers
- Mixin throwing NPE when using `Mixins.mixinOf`
- issue to match on array types like `String[]`
- some bugs with joinpoints occuring within a constructor
- line number debug information lost after weaving
- `!withincode()` was filtering too much
- compiling on Java 1.3

New distribution:

- To provide better support for Java 5, you now have to use aspectwerkz-jdk5-*.jar when running Java 5. When running Java 1.3/1.4, you must use aspectwerkz-jdk14-*.jar. In the previous release, this jar was not required for Java 1.3/1.4 but this leaded to some issues when running with Java 5, so we made it explicit.

### New features and changes in release 2.0.RC1

AspectWerkz 2.0.RC1 is the first release candidate of the 2.x serie. A lot of improvement have been added (API, semantics, performance) and some 1.x features are not compatible with 2.x.

Read more about the 2.x specific changes in this section.

## Notes on AspectWerkz 1.x

AspectWerkz 1.x documentation and release notes has been moved here. AspectWerkz 1.0 is still actively supported but you are strongly encouraged to migrate to AspectWerkz 2.x.