- Blog Xebia France - http://blog.xebia.fr -
Rapport sur LA conférence Groovy européenne : la GR8Conf
Posted By Aurélien Maury On Lundi 30 mai 2011 @ 18:07 In Divers,Java / JEE | 5 Comments

Comme annoncé, Xebia était présent pour la 3e édition du plus important rassemblement européen de la communauté Groovy : la GR8Conf de Copenhague (prononcez « Great Conf »). Pour tous ceux qui auraient voulu y être et n’ont pas pu, je vais tenter de vous résumer les sessions auxquelles j’ai assisté et vous donner la tendance du clan Groovy (en Europe tout du moins). Commençons par quelques chiffres :
La conférence s’est tenue dans les locaux de la IT University of Copenhagen, qui a prêté un amphithéâtre et une grande salle de cours pour l’occasion.
Toutes les sessions ont été filmées (je vous donnerai les liens dès qu’ils seront publiés). Je n’ai malheureusement pas pu assister à la première journée : « l’université ». Ce premier jour, les participants ont eu droit à une mise à niveau sur le langage Groovy et le framework Grails, puis ont enchaîné une après-midi de code pour apporter des contributions à certains projets open-source. Certaines features codées pendant ces workshops ont même été intégrées le soir même et utilisées pour les démonstrations des 2 jours de conférence qui ont suivis.
Après un rapide accueil de Søren Berg Glasius, la première journée de conférence commence par un retour sur les dernières nouveautés du langage Groovy, par Guillaume Laforge. Il ouvre la session avec quelques statistiques sur Groovy 1.7 :
Puis il enchaîne en revenant en détail sur les principales nouveautés de Groovy 1.8 :
Il y a également beaucoup d’annotations très pratiques comme @Log, @Singleton, @WithReadLock, @WithWriteLock. Pour le détail complet, rendez vous sur Slideshare.
Enfin, une perspective sur les chantiers prévus pour la prochaine version majeure :
Dans la foulée des nouvelles, Peter Ledbrook nous a dressé le bilan de la branche 1.3 de Grails, avant de faire miroiter à l’auditoire les nouveautés qui se préparent pour la version 1.4. L’année écoulée a été celle de la version 1.3, avec énormément de nouveaux plugins, notamment pour fournir à l’abstraction GORM des implémentations sur NoSQL (comme Redis, MongoDB, Riak, Neo4j et d’autres). Il a également cité quelques gros comptes utilisant Grails comme framework de premier ordre dans leurs projets, comme Vodafone Music, par exemple.
La version 1.4 de Grails donne vraiment envie. Parmi les nombreuses améliorations attendues, on peut noter :
Le but premier de cette version est d’améliorer encore l’expérience utilisateur (c’est à dire celle des développeurs). Ceux qui l’ont essayé peuvent en témoigner : Grails est déjà un framework très agréable. Espérons qu’ils arrivent à faire encore mieux. Il y aura également un système de feedbacks pour que, si les développeurs l’acceptent, leur installation de Grails puisse remonter chez SpringSource des données sur la version utilisée, les plugins installés, etc. Ces statistiques devraient permettre d’y voir plus clair dans le portail de plugins (qui a passé les 600 plugins), et ainsi connaître ceux qui servent et ceux qui dorment.
Après cela, Klaus Baumecker, architecte chez HP, est venu nous parler de l’adoption de Grails dans une équipe de développement interne.
Le cadre du projet :
Le speaker nous a énuméré les principaux obstacles techniques qui se sont dressés sur la route, notamment l’intégration de BlazeDS, qui s’est révélée moins triviale qu’au premier coup d’œil. Mais chaque obstacle a trouvé sa solution et le projet a été une réussite. Il a terminé en résumant l’expérience tirée sous forme de bonnes pratiques pour l’adoption de Grails :
Je ne saurais trop vous conseiller d’appliquer ces conseils pour tenter d’implanter Grails dans vos projets.
Peter Ledbrook a assuré une 2e session sur l’intégration de Grails dans le monde de l’entreprise, plus précisément dans les processus de développement logiciel déjà en place. Il a débuté en nous parlant des 2 outils de build les plus implantés dans l’écosystème Java : Ant et Maven. Pour pouvoir dire que Grails s’intègre correctement à l’existant, il est indispensable de pouvoir construire un projet Grails avec ces 2 outils.
Pour Ant, le problème est assez simple, dans la mesure où le système de build propre à Grails est Gant, c’est à dire Ant, manipulé grâce à Groovy. Une commande Grails permet de générer build.xml et ivy.xml : grails integrate-with --ant. De cette façon, on peut construire son projet directement avec Ant.
Pour Maven, des plugins existent pour brancher les scripts Grails dans les phases d’un build Maven standard. Cependant, l’intégration avec Maven pose plus de problèmes. De base Grails gère ses dépendances grâce à Ivy, alors que Maven le fait lui même. De plus, le côté rigide d’un build Maven provoque des frictions avec celui, très flexible, des build Gant. Si vous pouvez vous le permettre, utilisez Gant et les conventions Grails.
À noter que pour la roadmap Grails 2.0, il est prévu de passer à Gradle, tout en conservant et améliorant les intégration Ant et Maven.
Peter a également axé une partie de sa présentation sur l’adaptabilité d’une application Grails à une base de données existante. Il est tout à fait possible de reprendre une base de données existante, par plusieurs stratégies:
Pour finir, il nous a parlé de déploiement. les mécanismes de customisation du contenu du war permettent de satisfaire toutes les fantaisies des différents serveurs d’application. Pour la production, il conseille fortement de s’appuyer sur les datasources JNDI et sur les mécanismes permettant d’externaliser la configuration (voir ce tips).
Puis il a terminé son exposé par quelques conseils d’ordre général sur les projets Grails :
La somme de toutes ces pistes et de tous ces conseils, c’est que Grails est intégrable à, virtuellement, tous les processus de développement logiciel en place. Il faut se donner un peu de peine, mais les outils sont là pour vous faciliter la tâche (à l’extrême).

