AspectJ is an aspect-oriented extension to the Java programming language created at Xerox PARC. AspectJ weaves aspects into Java bytecode to implement crosscutting concerns. Aspects are written in a combination of Java and AspectJ and are woven on a incremental per-class basis into Java (source or .class files) to produce standard Java bytecodes (making Java and AspectJ compatible).