Groovy and Grails
Du Java au Groovy
Groovy, c'est quoi ?
Groovy est un langage de script se basant sur la syntaxe de Java. Le code Java est d'ailleurs compatible.
Donc, si vous êtes un développeur Java, vous savez déjà coder en Groovy !
La syntaxe de Groovy est faite pour apporter plus de flexibilité au langage Java. C'est un langage
faiblement typé. La vérification des types se fera lors de l'exécution.
Et comment ça fonctionne ?
Groovy utilise la même JVM que Java. Lorsque l'on compile un fichier groovy, on obtient plusieurs
fichiers ".class" contenant le bytecode. Il peut être intéressant de décompiler ces fichiers afin de
mieux comprendre comment fonctionne le langage.
Comme pour le Java, Groovy profite du Just In Time compiler (JIT).
Il existe plusieurs façons de compiler ou d'exécuter du code Groovy.
-
On peut utiliser la commande "java" habituelle. Bien entendu, il faudra inclure
la librairie Groovy dans le classpath et préciser la classe à exécuter dans le cas d'une compilation.
Il est donc possible d'éxécuter à la fois du code Java et Groovy sur la même JVM. -
L'autre méthode consiste à utiliser les exécutables "groovy" et "groovyc".
- "groovyc" permet de générer les fichiers .class.
-
"groovy" permet d'exécuter ces fichiers.
Mais à la différence de la commande "java", cette commande peut aussi compiler les fichiers en bytecode.
Cette compilation se fera en mémoire et sera suivie de l'exécution.
L'intérêt de cette commande réside dans le fait qu'on pourra exécuter facilement des scripts en utilisant le sheebang : #!/usr/bin/groovy
Simplification du code Java
Cette capture vidéo vise à illustrer la simplification d'une classe Java en un script Groovy.
Voici les différentes simplifications que l'on peut effectuer sur un code Java que l'on souhaite transformer en Groovy :
- Les "getters" et les "setters" sont implémentés par défaut. Il n'est donc pas nécessaire de les implémenter.
- L'utilisation des setters est simplifiée. On peut écrire : objet.champ="nouvelle valeur";
- Comme la vérification des types s'effectue à l'éxécution, il n'est pas nécessaire de déclarer le type lors d'une déclaration de variable.
Voici un exemple : def firstname - Il n'est pas nécessaire d'écrire le mot return pour retourner un objet à la fin d'une méthode. C'est l'objet qui se trouve sur la dernière ligne de cette méthode qui est automatiquement retourné.
-
La concaténation est simplifiée. Il est possible d'insérer des variables à l'intérieur des chaînes de caractères :
def sayHello(){
"Hello ${firstname} ${lastname} !"
}
- Les points virgule ne sont plus obligatoires.
- La méthode statique "main" n'est plus nécessaire car le code que l'on écrit à l'extérieur de la classe est exécuté de la même manière qu'un script.
On peut s'apercevoir que lorsque l'on compile un fichier groovy, celui-ci peut induire plusieurs fichiers ".class".
Dans cet exemple, il y en a un pour la classe déclarée, un autre pour le script
et un dernier qui est celui d'une classe interne qui correspond à la cloture.