AOP is gaining in popularity. However, most of the AOP tools were not designed in the purpose to be applied in any environment (mainly because most of the tools where designed on experimentation purpose). Thus, when trying to use AOP in a specific environment, we can face some issues because, for instance, the environment already supports some builtin aspects that may not be compliant with the AOP tool implementation.
This problem arises because AOP needs to modify the objects/classes of the application in order to work fine. This objet-modification logic is implemented by a specific part of the AOP tool: the weaver. A weaver can be well-fitted to a given environment but could break some important system properties in another one. For instance, an interesting discussion on the AOP Alliance's list beetween Gregor and Rickard seemed to show that AspectJ's weaver implementation for introductions (specific weaving operations) was not well fitted in some environments having some kinds of distribution and persistence cacabilities.