On the Problems of the JPMs

Increasingly, aspect-oriented programming (AOP) [1] has been considered to pursue a better modularization of object-oriented programs, especially when representing crosscutting concerns. However, current aspect-oriented frameworks such as AspectJ [2], AspectWerkz [3], JMangler [4] and others, operate in a way directly related to the code. They define some points in the computational flow, named join points, loci of the crosscutting concerns and provide a pointcut definition language that allows the definition of some predicates on those join points to detect where and when a decoupled crosscutting concern has to be woven again. Unfortunately, these mechanisms are too tightly connected to the program structure and syntax, in fact join points consider only simple cases, such as method calls, and the pointcut languages are based on a linguistic pattern matching, respectively. Therefore, when using it massively, a number of problems raise due to the strict coupling between the pointcut definitions and the implementation: