This week, our favorite resource from our Web Resources and Downloads directories is "Introducing AspectJ", a technical article available from IBM developerWorks, authored by Nicholas Lesiecki of eBlox Inc. (and author of Java Tools for Extreme Programming ). As you can infer, his paper "Improve Modularity with Aspect-Oriented Programming" is an introduction to the new programming methodology via the use of AspectJ, originally from the people at the Xerox PARC Software Design Area.
Briefly, aspect-oriented programming (AOP) is a new way of looking at levels of abstraction in software development. As Lesiecki describes it: AOP is a "technique that allows programmers to modularize crosscutting concerns (behavior that cuts across the typical divisions of responsibility, such as logging). AOP introduces aspects, which encapsulate behaviors that affect multiple classes into reusable modules."
AspectJ is an aspect-oriented extension to the Java programming language. Lesiecki's article "introduces AspectJ and illustrates the design benefits that result from its use." It also provides links to many important destinations on the Web for continuing your investigation into AOP in Java, notably the AspectJ.org site.
AOP is an intriguing avenue of inquiry and is emerging as a building block of what software gurus such as Gregor Kiczales (formerly with Xerox PARC), John Vlissides (with IBM), Charles Simonyi (with Microsoft), and Grady Booch (with Rational) call "multifaceted software."
Booch writes that: "AOP is subtly different than OOP, but it appears to complement -- not replace -- traditional OOP. AOP, in a manner similar to classic patterns and Kruchten's architectural views, recognizes that there are abstractions on a plane different than object-oriented abstractions, which in turn are on a plane different than our executable systems."
If you're a serious software developer, you owe it to yourself to explore the world of AOP. You can get started by following the link on our directory page. Enjoy the journey.
If you've got a cool resource or download in the field of software development you'd like to share with the world, visit our user submission pages and fill out the simple forms. We'll review them, and post them quickly to our directories. Plus, once a week, we'll pick a particularly useful resource and highlight it for all our readers to enjoy.