dynaop 1.0 beta
When we started our project six months ago, we didn't consider AOP at first. After digging deeper into the design, we recognized the unwelcome presence of crosscutting concerns and couldn't deny the urge to reduce dependencies and avoid rote, error-prone code. With an ideal AOP framework in mind, I assessed the landscape.
I thought AspectJ and AspectWerkz were impressively powerful but not well suited to your average J2EE developer. I wanted to steer users toward a good design more than I wanted a pointcut to pick out a type cast. The remaining frameworks all lacked a number of key features as well as the sense of refinement I needed to sell my team. I rolled up my sleeves and started dynaop.
Today dynaop surpasses my original vision with:
- an innovative BeanShell configuration
- a development manual in addition to full Javadocs
- per-proxy interceptors and mixins
- simple hooks for tool support with an example Javadoc-like tool
- 100% support for object serialization
- custom pointcut implementations
- support for JDK 1.3 and later
- a polished and battle tested API
- a low impact on development, J2EE and IDE friendly
- LGPL license
In its category, dynaop blows the doors off competitors:
10^6 invocations/sec. (higher is better)
dynaop 1.0 beta 3.1
JBoss 4.0 DR2 1.6
Spring 1.0 M4 0.7
Nanning 0.9 0.5
The test invoked two different method types, using dynamic proxies (except for JBoss which isn't proxy-based) and a chain of 3 empty interceptors. The test ran on Sun JDK 1.4.1 with the "-server" VM setting. It allotted each framework identical and ample ramp up time.
I'll give my first public, post release talk at the Gateway Java Software Symposium, March 19-21 in St. Louis, MO. I hope to see you there.
Disclaimer: this is beta software; bugs are present and the documentation is in dire need of grammar check.