Accueil
Programmation
AspectJ   Basic   C   C++   C#   Eiffel   Java   JavaScript   Pascal   PHP   Python   Rexx   Ruby   Scriptol   Tcl
Balises
HTML  XML   XAML   XUL
Interrogation
SQL
English

AspectJ - Programmation orientée aspects

Aspect J est une extension Java qui implémente la programmation orienté-aspect. Une technique qui modularise les "concerns" transversaux. 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

- Supplément à Java: peut être ajouté à un programme existant (et remplacer un tas de code ou lui ajouter des contrôles ou traitement de deboguage).
- Les join points représentent des points défini dans l'exécution d'un programme, tels l'appel d'une méthode, la réalisation d'une exception, et ainsi de suite.
- Un join point peut contenir d'autres join points.
- Un pointcut est un construct qui comprend un ensemble de join point, selon un critère donné. Par exemple l'ensemble des méthodes à l'exécution d'un package.
- L'advice est le code qui est exécuté avant, après, ou pendant un join point.
- Le compilateur ajc génère à partir d'un source AspectJ soit un source .java ou directement un fichir bytecode .class.
- Le code AspectJ peut être réutilisé dans d'autres programmes.

Pourquoi utiliser AspectJ?

- 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.
- Améliore la modularité et la réusabilité du code.
- Particulièrement utile pour déboguer de grands projets.

Sites

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 quelque code après l'appel.
public aspect xxxx
{
   pointcut anyMethod() : 
           execution (* org.eclipse.. *(..));
   before(): anyMethod()
   {
     ... quelque code...
   }
   after() : anyMethod()
   {
     ... quelque code...
   } 
} 

Accueil