Tandis que se tenait la session de mise à niveau sur Griffon, j’ai assisté à une présentation de Hubert Klein Ikkink alias MrHaKi, l’auteur de billets Groovy Goodness sur son blog, véritable mine d’or de trucs et astuces techniques.
Il est venu parler de CodeNarc et de GMetrics, 2 outils d’analyse statique de code Groovy. Le premier permet de détecter les mauvaises pratiques d’utilisation du langage, comme des appels explicites là où Groovy ferait implicitement le travail. Au total,174 autres règles sont fournies. Quant à GMetrics, son domaine concerne le calcul de la complexité cyclomatique de votre code.
CodeNarc a été cité dans beaucoup d’autres sessions pendant la GR8Conf, voici ce qu’il faut en retenir :
Pour les détails techniques, je vous encourage à vous pencher sur les documentations respectives de CodeNarc et GMetrics.
Voilà l’une des sessions pour lesquelles j’ai eu envie de faire le déplacement jusqu’au Danemark… Je n’ai pas été déçu. En une heure, Peter Ledbrook, dans sa 3ème prestation de la journée, a peiné à faire tenir tous les conseils sur l’optimisation en Grails. La plupart des aspect d’optimisation sont d’ailleurs communs à toute application web Java.
Premier conseil à graver au dessus de votre écran :
Evitez toute optimisation prématurée : Profilez, optimisez, répétez.
Grails est basé sur une stack très classique, donc tous les outils de profiling fonctionnent.
Voici quelques outils pour profilez le fonctionnement de votre application côté serveur :
Tout cela devrait vous permettre de trouver plus rapidement les goulots d’étranglement dans votre code.
En vrac, voici un ensemble de pistes exploitables pour optimiser vos application Grails (ou autre d’ailleurs).
L’utilisation du plugin resources permet d’automatiser beaucoup de choses. Ce plugin très prometteur fera partie intégrante de Grails dès la version 1.4. Il permet notamment :
Ciblez en priorité les victoires faciles. Il faut bien faire attention de ne pas investir trop de temps sur une petite optimisation. On ne vise pas les économies de bouts de chandelle. Une session très chargée et très intéressante. Peter a revendiqué le droit à une sieste après ce 3ème slot de la journée.
Pour clore la journée, Hamlet D’Arcy a présenté ses conseils pour être efficace dans l’usage du langage Groovy. Sa session était organisée autour d’une sélection de conseils tirés du livre culte Effective Java et appliqué au monde Groovy. Le speaker est à l’aise et captive son auditoire. Certaines vagues sur Twitter pendant sa présentation ont émis l’idée d’écrire un livre « Effective Groovy ». Parmi les conseils les plus utiles, vous pouvez noter :

