« AspectJ » : différence entre les versions
m v2.05 - Homonymies : Correction de 1 lien - Eclipse |
|||
(18 versions intermédiaires par 17 utilisateurs non affichées) | |||
Ligne 1 : | Ligne 1 : | ||
{{ébauche|informatique}} |
{{ébauche|informatique}} |
||
{{Infobox Logiciel}} |
|||
{{traduction}} |
|||
⚫ | '''AspectJ''' est une extension [[Programmation orientée aspect|orientée aspect]], créée à [[Xerox PARC]], pour le langage de programmation [[Java (technologie)|Java]]. Cette extension est disponible dans les projets open-source [[Eclipse (fondation)|Eclipse]], de manière autonome ou sous forme d'extension pour [[Eclipse (projet)|l'environnement de développement Eclipse]]. AspectJ est devenu le standard, du fait de son utilisation répandue, pour la [[Programmation orientée aspect]] en mettant l'accent sur la simplicité et la facilité de mise en œuvre pour les utilisateurs finaux. AspectJ se base sur la syntaxe du langage [[Java (technologie)|Java]] et s'intègre aux [[Environnement de développement intégré|IDE]] pour afficher sa structure transversale depuis sa première publication en 2001. |
||
Le tissage des aspects est réalisé sur les classes compilées. Ce tissage peut être établi au moment de la compilation du code source ou lors de l'exécution, lors du chargement des classes par la machine virtuelle<ref>{{lien web |titre=Chapter 5. Load-Time Weaving |url=http://www.eclipse.org/aspectj/doc/next/devguide/ltw.html |site=eclipse.org |consulté le=18-04-2023}}.</ref>. |
|||
⚫ | '''AspectJ''' est une extension [[Programmation orientée aspect|orientée aspect]], créée à [[Xerox PARC]], pour le langage de programmation [[Java (technologie)|Java]]. Cette extension est disponible dans les projets open-source [[Eclipse (fondation)|Eclipse]], de manière autonome ou sous forme d'extension pour [[Eclipse|l'environnement de développement Eclipse]]. AspectJ est devenu le standard, du fait de son utilisation répandue, pour la [[Programmation orientée aspect]] en mettant l'accent sur la simplicité et la facilité de mise en œuvre pour les utilisateurs finaux. AspectJ se base sur la syntaxe du langage [[Java (technologie)|Java]] et s'intègre aux [[Environnement de développement intégré|IDE]] pour afficher |
||
Le tissage d'aspect est géré de manière statique. |
|||
==Langage de description simple== |
== Langage de description simple == |
||
Tout programme [[Java (technologie)|Java]] est compatible AspectJ. Toutefois, AspectJ permet également |
Tout programme [[Java (technologie)|Java]] est compatible AspectJ. Toutefois, AspectJ permet également aux programmeurs de définir des constructions spéciales nommées ''"aspects"''. Les "aspects" peuvent contenir plusieurs entités inutilisables par des classes standard. |
||
On trouve : |
On trouve : |
||
*[[Déclaration inter-types]] - permet au programmeur d’introduire des méthodes, champs ou interfaces à des classes existantes depuis l'"aspect". L'exemple suivant ajoute une méthode <code>acceptVisitor</code> (voir [[Visiteur (motif de conception)]]) à la classe <code>Point</code> : |
* [[Déclaration inter-types]] - permet au programmeur d’introduire des méthodes, champs ou interfaces à des classes existantes depuis l'"aspect". L'exemple suivant ajoute une méthode <code>acceptVisitor</code> (voir [[Visiteur (motif de conception)]]) à la classe <code>Point</code> : |
||
<syntaxhighlight lang="java"> |
|||
aspect VisitAspect { |
|||
void Point.acceptVisitor(Visitor v) { |
|||
v.visit(this); |
|||
:::<code>}</code> |
|||
} |
|||
::<code>}</code> |
|||
} |
|||
</syntaxhighlight> |
|||
*"[[Pointcut]]" - non traduit par convention ; pourrait se traduire par "Point de césure" - permet au programmeur de spécifier des "[[Join point]]s" - non traduit par convention ; pourrait se traduire par "Point de jonction" - (définis à des moments clés de l'exécution d'un programme, comme l'appel à une méthode, l'instanciation d'objet ou l'accès à une variable). Tout "poincut" est une expression vérifiant la correspondance d'un "join point". |
* "[[Pointcut]]" - non traduit par convention ; pourrait se traduire par "Point de césure" - permet au programmeur de spécifier des "[[Join point]]s" - non traduit par convention ; pourrait se traduire par "Point de jonction" - (définis à des moments clés de l'exécution d'un programme, comme l'appel à une méthode, l'instanciation d'objet ou l'accès à une variable). Tout "poincut" est une expression vérifiant la correspondance d'un "join point". |
||
Par exemple, ce "pointcut" fait correspondre l'exécution de n'importe quelle méthode d'instance d'un objet de type <code>Point</code> dont le nom commence par <code>set</code> : |
Par exemple, ce "pointcut" fait correspondre l'exécution de n'importe quelle méthode d'instance d'un objet de type <code>Point</code> dont le nom commence par <code>set</code> : |
||
<syntaxhighlight lang="java">pointcut set() : execution(* set*(..) ) && this(Point);</syntaxhighlight> |
|||
*"[[Advice]]" - non traduit par convention - permet au programmeur de spécifier le code à exécuter au "[[Join point]]" remplissant la condition d'un "[[pointcut]]". Les actions peuvent être exécutées ''avant'', ''après'' ou ''autour'' du "[[Join point]]" spécifié. Ici, l'"advice" rafraîchit l'affichage à chaque fois que quelque chose de l'objet <code>Point</code> est <code>set</code>, grâce au "pointcut" définis plus tôt : |
* "[[Advice]]" - non traduit par convention; pourrait se traduire par "Greffon" - permet au programmeur de spécifier le code à exécuter au "[[Join point]]" remplissant la condition d'un "[[pointcut]]". Les actions peuvent être exécutées ''avant'', ''après'' ou ''autour'' du "[[Join point]]" spécifié. Ici, l'"advice" rafraîchit l'affichage à chaque fois que quelque chose de l'objet <code>Point</code> est <code>set</code>, grâce au "pointcut" définis plus tôt : |
||
<syntaxhighlight lang="java"> |
|||
after () : set() { |
|||
Display.update(); |
|||
::<code>}</code> |
|||
} |
|||
</syntaxhighlight> |
|||
AspectJ supporte également des formes statiques limitées de vérification et réutilisation d'aspect basées sur les "pointcuts" (par héritage). |
AspectJ supporte également des formes statiques limitées de vérification et réutilisation d'aspect basées sur les "pointcuts" (par héritage). |
||
Ligne 29 : | Ligne 33 : | ||
== Voir également == |
== Voir également == |
||
* {{en}}[http://www.eclipse.org/aspectj/doc/released/progguide/index.html Guide de programmation AspectJ] pour une description plus détaillée du langage. |
* {{en}} [http://www.eclipse.org/aspectj/doc/released/progguide/index.html Guide de programmation AspectJ] pour une description plus détaillée du langage. |
||
==Références== |
== Références == |
||
{{Traduction/Référence|en|AspectJ|216847648}} |
{{Traduction/Référence|en|AspectJ|216847648}} |
||
<references/> |
|||
{{ |
{{Palette|Fondation Eclipse}} |
||
{{Portail|logiciels libres|programmation informatique}} |
|||
[[Catégorie:Eclipse]] |
[[Catégorie:Eclipse]] |
||
[[Catégorie:Langage de programmation]] |
[[Catégorie:Langage de programmation]] |
||
[[Catégorie:Java (langage)]] |
|||
[[bg:AspectJ]] |
|||
[[de:AspectJ]] |
|||
[[en:AspectJ]] |
|||
[[es:AspectJ]] |
|||
[[it:AspectJ]] |
|||
[[ja:AspectJ]] |
|||
[[ms:AspectJ]] |
|||
[[pl:AspectJ]] |
|||
[[tr:AspectJ]] |
Dernière version du 6 janvier 2024 à 20:26
AspectJ est une extension orientée aspect, créée à Xerox PARC, pour le langage de programmation Java. Cette extension est disponible dans les projets open-source Eclipse, de manière autonome ou sous forme d'extension pour l'environnement de développement Eclipse. AspectJ est devenu le standard, du fait de son utilisation répandue, pour la Programmation orientée aspect en mettant l'accent sur la simplicité et la facilité de mise en œuvre pour les utilisateurs finaux. AspectJ se base sur la syntaxe du langage Java et s'intègre aux IDE pour afficher sa structure transversale depuis sa première publication en 2001.
Le tissage des aspects est réalisé sur les classes compilées. Ce tissage peut être établi au moment de la compilation du code source ou lors de l'exécution, lors du chargement des classes par la machine virtuelle[2].
Langage de description simple
[modifier | modifier le code]Tout programme Java est compatible AspectJ. Toutefois, AspectJ permet également aux programmeurs de définir des constructions spéciales nommées "aspects". Les "aspects" peuvent contenir plusieurs entités inutilisables par des classes standard. On trouve :
- Déclaration inter-types - permet au programmeur d’introduire des méthodes, champs ou interfaces à des classes existantes depuis l'"aspect". L'exemple suivant ajoute une méthode
acceptVisitor
(voir Visiteur (motif de conception)) à la classePoint
:
aspect VisitAspect {
void Point.acceptVisitor(Visitor v) {
v.visit(this);
}
}
- "Pointcut" - non traduit par convention ; pourrait se traduire par "Point de césure" - permet au programmeur de spécifier des "Join points" - non traduit par convention ; pourrait se traduire par "Point de jonction" - (définis à des moments clés de l'exécution d'un programme, comme l'appel à une méthode, l'instanciation d'objet ou l'accès à une variable). Tout "poincut" est une expression vérifiant la correspondance d'un "join point".
Par exemple, ce "pointcut" fait correspondre l'exécution de n'importe quelle méthode d'instance d'un objet de type Point
dont le nom commence par set
:
pointcut set() : execution(* set*(..) ) && this(Point);
- "Advice" - non traduit par convention; pourrait se traduire par "Greffon" - permet au programmeur de spécifier le code à exécuter au "Join point" remplissant la condition d'un "pointcut". Les actions peuvent être exécutées avant, après ou autour du "Join point" spécifié. Ici, l'"advice" rafraîchit l'affichage à chaque fois que quelque chose de l'objet
Point
estset
, grâce au "pointcut" définis plus tôt :
after () : set() {
Display.update();
}
AspectJ supporte également des formes statiques limitées de vérification et réutilisation d'aspect basées sur les "pointcuts" (par héritage).
Voir également
[modifier | modifier le code]- (en) Guide de programmation AspectJ pour une description plus détaillée du langage.
Références
[modifier | modifier le code]- (en) Cet article est partiellement ou en totalité issu de l’article de Wikipédia en anglais intitulé « AspectJ » (voir la liste des auteurs).
- « Release 1.9.22.1 », (consulté le )
- « Chapter 5. Load-Time Weaving », sur eclipse.org (consulté le ).