Accueil🇫🇷Chercher

AspectJ

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

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 classe Point :
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 est set, 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

Références

  1. « Release 1.9.19 », (consulté le )
  2. « Chapter 5. Load-Time Weaving », sur eclipse.org (consulté le ).
Cet article est issu de wikipedia. Text licence: CC BY-SA 4.0, Des conditions supplémentaires peuvent s’appliquer aux fichiers multimédias.