BT

Diffuser les Connaissances et l'Innovation dans le Développement Logiciel d'Entreprise

Contribuez

Sujets

Sélectionner votre région

Accueil InfoQ Interviews Guillaume Laforge nous parle des dernières nouveautés Groovy

Guillaume Laforge nous parle des dernières nouveautés Groovy

Favoris
   

1. InfoQ: Bonjour Guillaume, merci d'être avec nous pour cette interview. Est-ce que tu peux te présenter rapidement ?

Guillaume: Je suis là à Mix-IT pour parler des nouveautés de Groovy, la version 2.0 et la version 2.1 que l'on a sorti assez récemment. Je dirige le projet Groovy depuis déjà pas mal d'années. Groovy a été lancé en 2003 et j'ai rejoint le projet rapidement. J'ai pris les rênes du projet en 2004. Je travaille pour SpringSource chez VMWare et je vais bientôt travailler pour Pivotal qui est notre nouvelle entité qui regroupe tous les projets Spring, Groovy, …

   

2. InfoQ: Tu es donc à la tête de Groovy, est-ce tu peux nous présenter ce langage ?

Guillaume: Groovy c'est un langage alternatif pour la JVM. C'est un langage qui est une sorte de langage compagnon, complémentaire à Java et qui dérive également de Java. La syntaxe est assez familière pour les développeurs Java et propose des fonctionnalités complémentaires qui permettent d'étendre ou d'enrichir des classes du JDK ou de librairies tierces, par exemple en ajoutant de nouvelles méthodes. C'est aussi un langage qui propose des aspects de programmations fonctionnelles, entre autres, par l'addition des closures. Depuis 2003, on a des closures dans le langage Groovy qui permettent de faire des choses assez élégantes en terme d'algorithme, de structures de données, etc. Et il y a tout un tas de petites améliorations par rapport à Java, par exemple des syntaxes particulières pour les List, les Map, les expressions régulières. Et puis aussi tout le côté dynamique, qui permet de créer des DSL de manière assez simple. C'est donc un langage assez riche, basé sur Java, et qui essaye d'aller un peu plus de ce que Java propose.

   

3. InfoQ: En temps que développeur Java, quels sont les avantages que j'aurais à utiliser Groovy dans mes projets ?

Guillaume: On pourrait en fait parler des cas d'utilisations dans le sens où Groovy est utilisé de manière différente dans chaque projet. J'ai vu des équipes Java adopter Groovy d'un point de vue tests. Par exemple on a des frameworks super sympa pour faire des tests, par exemple le framework Spock qui permet de définir simplement et facilement les interactions avec les objets si on veut regarder le comportement des objets. Il permet aussi de définir, un peu comme une syntaxe wiki, sous forme de tableau si on veut vérifier assert(a+b=c), on peut mettre les valeurs de a, b et c sous une forme de tableau qui permet une visualisation, un peu comme quand on décrit un tableau au format wiki avec des barres verticales. Ca permet de simplifier l'écriture de tests. Souvent sur des projets on ne met pas beaucoup de tests, ça peut aider à encourager à faire des tests d'avoir un langage plus expressif pour écrire les tests. Après, il y a ceux qui ont une application Java et qui veulent étendre, par exemple avec des customisations particulières pour des clients particuliers ou pour étendre des applications justes avec certains points d'extensions. Par exemple des règles métiers qui seraient faites en Groovy. Une autre grande catégorie d'utilisation qui est le développement complet d'application. Par exemple quand on pense au framework Grails pour faire des applications Web. Ou le framework Griffon pour faire des applications Swing, Eclipse RCP, etc. Grâce au fait que le langage est dynamique, on peut appliquer tout un tas de principes, par exemple convention over configuration et aussi les techniques de DSL qui permettent d'avoir du code beaucoup plus succinct pour définir par exemple des routes, des URL, des chemins dans les applications Web. Donc c'est comme ça que les développeurs Java peuvent adopter Groovy et tirer parti de Groovy à différents niveaux, soit pour étendre un produit, soit pour écrire certains types d'applications beaucoup plus rapidement, ou alors pour encourager les gens à faire du test sur leurs applications. Il y a pas mal d'utilisations différentes.

   

4. InfoQ: Est-ce que la phase d'apprentissage est importante ?

Guillaume: Alors ça aussi c'est un des aspects intéressants, quand on a créé Groovy, on voulait vraiment que ce soit un complément à Java. Et au niveau syntaxe même du langage Groovy, ça dérive de la grammaire de Java. 95% du code Java que vous pourriez écrire, c'est aussi du code valide Groovy. Ce qui fait que tu prends un .class Java et tu le renommes en .groovy et c'est une classe Groovy. Après il y a des choses que l'on a simplifié, on peut enlever les points virgule, il y a des endroits où on peut enlever les parenthèses, la syntaxe est assez malléable, mais du coup c'est très facile à apprendre parce que chaque développeur Java est déjà, sans le savoir, un développeur Groovy et petit à petit, il va apprendre des choses spécifiques à Groovy et petit à petit il va écrire comme un "vrai" développeur Groovy.

   

5. InfoQ: Comme autre langage JVM, il y a aussi Scala, quelles sont les différences fondamentales entre Scala et Groovy ?

