Towards a Formal Semantics for AspectJ Weaving
This paper describes a formal semantics of advice weaving in AspectJ. Since the version 1.1, AspectJ language is developed using bytecode weaving, which combines aspects and classes to produce .class les that run in a Java Virtual Machine (JVM). In AspectJ, the advice weaving is done statically by inserting the advice functionality in some regions of the code. These regions are join points declared by pointcuts. In this paper, the authors focus only on static pointcuts, i.e., pointcuts that correspond directly to locations in the bytecode. AspectJ dynamic pointcuts such as target, this, and cflow, which are implemented by the AspectJ compiler by inserting conditional logic, are not in the focus of this paper.