AOP is an emerging programming paradigm that augments the benefits of existing paradigms by providing language constructs that support the modularization of crosscutting concerns.
Interest in AOP is growing steadily within the developer community, and AOP is starting to penetrate the mainstream with major application server vendors moving to integrate the technology within their products.
Following are some of the main reasons to consider adopting AOP:
Despite the benefits, AOP has yet to be universally accepted by the Java community, with some high-profile software engineers urging a cautious approach to what still is an emerging technology. However, moving to AOP does not require an all-or-nothing approach, and a low-risk incremental adoption of the paradigm is possible.
Perhaps the core strength of AOP lies in the new dimension it brings to existing programming paradigms. We briefly discussed the possibilities surrounding the twining of AOP with MDA.
Another interesting combination would be AOP with rule-based languages. This scenario sees business analysts using business-domain languages to describe business processes, while software engineers weave in aspects to turn business descriptions into software solutions. With this future vision of software development, business analysts become the hunchbacks, while the software engineers are the dragons. Personally, I'd rather be a dragon than a hunchback.
AOP is an extensive subject, and it has been necessary to be very selective in order to cover the topic within the confines of a single chapter. Further information on AOP is available from the aspect-oriented software development Web site at http://aosd.net.
Ramnivas Laddad's "I Want My AOP Series," a three-part article on AOP based on AspectJ, can be found on the JavaWorld site. See http://www.javaworld.com/javaworld/jw-01-2002/jw-0118-aspect.html.