Les conseils prodigués ont tous été très bien justifiés mais il faudrait un article entier pour tout restranscrire ici. La racine commune à toutes ces bonnes pratiques est : utiliser le langage. Cela peut paraître simpliste mais c’est très vrai. Toute cette présentation ciblait les pratiques héritées du langage Java pur. Groovy, et à plus fort titre avec la version 1.8, fourni de nombreuses syntaxes et annotations permettant de gagner beaucoup de temps et de rendre le code plus lisible. Il faut s’en servir, à fond.
Après cette journée bien remplie, tous les participants, speakers et spectateurs, se sont retrouvés autour de bières belges et danoises aux couleurs de la conférence. Ce temps de détente a été l’occasion de discuter des outils, de l’adoption de Groovy dans les entreprises de chacun, de la qualité de la bière danoise… Certains ont même réussi à coincer Peter Ledbrook dans un coin pour une séance de pair programming sur un bug dans le plugin Maven pour Grails. Pendant ce temps d’échange, j’ai eu le plaisir de faire la connaissance de Franck Silvestre, qui participe à la réalisation de l’un des plus gros projet Grails en France : Lilie. C’est un projet destiné au secteur de l’enseignement et sous licence open-source, à voir absolument.
Après quelques agapes entre participants la veille, la 2ème journée démarre sur les chapeaux de roues, avec un exposé sur le plugin Grails pour Infinispan, la grille de données estampillée JBoss. Thomas Fuller nous présente des cas d’utilisation qui peuvent pousser à se servir d’une datagrid et quels gains on peut en retirer. Puis il fait le tour du plugin Grails pour s’interfacer avec Infinispan. Les exemples de code donnés sont d’une simplicité à toute épreuve, l’architecture de plugin de Grails est exploité à fond pour le confort du développeur.
Bien évidemment, ce n’est pas n’importe quel projet qui peut avoir besoin d’une datagrid, mais il est bon de savoir que des plugins existent déjà et sont utilisés et maintenus. Je regrette un peu trop de temps passé sur la première partie et la justification de l’utilité d’Infinispan. Le sujet était intéressant et j’aurais aimé voir plus de code que le strict minimum.
Ensuite, Jochen Theodorou, alias Blackdrag vient nous parler des optimisations de performances apportées par la version 1.8 de Groovy. Il semble que les gens de chez SpringSource en ai assez de se faire ridiculiser dans les micro benchmarks qu’on peut trouver sur le net. Ils ont donc placé leur effort sur la satisfaction des fétichistes du micro-bench.
Le plupart des micro-bench Groovy contre Java qu’on peut trouver sont basés sur des calculs arithmétiques, comme le célèbre calcul de la suite de Fibonacci. Mais Groovy est un langage dynamique, par conséquent, toutes les opérations mathématiques sont en fait des appels de fonction, ce qui fait l’impasse sur les capacités de la JVM en calcul sur primitives. Les améliorations de performances de la 1.8 sont restreintes aux calculs sur entier et sont encore assez fragiles. Vous n’en profiterez que si vous travaillez sur des entiers sans mélanger les types d’opérations. Si vous lancer un a = b c d, vous êtes dans la zone verte. Si vous lancez a = b + c – d, vous êtes dans la zone rouge.
Pour les prochaines versions de Groovy, Springsource mettra l’accent sur la stabilisation et la généralisation de ces améliorations. A plus long terme, il est prévu de s’appuyer sur le InvokeDynamic fourni par le JDK7.
Les 2 conseils à retenir :
Burt Beckwith est venu nous parlé des différentes techniques pour optimiser GORM. Il est également auteur des billets « GORM Gotchas » sur le blog de Springsource, à lire absolument pour éviter certains pièges.
Parmi les techniques intéressantes je retiens :
De nombreux exemples de cas d’application ont été passés en revue. Une session très intéressante.
Pour clore la matinée, Ivo Houbrechts nous a parlé du plugin Grails WebFlow. Il a commencé par une petite démonstration (avec Grails 1.4 SNAPSHOT, derniers commit de la veille au soir). Comme son nom l’indique, ce plugin intègre Spring WebFlow à Grails. Il permet notamment d’obtenir sans effort :
Quelques limitations par rapport à Spring WebFlow :
La DSL de configuration est simple au départ mais peu vite devenir illisible si vous tentez des flow complexes (surtout si vous passez beaucoup de closures en paramètre). Restez autant que possible dans des cas flow simples pour éviter cela.
La dernière session que j’ai pu suivre a eu pour sujet le plugin Neo4J pour Grails. Stefan Armbruster a commencé par nous rappeler les bénéfices du paysage NoSQL parmi les options de stockage de données. Puis nous a expliqué de quelle façon GORM appliquait le mapping des classes de domaines à une base de données orientée graphes.
Le gros avantage de ce plugin est de s’intégrer de façon transparente avec GORM, ce qui ne rajoute aucune complexité et permet même de tester les résultats d’un remplacement de votre base par Neo4J sans effort. Pour les enthousiastes, faites bien attention à la licence de Neo4J avant de la faire adopter chez vous.
J’ai ensuite dû courir à l’aéroport pour rentrer au pays, en ratant les 2 dernières sessions de la journée. Ces deux journées ont été très riches en enseignement technique mais aussi humain. C’était pour moi une première immersion dans la communauté Groovy et j’en suis revenu convaincu par le langage, les librairies, les outils et la communauté. Il me paraît opportun de conclure en citant les « idées GR8Conf à emporter » (« GR8conf takeaway »), twittées par Dierk König le dernier jour :
Je ne peux que tomber d’accord. Un grand merci aux courageux qui ont lu jusqu’à la fin. Groovy rocks ! ![]()
Article printed from Blog Xebia France: http://blog.xebia.fr
URL to article: http://blog.xebia.fr/2011/05/30/rapport-sur-la-conference-groovy-europeenne-la-gr8conf/
Click here to print.