AspectJ
AspectJ is a seamless aspect-oriented extension to the Java programming language that enables
clean modularization of crosscutting concerns, such as error checking and handling, synchronization,
performance optimizations, monitoring, logging, debugging support, and multi-object protocols.