J'ai écris un tutoriel Java sur la programmation orientée aspect en Java avec aspectJ
le voila http://skebir.developpez.com/tutoriels/java/aspectj/
Cette discussion a pour but d'avoir d'éventuels retours.
J'ai écris un tutoriel Java sur la programmation orientée aspect en Java avec aspectJ
le voila http://skebir.developpez.com/tutoriels/java/aspectj/
Cette discussion a pour but d'avoir d'éventuels retours.
Bonjour,
Tout d'abord merci pour cet article très intéressant, très bien construit, et très didactique.
Pour ma part, mon usage de l'AOP s'est jusqu'ici limité à Spring AOP, et plus récemment AspectJ que j'utilise avec Spring (via les annotations) pour du tissage au chargement des classes.
Je ne connaissais absolument pas la notion de 'transversal statique' permettant l'extension strucurelle et plus seulement comportementale.
Déjà que l'AOP me posait des questions existentielles du genre "Ce bout de code fait-il partie intégrante de ma logique métier, et dans ce cas il reste dans mes services métiers, où concerne t-il une préoccupation à part entière qui mériterait d'être sorti et greffé ?", mais avec cette notion de 'transversal statique', ca va me faire de beaux noeuds au cerveau ...
Le mode de tissage au classloading m'a posé souci récemment et je m'étais alors demané s'il était possible de tisser des greffons dans une phase de compilation plutôt qu'au classloading. J'ai une part de réponse avec ton article, mais j'aurais quand même une question. Est-il possible de tisser des greffons, dans une phase de compilation, non pas sur du code source, mais sur du bytecode (en gros, travailler sur des .class existants pour générer des .class tissés) ?
Waouh ! Sujet hautement intéressent et super article !
Y a-t-il une approche similaire pour C# ? - je n'ai pas trouvé d'articles récents sur le sujet.
Oui c'est possible avec le compilateur ajc en lui passant simplement le répértoire contenant les fichiers .class avec le parametre -inpath comme suit :Le mode de tissage au classloading m'a posé souci récemment et je m'étais alors demané s'il était possible de tisser des greffons dans une phase de compilation plutôt qu'au classloading. J'ai une part de réponse avec ton article, mais j'aurais quand même une question. Est-il possible de tisser des greffons, dans une phase de compilation, non pas sur du code source, mais sur du bytecode (en gros, travailler sur des .class existants pour générer des .class tissés) ?
J'ai essayé cette commande, elle marche nickel, mais le seul souci c'est qu'elle génére les fichiers classes dans le répértoire courant. Pour contourner ce problème on peut faire appél à l'option -output comme ca
Code : Sélectionner tout - Visualiser dans une fenêtre à part ajc -cp c:\aspectj1.6\lib\aspectjrt.jar -source 1.6 -inpath org/sdf org/sdf/Caching.aj
Sinon, si ton application est deja compilé et packagé dans un jar. Alors le tissage des aspects peut est semblable à la commande précédente en précisant dans l'option -inpath ton fichier .jar et dans l'option -output le .jar de l'application augmentée avec l'aspect.
Code : Sélectionner tout - Visualiser dans une fenêtre à part ajc -cp c:\aspectj1.6\lib\aspectjrt.jar -source 1.6 -inpath org/sdf org/sdf/Caching.aj -output out.jar
Oui, il existe des plateforme pour programmer avec les aspect pour .net, a ma connaissance il ya aspectDNG, je m'y connais pas trop mais je te file deux trois liens connexesY a-t-il une approche similaire pour C# ? - je n'ai pas trouvé d'articles récents sur le sujet.
http://aspectdng.tigris.org/
http://sourceforge.net/projects/aspectdng/
Bonne chance à tous
Merci mais comme je disais : rien de récent... depuis 4 ans
De plus :AspectDNG : This project is not supported any more !!! Due to the participants' activity and to .NET (too) rapid changes, we don't have enough time to maintain aspectdng. Thanks for having used aspectdng. Tom
Oui, il semble bien que pour .net, il n'existe pas vraiment une plateforme mature pour la programmation orientée aspect
Ok merci.
En fait, je n'avais pas bien réalisé , mais en parcourant le "The AspectJtm Development Environment Guide", AspectJ travaille au niveau bytecode, qu'il s'agisse d'un tissage lors d'une phase de compilation via ajc, ou d'un tissage runtime au chargement des classes.
Sur le sujet de l'AOP dans .net (que je ne connais absolument pas), j'ai tout de suite pensé que si Spring pour Java proposait de l'AOP, il devait en être de même pour Spring .net .
Bon, je suis tombé sur ce blog
http://eeichinger.blogspot.com/search/label/aop
où on parle de Spring .net AOP, mais où sont également cités Castle.DynamicProxy(AOP selon une approche proxy) et LinFu.
Merci beaucoup pour cet article qui permet d'y voir beaucoup plus clair.
Il est très facile à comprendre et bien illustré.
Quelques petites remarques suite à ma lecture :
- Page 7, exceptions : un } est de trop après le catch (2ème ligne);
- Page 14 : tableau : sur la ligne Advise execution, il y a 2 fois"L'aspect appelant". Ne serait-ce pas l'aspect appelé dans la 3ème colonne? ;
- Exemple III-H : ce n'est que mon humble avis, mais quelques lignes d'explications sur l'aspect updateDisplay seraient les bienvenues.
Super tuto et encore merci.
Bonjour
j'essaie d'accèder à votre tutoriel au format PDF mais en vain (erreur 500)
Pourriez-vous me le faire parvenir par un autre moyen SVP ?
Merci
Merci pour ce tutoriel très bien fait... et qui montre très bien un cas concret de gain lié à l'AspectJ.
J'embarque ça direct dans mes prochains projets... Enfin, je vais essayer de faire comprendre ça à mes clients.
;-)
Une suggestion : ce tutoriel a été écrit il y a 5 ans maintenant. Il serait sympa d'avoir un petit encart indiquant ce qui a changé (ou pas) depuis. Voire une mise à jour du tutoriel...
Bonjour Etienne,
Je te remercie de l'intêret que tu portes à cet article tutoriel.
Tu peux commencer par faire comprendre à tes clients le fonctionnement d'un aspect qui gère le cache pour une fonction coûteuse comme le factoriel ou fibonacci.
Pour ta suggéstion, je suppose aussi que beaucoup de choses ont été introduits dans les dernières version d'AspectJ (je pense principalement aux annotations). Mais je crois que l'exemple reste correct syntaxiquement. À vrai dire, je n'ai pas le temps de porter ces nouvautés directement sur l'article. J'espère donc que les lecteurs pourront jetter un coup d'oeil sur ce fil de discussion.
Bien à vous
Salim
Partager