In sections 1.2 and 1.3, we explain that it is difficult to agree on a common AOP model and implementation because it is too tightly linked to the context of use and the environment (implementation may differ in a pure Java approach and in a J2EE-compliant approach). However, we think that it is possible to agree on a common architectural vision for Aspect Oriented Environnments (AOE).
Indeed, when building an Aspect-Oriented Environment (AOE)1, designers need to define an architecture. In most of the existing AOEs, the architecture defines and combines some elementary modules/components/APIs that implement the basic functions of the system. By looking at the existing tools, we can identify common components (i.e. components that provides close functionalities in the considered architecture, but not necesseraly using the same implementation techniques). For instance, JBoss' weaver uses Javassist to implement an interception mechanism (which is instrumented at the client's side) whilst JAC's weaver uses BCEL to implement an interception mechanism (which is instrumented at the server's side). Other techniques like intercessing the JIT compiler can be employed to perform the same effect. All of them heavily rely on the environment.
In the next section, we will try to extract components that can be useful to AOEs. These components may be used to build contextual-dependent AOEs.