Guillaume: Philosophiquement, on n'a pas la même approche, pas la même syntaxe. Sur la syntaxe, on dérive de Java, Scala a pris le parti de faire les choses différemment. Par exemple, quand on définit un paramètre de méthode, ça va être a:String, donc ils ont inversé l’ordre, alors que nous on fait String a comme en Java. Il y a des petites différences syntaxiques comme ça. Les différences de syntaxe par rapport à Java sont plus grandes avec Scala qu'avec Groovy. Il y a donc certainement une courbe d'apprentissage plus élevée de ce côté-là. Mais je pense qu'assez facilement on peut en faire abstraction. Après par défaut, Groovy est un langage dynamique, c’est-à-dire qu'il y a un système runtime, qui va intercepter la bonne méthode à appeler au runtime, plutôt que d'écrire dans le bytecode "j'appelle la méthode toto". Nous, le bytecode va dire "appele le runtime de Groovy pour appeler la méthode toto". Donc il y a une sorte d'indirection. C'est un des fondamentaux des langages dynamiques, tels que l'on doit les implémenter sur une JVM. Donc par nature Groovy c'est un langage dynamique tandis que Scala c'est un langage statiquement typé. Mais on a aussi la possibilité de faire du typage statique en Groovy et de générer le même code que ferait le compilateur javac. Donc on peut très bien faire ce que fait Scala ou Java en terme de génération de bytecode.

   

6. InfoQ: Quelles sont les principales nouveautés des versions 2.0 et 2.1 de Groovy ?

Guillaume: Dans la version 2, c'est là où on a eu le grand thème statique. C’est-à-dire rajouter le static type checking. Pour faire en sorte que le compilateur râle quand on fait une typo dans un nom de variable ou de méthode. Et puis également, une fois que l'on utilise le static type checking, on peut faire de la compilation statique et générer le même code que javac ce qui permet de rendre Groovy aussi rapide que Java pour les parties que l'on a décidé de compiler statiquement. Et on peut faire ça en disant "mets l'annotation @CompileStatic sur cette méthode" et cette méthode sera compilée de manière statique. Ensuite on a le thème JDK7, avec l'ajout des éléments de syntaxes du project Coin dont par exemple le catch d'exception multiple, les underscores dans les liteaux numériques, etc. On a rendu Groovy plus modulaire, avant on avait un gros JAR pour tout, et Groovy c'est pas que un langage mais aussi des API, et des API à part entière. On a par exemple un moteur de templating intégré à Groovy. Tout était regroupé dans un JAR et maintenant on a un JAR coeur et plein de petits JAR que l'on peut utiliser en fonction des fonctionnalités dont on a besoin. Il y a aussi le support d'invoke dynamics qui permet de simplifier l'implémentation des langages dynamiques sur la JVM et d'améliorer les performances. Dans la version 2.1, on s'est focalisé un petit plus sur les DSL, sur comment aider les outils à documenter ou les IDE à faire l'autocomplétion et aussi à configurer plus finement le compilateur Groovy.

   

7. InfoQ: Quand on parle de Groovy, un des projets phare qui vient à l'esprit c'est Grails. Quel rôle a-t-il joué dans l'adoption de Groovy ?

Guillaume: Clairement, Groovy c'est un projet open source qui a pas mal de succès, par exemple, l'année dernière, on a eu 1.7 million de téléchargements. C'est un très bon résultat pour un projet open source. Ce qui en fait le langage alternatif qui a le plus de téléchargements. En deuxième ça doit être Scala avec 3 ou 4 fois moins. Grails a tiré à l'utilisation de Groovy. Il y a pas mal d'utilisateurs qui se sont mis à utiliser Grails du fait de la productivité qu'ils avaient à utiliser ce framework. Et du coup, Grails utilisant Groovy, ça nous a amené encore plus d'utilisateurs. Donc Grails, ou même Gradle, c'est des projets qui tirent encore plus à l'utilisation et l'adoption de Groovy.

   

8. InfoQ: Quel est le projet Groovy qui t'impressionne le plus en ce moment ?

Guillaume: Je vais dire 2 projets. Dans l'écosystème Groovy, il y a pas mal de choses très intéressantes. Il y a un petit projet que je trouve très intéressant et très pratique c'est le projet GVM. Il permet de gérer l'utilisation de toutes les versions de Groovy, de Grails, etc. Je peux dire gvm install groovy, et il va me télécharger la dernière version de Groovy. Ou je peux lui dire gvm install grails 2.1.1 et il va me la configurer et me l'installer. C'est super pratique, parce que moi, en temps que développeur Groovy, je peux retester d'anciennes versions pour voir si un bug est là. Et sinon, l'autre projet qui a vraiment le vent en poupe, c'est Gradle et qui aide à l'adoption de Groovy. C'est une solution de build qui utilise Groovy comme un DSL pour décrire le build, pour décrire les différentes taches, les différentes conventions, les dépendances dont on a besoin, il est vraiment très très intelligent au niveau de la finesse des dépendances. Il fait pas mal parler de lui, car il y a des projets comme Hibernate, Spring, ou même les gens d'Android qui adoptent Gradle pour pouvoir créer des nouveaux projets Android et créer les différents builds qui vont bien : debug ou pas debug, pour tablette ou pas pour tablette, etc. Gradle est vraiment très très flexible pour ça. Il a beaucoup de succès en ce moment. C'est le projet qui fait peut-être le plus parler de lui en ce moment dans l'écosystème Groovy.

01 août 2013

BT