Aspect-oriented extensions to the Java language - that is, extensions which allow some degree of separation of crosscutting concerns (concerns which would otherwise cut across classes and/or methods).