AspectJ
Estensione di Java per la programmazione orientata agli aspetti. Xerox PARC, Gregor Kiczales e altri, 2001. Permette di definire «aspetti» trasversali al codice normale (logging, transazioni, sicurezza).
Pointcut (dove) e advice (cosa). Weaving in compilazione o in fase di caricamento. Spring AOP ne è un sottoinsieme minimo (solo pointcut sull'esecuzione di metodi). L'entusiasmo per l'AOP fu grande tra il 2003 e il 2008, poi si è spento: molti casi d'uso sono stati rilevati da decoratori (Python @decorator, JS), pipeline di middleware o semplice composizione. Vive ancora nella gestione delle transazioni di Spring e nei framework di logging Java.