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
- Aspect.
Site officiel de la programmation orientée-aspect. - AspectJ Eclipse.
Le projet AspectJ fait partie d'Eclipse. - DeveloperWorks.
Lisez l'article détaillé de N. Lesiecki.
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...
}
}
|
