J’ai entendu parler de la programmation par Aspect pour la première fois en janvier dernier lors de la formation JBoss Advanced Developer à Berlin. L’un des présentateurs était Kabir Khan qui est l’un des contributeurs de JBossAOP avec Bill Burke. A l’issue de la formation/présentation (voir l’article ici) j’étais assez bluffé par les possibilités d’AOP. Ce qu’il faut retenir, c’est que les Aspects sont des fonctionnalités de code appelés dynamiquement et qui permettent d’ajouter des comportements à votre code sans impacter son contenu. De manière plus concrète vous pouvez créer un Aspect de « Log » qui sera appelé dès qu’une méthode d’une class ou dès que n’importe quelle méthode de votre application sera executée. Imaginez pouvoir ajouter ou retirer à la volée sur votre code des possibilités de logging, de gestion de transactions, de sécurité, de statistiques et d’optimisation de performances… Les Aspects sont les attributs communs d’une application qu’idéalement nous aimerions réutiliser d’application en application.
Le problème est qu’aujourd’hui ce nouveau mouvement dans la communauté Java n’est pas encore mature. C’est pourquoi des dévelopeurs experimentés se sont lancés dans l’écriture et l’implémentation de différents moteurs d’aspect. Les grands éditeurs comme IBM pour AspectJ ou BEA Systems pour AspectWerkz apportent leur support financier et technique pour aider à l’éclatement de ce nouveau courant. Il faut bien comprendre que ce principe qui en soit existe déjà depuis quelques années, a aujourd’hui un langage mature comme Java pour enfin pouvoir exister. D’ici 2 ans, si tout se passe bien, Java sera donc un langage Objet et programmable par Aspect. Bref je ne veux pas encore passer pour l’évangéliste Java de service, mais m’est avis qu’il faut s’y intéresser.
Aujourd’hui il serait très hasardeux de lancer un projet en production basé sur une implémentation d’AOP. Recemment AspectJ et AspectWerkz, deux des moteurs AOP les plus populaires, ont annoncé leur fusion. C’est bon signe.
Tout ceci au final pour vous parler d’un article sur IBM DeveloperWorks qui compare les 4 principaux moteurs AOP Java existant. A noter que des efforts de portage vers .Net et C++ sont en cours mais la communauté est plus active sur Java pour l’instant car la JVM et le bytecode permettent d’ajouter facilement à l’execution des comportements. Pour une fois, on n’a trouvé personne pour râler.
L’article:
http://www-128.ibm.com/developerworks/java/library/j-aopwork1/index.html