What is 'AOP'?
AOP stands for Aspect-Oriented Programming.
It is seen in many ways as a progression from, but also complementary to, modular and object-oriented programming. Modular and object-oriented programming taught us to structure our code into components, so that the components could be reused as individually deployable units, or interchanged to provide different implementations of the same basic functionality.
AOP recognises the benefits of the component-based approach, but also makes the observation that some parts of the code's functionality necessarily occur in many of the components. For example, logging and security to name but two. AOP calls these cross-cutting concerns or, as you might guess, aspects.
To try out AOP in Java, take a look at one of the following toolkits:
Or to read more about AOP, I suggest the following articles: