Modularity and Encapsulation have always been cornerstones of good software engineering. Modularizing concerns is an important way to ensure that there is very little overlap in functionality between software services. Concerns that defy encapsulation are termed Cross-cutting concerns. Cross-cutting concerns make a clear separation of concerns difficult to achieve since they may cut across many modules within a software application. Some examples of such cross-cutting concerns are logging which cross-cuts all logged classes and operations, or caching which cross-cuts all cached objects, or alerting, or message tracking, or auto-reconnect, or queuing, et aliae.
Aspects help to encapsulate cross-cutting expressions in one place. By applying an Advice, at various points in an application called Join-Points, Aspects can alter the behavior of the non-aspect parts of a software application.
The Java Business Integration (JBI) specification, JSR-208, provides a loosely coupled integration model for distributed services within a Service-Oriented Architecture (SOA). The architecture allows dynamic deployment of JBI components and JBI service assemblies that can be used as Aspect and Advice mechanisms to alter the behavior of other services. Once these Aspect and Advice mechanisms are "plugged" in on-the-fly between a Consuming Service and a Provisioning Service through a Service Facade, the architecture provides a mechanism to dynamically define, verify, audit, track, enable, and enforce these cross-cutting concerns.
More information is available on the GlassFish wiki.
You can download the MP3 of this podcast episode directly, or copy and paste the java.net Community Corner mini-talks feed into a podcast client like Juice or iTunes. You can also subscribe via the iTunes Store.