“Roo's mission is to fundamentally and sustainably improve Java developer productivity without compromising engineering integrity or flexibility”

Bruno Guedes, architecte sfeirien, a animé une session sur Spring-ROO (Real Object Oriented). Il a commencé par présenter l’architecture de ce générateur de code qui consiste en une plateforme (core services) pouvant accueillir un ensemble d’addons. Ces derniers renferment la logique de génération.

Cette génération repose en grande partie sur une technique AOP appelée l’Inter-Type Declaration. En effet, dans un premier temps,on procède à la création des composants de l'application à l'aide des commandes shell de ROO. De simples classes (représentant les entités, services ou controlleurs de l'application) n'ayant que des attributs (pas de getters/setters ni aucune autre methode) vont être générées. Ces classes sont annotées par des annotations spécifiques et relatives aux addons existants et sollicités.

Le but de ces annotations est de servir de « join point » aux aspects statiques, eux-mêmes générés par les addons. Le résultat final est obtenu, dans un deuxième temps, après compilation pendant laquelle se déroule le weaving des aspects. On obtient alors une application web complète entièrement basée sur les différents frameworks spring.

Selon les addons présents, ROO présente plusieurs fonctionnalités et types de génération dont :

  • Gestion de la persistance
  • Création des tests unitaires
  • Création de finders spécifiques
  • Gestion Spring MVC, Spring Web Flow et Selenium
  • Gestion SMTP, JMS
  • Gestion de logging
  • Gestion de la sécurité par Spring Security

Après cette introduction de ROO, Bruno a fait un tour des principales commandes du shell en expliquant certaines subtilités de celles-ci.

Ensuite, il a fait une petite démonstration (temps oblige) de ce générateur. Et là, force est de constater que le résultat est très intéressant vu la rapidité avec laquelle il a été obtenu, la qualité et surtout la flexibilité du code généré, car ce code est complètement indépendant de ROO, et donc, peut être maintenu et étendu par une méthode classique (seul le weaving restera nécessaire, mais ceci reste très peu contraignant et il suffit d’utiliser le compilateur AspectJ).

Enfin, il a signalé que la release finale de ROO est prévue pour Avril 2010.