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 le JCP dans 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 = <a href="entier+1
}
assert serieInc == [2, 3, 4">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 <em>entier </a>
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é.
zorro
12 août 2010
Pour produire des applications web Java sans être développeur Java ou parce qu’on préfère utiliser un langage dynamique, Groovy/Grails, c’est bien.
Quand on est déjà développeur Java et que l’on veut du RAD tout en restant sur Java (parce que ça fait un peu pitié de voir les API Hibernate, etc, réécrites en Groovy), Spring Roo, c’est mieux.
Stéphane Prohaszka
14 septembre 2010
Je pense que tu n’as pas compris que l’intérêt principal de Groovy est la productivité. Spring ROO est une excellente aide quand on veut faire à tout prix du Java pur jus. Cependant, le couple Groovy/Grails amène un niveau supérieur de productivité par la simplification de l’écriture du code, mais aussi de la configuration de l’application que tu créés.
Je ne sais pas si tu as déjà poussé un peu plus loin l’utilisation de Groovy et si ce n’est pas le cas, je te le recommande. Tu verras que c’est vraiment amusant de coder dans ce langage et qu’il est bourré de possibilités.