Accéder au contenu principal

Groovy Grails User Group #2

Encore une bien sympathique rencontre au Groovy Grails User Group hier soir avec les organisateurs et les gugers. Cette rencontre était basée sur l’étude du pourquoi et comment migrer une application web Java standard vers Grails par Stéphane Maldini, qui est au passage commiter sur iceScrum.

J’ai bien aimé la façon dont Stéphane a amené la chose et exprimé le besoin en tant que développeur, de passer à d’autres outils aussi facile d’accès, qu’instinctifs et toujours dans l’esprit de vouloir voir autre chose.

Je ne vais pas passer au crible les différents slides exposés par Stéphane car mon iPhone m’ayant joué des tours, j’ai perdu la moitié de mes notes. Néanmoins, j’ai été un peu étonné par un ou deux argument exposé.

Le premier était que Grails favorise les tests. Je bloque sur ce point et ce, malgré les arguments exposés. En effet, je ne peux comprendre en quoi Grails permet ou facilite l’écriture de tests unitaires. L’idée de Stéphane était que le couple Groovy/Grails permettant un développement plus rapide du code et générant des squelettes de tests, il offre la possibilité au développeur d’utiliser son surplus de temps à l’écriture des tests (sic) !

Le second est qu’il faut abandonner Maven au détriment d’IVY. Cet argument a provoqué une levée de bouclier dans l’assemblée, car bien évidemment, il remet en cause une migration déjà couteuse du SI. Le ressenti de Stéphane vis-à-vis de Maven provenait à priori sur l’aspect normé de Maven, qui impose sa structure de projet. Je pense personnellement, qui faut garder Maven pour les raisons suivantes :
  • La majorité des SI aujourd’hui travail sous Maven,
  • Le mapping du file system Maven sur Grails, n’est pas très couteux,
  • Modulo un bon tunning des POM projets et des plugins, on garde la possibilité d'utiliser un maximum de plugin et reporting sur son projet.
A l’issue de la présentation, des questions/réponses ont fusé, dont la mienne portant sur un comparatif Playframework vs Grails. La réponse a été mon cinglante que je ne le pensais, car il semble que Play! soit un bon challenger à Grails, mais sans la multitude de plugins offerts par Grails.

Dommage, que je n’ai pu aller à la troisième mi-temps pour discuter et partager avec les gugers, mais j’espère rectifier le tir à la troisième rencontre !

Commentaires

Luis Arias a dit…
Salut Ulrich,

Oui je crois que maven est en effet incontournable dans beaucoup de situations, en particulier dans le cas de la migration, et heureusement grails a un support de maven qui permet de s'y intégrer. En revanche, je sais d'expérience que sur des projets nouveaux ou relativement isolés d'un existant mavenisé la gestion de composants applicatifs sous la forme de plugins grails avec d'ailleurs certains composants mavenisés et une gestion de build par hudson est une façon assez souple de travailler. Dans ce cas précis, lorsque ce type de solution atteint ses limites, j'envisage un mecanisme de build plus systémique avec gradle, toujours avec l'idée de rester proche de l'univers groovy pour privilégier la souplesse.

Cette approche nécessite toutefois un certain rigueur côté tests et je pense que grails offre pas mal de support intéressant pour cela. Cependant pour moi la question sur les tests est plus qu'ils sont obligatoires qu'ils sont plus faciles à traiter.

Volontiers pour échanger un peu plus après la prochaine réunion. Moi même j'ai du partir sans avoir pu vraiment profiter de l'after :)
Ulrich's Blog a dit…
Merci pour ton commentaire Luis,

En effet, je pense aussi qu'il ne faut pas être extrémiste et que dans certaines situations comme du quick&dirty, on peut d'affranchir d'un build Maven. En outre, dans le cadre d'un développement nouveau ou d'un simple module, je pense que Maven peut aider au bootstrap du projet via par exemple, l'utilisation d'un archetype existant ou maison, qu'en penses-tu ?

Ulrich
Luis Arias a dit…
Hmm, je crois que le critère n'est pas forcement l'aspect prototypage, c'est plutot la complexité (nécessaire ou souhaitée) du projet en termes de composants. L'aspect pédagogique est intéressant, mais pour moi le gain éventuel n'est pas justifié en relation avec grails du fait de la structuration native de l'arborescence des sources, plugins en plus de l'aspect scripting intégré et bien établi. En revanche tout à fait d'accord pour des projets n'imposant pas de structure particulière. Dans ce cas les archetypes permettant de démarrer dans les règles de l'art ! :)
Nabil Adouani a dit…
Ce commentaire a été supprimé par l'auteur.
Nabil Adouani a dit…
Bonjour Ulrich,

