AspectJ, la Programmation Orientée Aspects en Java

Aspect J est une extension Java pour implémenter la programmation orienté-aspect, une technique qui modularise les "concerns" transversaux.

L'utilisation d'AspectJ peut réduire considérablement la taille d'un programme Java sans perte de performance, et simplifie la conception d'autant.
Elle améliore la modularité et la réusabilité du code.
Elle est particulièrement utile pour déboguer de grands projets.

AspectJ existe depuis 2001 et la POA est développée par le Palo Alto Research Center depuis 1994. Ici l'unité n'est pas la classe, mais un concern, qui se partage entre plusieurs classes. Les concern peuvent être des propriétés, des zones d'intérêt, d'un système et la POA décrit leurs relations, les compose ensemble dans une programme. Les aspects encapsulent un comportement commun à plusieurs classes.
Les aspects d'un système peuvent être insérés, changés, supprimés au stade de la compilation.

Caractéristiques de AspectJ

Exemple de code

Cet aspect concerne l'exécution de chaque méthode dans le programme Eclipse.
Un advice execute quelque code avant l'appel et un autre advice quelque code après l'appel.

public aspect xxxx
{
   pointcut anyMethod() : 
           execution (* org.eclipse.. *(..));
   before(): anyMethod()
   {
     ... quelque code...
   }
   after() : anyMethod()
   {
     ... quelque code...
   } 
} 

Outils et documentation

Langages de programmation AspectJ - Basic - C - CIL - C++ - C++11 - C# - Dart - Eiffel - Go - Java - JavaScript - JavaFX Script - Pascal - PHP - Python - QML - Rexx - Ruby - Scala - Scriptol - Tcl - HTML - XML - XAML - XUL - SQL