Groovy, une alternative à Java

Publié le Mis à jour le

Parmi la multitude des langages de programmation qui existent, certains s’appuient sur Java et sa JVM. Quelques uns sont en plein essor depuis plusieurs mois. Si ces derniers temps, Scala fait beaucoup parler de lui (langage mélangeant programmation objet et fonctionnelle), Groovy est « l’autre langage » le plus connu et le plus répandu de la JVM.

Historique

Groovy a été initialement développé en 2003 par James Strachan (qui plus tard le reniera), et c’est Guillaume Laforge qui lui a succédé comme responsable du projet. Loin d’être un langage développé uniquement par des fans et ayant un avenir flou, Groovy a été standardisé par leJCPdans la [JSR-241->http://jcp.org/en/jsr/detail?id=241] et est aujourd’hui sous l’égide de VMWare, après que la société ait racheté Springsource.

Contrairement à Scala, Groovy reste sur un paradigme purement objet. C’est également un langage de script. Cependant: il apporte lui aussi ses propres innovations qui pourraient bien vous faire abandonner Java.

Le leitmotiv de Groovy est de simplifier la vie des développeurs : «c’est un langage créé par les développeurs pour les développeurs». Plusieurs choses ont été mises en place pour vous défaire du carcan qu’est Java lorsqu’on souhaite développer rapidement et efficacement : accesseurs générés dynamiquement, ajout des closures, surcharge d’opérateur…

Features

Mais avant de revenir sur tous les atouts (et ils sont nombreux) du langage, une petite explication de ses fondements est nécessaire.

Groovy est avant tout un langage dynamique, et quand je parle de dynamisme je ne m’arrête pas à la simple déclaration de variables comme on la connait dans un langage de script tel que PHP. Non, en Groovy les classes et objets sont extensibles, un peu comme en Objective-C. Autrement dit, après la compilation et l’exécution de votre code, vous pouvez encore étendre les fonctionnalités de vos objets en leur ajoutant une nouvelle propriété, mais également vos classes pour leur ajouter de nouvelles méthodes. Ce dynamisme, Groovy l’utilise pour étendre certaines classes du JDK.

Il est possible d’écrire le code suivant en Groovy :


List elements = 1, 2, 3]
elements += 4

Ceci est valide, grâce à la surcharge d’opérateur que Groovy ajoute à la classe java.util.Collection.

Un autre atout de Groovy est la possibilité de créer des closures. Une closure est une fonction, indépendante du scope d’appel, que vous pouvez manipuler comme une variable et ainsi la passer à une méthode ou à une autre closure.
Les closures vous permettent par exemple de travailler plus facilement sur certains types de base que Groovy surcharge, comme les listes. Vous pouvez ainsi associer à chaque élément d’une liste un traitement défini par une closure, et obtenir une liste contenant les résultats. Mais au lieu d’une définition, un exemple est plus parlant :


List serie = [1, 2, 3]
List serieInc = serie.collect entier

Dans cet exemple, nous avons donc ajouté 1 à chaque élément de la liste {serie en créant une nouvelle liste serieInc. Nous reviendrons sur ces fonctionnalités et d’autres dans un prochain billet.

Enfin contrairement à Scala, rien ne vous empêche pour vous acclimater tranquillement à la syntaxe et aux possibilités de Groovy d’écrire encore du code Java pur. Le code Java est entièrement compréhensible par le compilateur Groovy. Nous reviendrons aussi plus tard sur l’interopérabilité entre les deux langages.

Ecosystème

La plus grande force de Groovy est certainement son ecosystème. De nombreux projets ont utilisé comme langage de programmation principal Groovy :

Grails : Framework RAD pour les applications web. Il est le pendant de RubyOnRails et de Symfony pour Groovy. C’est certainement le projet Groovy le plus connu. Il fait partie des solutions que VMWare/SpringSource propose. Comme gage de qualité, il s’appuie également sur Spring et Hibernate.
Griffon : Il s’agît de l’équivalent de Grails pour les applications Swing.
Gradle : Si Maven vous rebute, vous pouvez essayer cet outil pour automatiser et gérer vos projets. Groovy et Grails vont passer à cet outil dans leurs prochaines versions.
Spock : C’est un framework de test qui s’appuie sur la capacité de Groovy à créer des DSL (Domain Specific Language) pour générer ses fichiers d’exécution.

Outre les projets qui se basent sur la possibilité qu’offre ce langage pour créer de nouveaux outils, d’autres vous donnent la possibilité de l’utiliser comme alternative à Java. C’est par exemple le cas de Liferay, qui permet de créer vos portlets complètement en Groovy (groovy.jar est inclus dans les librairies du moteur).

Conclusion

Grâce entre autre à ces langages alternatifs comme Groovy, le monde Java rattrape le retard qu’il pouvait avoir dans le web sur des technologies plus épurées comme PHP ou Ruby. Java se libère enfin de ces boulets que sont la complexité et la verbosité, freins évident :

– au développement web qui demande une réactivité et une agilité importante
– pour les développeurs sur leur productivité

Le langage est mature et les frameworks aussi ! Il est temps de penser le développement Java différemment et d’arrêter d’utiliser les outils du passé.


  • Développement

  • Framework

  • Java, JEE