Merci pour ce billet et ces points de vue intéressant.
Je vais essayer de rebondir sur les deux points qui t'ont un peu étonné.

1- Grails favorise les tests: peut être que le mot favorise n'est pas le mieux adapté, moi je pense plutôt que Grails facilite la mise en place de tests unitaires et d'intégration et offre les contextes nécessaires pour faire ça. A titre d'exemple, on n'a pas à faire une configuration spéciale pour distinguer test unitaires et d'intégration dans un projet mavenisé. On n'a pas besoin non plus de mettre en place une configuration de datasource spécifique aux tests et une autre pour les développements. Dans Grails, tout est prêt.
Je partage aussi l'avis de Louis quand il dit que les tests sont plutôt obligatoires.

2- Concernant l'abandon de Maven au détriment de Ivy, je pense que ce n'est pas très correcte, car Maven et Ivy n'ont comme fonctionnalités communes que la gestion de dépendance. C'est à dire tout ce que peut faire Maven en plus n'est pas offert par Ivy. Donc pour moi la comparaison n'est pas équitable.
D'un autre côté, c'est vrai que c'est une grosse perte d'abandonner Maven surtout s'il est utilisé à tir larigot. Mais commencer une application Grails et la maveniser, encore une fois je ne voit pas l'intérêt, sauf s'il y a des plugins nécessaires et qu'ils n'ont pas d'équivalent dans l'écosystème Grails.

Bon, je reviens au sujet des tests en Grails, je suis entrain d'écrire un billet autour de ce sujet, et j'espère le finir pour te convaincre avec du code plus concret :)

Nabil ADOUANI

Posts les plus consultés de ce blog

Faire sa machine virtuelle sous Debian ARM avec QEMU

Introduction L'objet de ce article est de vous expliquer comment faire  pas à pas,  sa machine virtuelle Debian Wheezy   tournant sur un processeur ARM   avec QEMU . Il est relativement simple de trouver des ressources à ce sujet sur le Web, mais je voulais apporter ma pierre à l'édifice sous forme d'un petit  tutorial prêt à l'emploi. A propos d'ARM et d'émulation, il faut savoir qu'au jour d'aujourd'hui, VirtualBox est incapable de virtualiser un OS tournant sur ARM, cela m'a donc obligé à m'intéresser de plus prêt à QEMU. Et si vous vous demandez pourquoi, je veux émuler de l'ARM, vous le serez au prochain épisode... QEMU QEMU est un logiciel développé à l'origine par le célébrissime programmeur  Fabrice Bellard . Le succès de cet émulateur vient principalement du fait, qu'il est tout aussi capable d'émuler que de virtualiser. La principale différence entre l'émulation et la virtualisation est qu'un

Releaser avec Maven sur github

Le but de l'exercice est de releaser un projet Maven simple en utilisant le maven-release-plugin via Cygwin sur la plateforme github . En effet, la procédure serait aussi simple que sur Subversion , à la condition d'avoir ses settings et ses POM au carré, ce que nous allons voir de suite. Pour mener à bien l'opération, les pré-requis sont les suivants : Avoir un environnement de développement sous Cygwin , le mien étant Windows XP SP3 / Cygwin 2.712 , / java 1.6.0_17 / git 1.7.1 avec une auto-complétion des commandes git bien pratique, Avoir une configuration Maven opérationnelle dans le sens où vous avez accès aux maximums de repositories publics et une plateforme d'hébergement/déploiement pour vos archives. La mienne étant Maven 2.2.1 / Nexus™ Open Source Edition 1.7.1. J'avoue avoir de la chance, car j'utilise pour mes tests, ma plateforme d'entreprise (chez Vidal) configurée aux petits oignons par mon collègue Thierry que je salue au pass

Retour sur Rework

Je me suis pour une fois sorti la tête des ouvrages techniques, de mon GoogleReader/programming/languages et autres joyeusetés de ce genre, pour me plonger dans le livre à la mode, Rework . Ce livre co-écrit par Jason Fried et David Heinemeier Hansson est un cookbook destiné aussi bien aux boss, qu'à leurs employés, désirant comprendre et décrypter les clés de la réussite de cette entreprise : 37signals , qui est au passage la boite qui a crée le website Basecamp et le framework ROR . L'ensemble repose sur un enchainement intéressant de chapitres courts mais percutants, avec des illustrations assez plaisantes. Tout est écrit en noir & blanc dans un anglais assez compréhensif, qui permet de le terminer en un clin d'œil, si vous n'avez pas fait comme moi et pris des notes quasiment à chaque chapitre. Je ne vais pas coucher toutes mes notes sur cette page, mais vous en énumérez les premiers points qui m'ont le plus marqué, car ce livre a été pour moi et sera je