Relecture par Nicolas De loof
Le framework Spring a largement contribué à démystifier la programmation orientée aspect. Spring-aop est développé par deux maîtres de la POA, Adrian Coyler - project leader d'AspectJ, et Ramnivas Laddad qui signe cet ouvrage.
Cette fiche de relecture s'appuie sur une version MEAP(*) de la seconde édition d'AspectJ in Action, limitée au quatre premiers chapitres.
Le premier chapitre introduit les concepts de programmation orientée aspect, en démontrant les limites de l'approche orientée objet - même bien structurée - pour traiter les problèmes transverses. Quelques exemples en pseudo-code permettent au discours de rester conceptuel, mettant bien en place les éléments clé et le vocabulaire spécifique de l'approche orientée aspect, et sans faire d'a priori sur l'outil utilisé. La POA nécessitant un changement dans la façon de penser une application, cette première étape est indispensable.
Le chapitre se poursuit en comparant la POA à d'autres méthodes existantes pour adresser les mêmes genres de problèmes, décryptant les design patterns avec le vocabulaire POA, montrant points communs et avantages d'une approche par aspect globale. Un rapide historique introduit AspectJ, et le chapitre se termine en soupesant les pour et les contres de la POA.
Une fois les éléments théoriques clairement définis, le chapitre 2 s'attaque à présenter AspectJ. Cette fois ci les exemples sont très concrets, qui servent à introduire la syntaxe AspectJ et le vocabulaire technique propre à la POA. Je regrette juste que la syntaxe "classique" d'AspectJ soit retenue pour les premiers exemples de ce chapitre, risquant de déboussoler un peu le lecteur, alors que la syntaxe basée sur des annotations me semble l'avenir d'AspectJ. Le mécanisme de "weaving" est clairement expliqué, sous ses différentes variantes, et en répondant aux questions légitimes que la manipulation de bytecode fait germer dans nos esprits paranoïaques.
Le troisième chapitre attaque le gros morceau qu'est la définition des points de coupe (là ou s'appliquent les aspects) et la syntaxe des "points de coupe" (pointcuts), spécifique à AspectJ qu'on utilise les annotations AspectJ5 ou non. Ce chapitre, bien que très didactique et utilisant de nombreux exemples et diagrammes, et le plus indigeste. A lire impérativement en plusieurs passes ! Par contre, il sera une excellente référence par la suite pour retrouver les éléments de syntaxe lors de la mise en œuvre d'AspectJ sur un projet. Une approche "par l'exemple" aurait probablement été plus accessible, mais aussi moins rigoureuse. Le sujet étant complexe, on peut difficilement trouver une solution idéale.
Le quatrième chapitre présente la création des greffons de code (advices) qui vont venir compléter le code après passage du compilateur AspectJ. Cette fois encore, les particularités de l'API d'AspectJ et la complexité des concepts crée un frein à la lecture. Les explications sont cependant précises et exploitent des diagrammes bien pensés pour guider le lecteur.
En conclusion, je suis emballé par la qualité pédagogique de ce bouquin. La puissance de la POA est proportionnelle à sa complexité, nécessitant de changer notre façon de penser l'application. Ramnivas Laddad réussit le tour de force d'une explication très complète tout en restant didactique dans ces exemples pour les néophytes. Un livre riche sur un sujet complexe, qui ne se lit pas en une seule fois, mais qu'on gardera à portée de main comme excellent document de référence sur AspectJ. Avec les 13 autres chapitres qui viendront le compléter cet ouvrage sera probablement LA bible de la POA avec AspectJ.
|
|