+ Répondre à la discussion Actualité déjà publiée
  1. #1
    Membre éprouvé
    Avatar de LinkinSelim
    Profil pro
    Enseignant Chercheur
    Inscrit en
    mars 2006
    Messages
    365
    Détails du profil
    Informations personnelles :
    Localisation : Algérie

    Informations professionnelles :
    Activité : Enseignant Chercheur

    Informations forums :
    Inscription : mars 2006
    Messages : 365
    Points : 1 017
    Points
    1 017

    Par défaut [AspectJ] Programmation orientée aspect en Java avec AspectJ

    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.

  2. #2
    Membre à l'essai
    Inscrit en
    octobre 2003
    Messages
    30
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : octobre 2003
    Messages : 30
    Points : 24
    Points
    24

    Par défaut

    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) ?

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    avril 2008
    Messages
    325
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : avril 2008
    Messages : 325
    Points : 340
    Points
    340

    Par défaut

    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.

  4. #4
    Membre éprouvé
    Avatar de LinkinSelim
    Profil pro
    Enseignant Chercheur
    Inscrit en
    mars 2006
    Messages
    365
    Détails du profil
    Informations personnelles :
    Localisation : Algérie

    Informations professionnelles :
    Activité : Enseignant Chercheur

    Informations forums :
    Inscription : mars 2006
    Messages : 365
    Points : 1 017
    Points
    1 017

    Par défaut

    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) ?
    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 :
    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
    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 -output out.jar
    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.

    Y a-t-il une approche similaire pour C# ? - je n'ai pas trouvé d'articles récents sur le sujet.
    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 connexes
    http://aspectdng.tigris.org/
    http://sourceforge.net/projects/aspectdng/

    Bonne chance à tous

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    avril 2008
    Messages
    325
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : avril 2008
    Messages : 325
    Points : 340
    Points
    340

    Par défaut

    Citation Envoyé par LinkinSelim Voir le message
    Oui, il existe des plateforme pour programmer avec les aspect pour .net, a ma connaissance il y a aspectDNG, je m'y connais pas trop mais je te file deux trois liens connexes (...)
    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

  6. #6
    Membre éprouvé
    Avatar de LinkinSelim
    Profil pro
    Enseignant Chercheur
    Inscrit en
    mars 2006
    Messages
    365
    Détails du profil
    Informations personnelles :
    Localisation : Algérie

    Informations professionnelles :
    Activité : Enseignant Chercheur

    Informations forums :
    Inscription : mars 2006
    Messages : 365
    Points : 1 017
    Points
    1 017

    Par défaut

    Oui, il semble bien que pour .net, il n'existe pas vraiment une plateforme mature pour la programmation orientée aspect

  7. #7
    Membre à l'essai
    Inscrit en
    octobre 2003
    Messages
    30
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : octobre 2003
    Messages : 30
    Points : 24
    Points
    24

    Par défaut

    Citation Envoyé par LinkinSelim Voir le message
    Oui c'est possible avec le compilateur ajc en lui passant simplement le répértoire contenant les fichiers .class avec le parametre -inpath
    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.

  8. #8
    Nouveau membre du Club
    Homme Profil pro
    Consultant informatique
    Inscrit en
    octobre 2002
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : octobre 2002
    Messages : 20
    Points : 34
    Points
    34

    Par défaut

    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 :
    1. Page 7, exceptions : un } est de trop après le catch (2ème ligne);
    2. 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? ;
    3. 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.
    Patrick MACHO
    patrickmacho@infomaniak.ch

  9. #9
    Membre éprouvé Avatar de noOneIsInnocent
    Homme Profil pro
    Inscrit en
    mai 2002
    Messages
    1 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : mai 2002
    Messages : 1 037
    Points : 1 230
    Points
    1 230

    Par défaut

    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

  10. #10
    Nouveau Candidat au Club
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    février 2014
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : février 2014
    Messages : 1
    Points : 1
    Points
    1

    Par défaut Excellent, et très clair

    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...

  11. #11
    Membre éprouvé
    Avatar de LinkinSelim
    Profil pro
    Enseignant Chercheur
    Inscrit en
    mars 2006
    Messages
    365
    Détails du profil
    Informations personnelles :
    Localisation : Algérie

    Informations professionnelles :
    Activité : Enseignant Chercheur

    Informations forums :
    Inscription : mars 2006
    Messages : 365
    Points : 1 017
    Points
    1 017

    Par défaut

    Citation Envoyé par etienne_sf Voir le message
    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

Discussions similaires

  1. [AspectJ] Création d'un aspect de journalisation avec AspectJ
    Par Baptiste Wicht dans le forum Autres
    Réponses: 8
    Dernier message: 08/06/2013, 16h58
  2. [AspectJ] Programmation par aspect (AOP) avec AspectJ
    Par Bassemca dans le forum Autres
    Réponses: 1
    Dernier message: 19/12/2009, 13h50
  3. [AspectJ] programmation orientée aspect
    Par soeursourire dans le forum Autres
    Réponses: 6
    Dernier message: 11/02/2006, 20h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo