AspectJ : Programmation orientée aspects pour JAVA

Ikrame Meskine
ELP-2018
Published in
3 min readJun 1, 2018

Introduction

Les programmeurs sont maintenant largement habitués à la programmation orientée objets (POO). Cependant, depuis quelques années, les applications sont de plus en plus nombreuses et imposent une nouvelle gestion de leur développement. La POA depuis 1999 tente de répondre à ces attentes et vient en soutien de la POO. C’est cette même équipe à l’origine de la POA qui a proposé le langage AspectJ dont la première version officielle est parue en 2001.

Principe de la POA

En effet, il s’agit d’un paradigme de programmation permettant de dissocier les différentes fonctionnalités d’un point de vue de l’application. Ces fonctionnalités, techniques et transversales à l’application, sont nommées aspects. La POA permet donc de séparer le code technique qui gère les fonctionnalités transverses, du code métier qui gère le cœur de l’application. Le code est ainsi moins lourd et les codes, plus facilement gérables en parallèle, ne s’entremêlent pas puisque les fonctionnalités transverses sont gérées sous forme d’aspects avec la POA. En cela, les temps de traitements sont moins importants et les codes bien plus facilement modulables et réutilisables ce qui favorise l’amélioration rapide des applications.

Le fonctionnement d’AspectJ

Comme expliqué ci-dessus, AspectJ et la POA en général, sont utilisés conjointement à la POO. En d’autres termes, AspectJ fonctionne avec JAVA et ne le remplace pas. Si vous êtes amenés à utiliser AspectJ, il est important de garder en mémoire les concepts fondamentaux de la POA qui s’appliquent à cette extension de JAVA.

Premièrement, on appelle greffon un ensemble d’opérations techniques ou programme qui sont insérés à des points de jonctions (emplacement précis) puis exécutés. Ensuite, les jointpoints ou points d’insertion sont les endroits où il est autorisé d’utiliser les aspects. Il existe deux types de jointpoints :

- Les Joinpoints ou point d’éxécution : emplacement dans le code où les aspects sont invoqués au milieu du traitement d’autres paramètres. Ils font référence à différents types d’événements du programme : appel et exécution de méthode, appel constructeur, etc.

- Les jointcut ou point de coupe : ensemble de points de jonction, ensemble d’appels de méthodes par exemple.

Un aspect peut également exécuter des blocs de code nommés bloc Advices. Cela fonctionne de la manière suivante : un point de coupe est intercepté pour un aspect alors le bloc Advices est exécuté à ces endroits du code.

Et enfin, le tissage est l’action qui permet au tisseur ajc (AspectJCompiler) d’insérer les aspects afin de fournir l’application souhaitée. Il peut être effectué de deux manières : statique ou dynamique. On le définit comme statique s’il a lieu avant l’exécution du code. Cette méthode de tissage est très performante mais impose une nouvelle compilation à chaque modification des aspects. Dans le cas contraire, il est dynamique et assure une modification aisée des aspects (très utile pour les serveurs). En résumé, le tisseur est responsable de la mise en œuvre de la POA. Il prend en entrée des classes JAVA et des aspects et fournit en sortie des classes améliorées/augmentées par les aspects.

On commence toujours par définir les fonctionnalités transverses qu’on implémente ensuite sous forme d’aspects et enfin ces aspects sont tissés au code. Un schéma ci-dessous résume le fonctionnement de la POA qu’AspectJ suit également.

[2] Principe de fonctionnement de la Programmation Orientée Aspect

Conclusion

AspectJ est un outil à la programmation orientée aspect pour JAVA. Il permet une nouvelle gestion du développement des applications sous forme d’aspects techniques. Grâce aux codes plus facilement modifiables et réutilisables, AspectJ permet aux applications d’évoluer rapidement. Son principe est simple d’assimilation : définir des fonctionnalités transverses, les implémenter sous forme d’aspects et les tisser au code java déjà existant pour fournir l’application. Les exemples d’utilisation d’AspectJ dans la conception d’applications sont nombreuses. Par exemple, ajouter la fonctionnalité logging (enregistrement sur l’application) est intéressante à gérer avec AspectJ. En effet, il s’agit d’une fonctionnalité transverse à toutes les applications. Avec AspectJ, la fonctionnalité logging est gérée de manière indépendante à l’application et est donc plus facilement réutilisable pour d’autres applications.

Références:

[1] Guide officiel AspectJ. Disponible sur http://www.eclipse.org/aspectj/doc/released/progguide/

Credits image:

[2] Mohamed Youssfi. Support cours Programmation Orientée Aspects. https://fr.slideshare.net/mohamedyoussfi9/support-programmation-oriente-aspect-mohamed-youssfi-aop

--

--