Les avantages de Groovy par rapport à Java

Publié le par Séverine

Évidemment, je trouve plaisant et motivant d'apprendre un nouveau langage. Mais j'ai besoin d'arguments plus précis et rationnels pour promouvoir correctement Groovy. Ce document me permet d'ajouter un peu d'eau à mon moulin : Why would one use Groovy over Java ?

 

Voici ce que j'en ai retenu.

La syntaxe

La syntaxe de Groovy est souvent plus simple que celle de Java. De plus on peut quand même utiliser le code java existant.

Groovy fournit tout un tas de sucre syntaxique pour faire des listes ou des maps très facilement. Il créée directement des classes java.

 

La ligne suivante en Java :

List myList = new ArrayList();

devient en Groovy :

def myList = []

 

Les deux lignes font exactement la même chose mais groovy permet de le faire en moins de caractères. Il y a donc moins de chance de se tromper. Tout le langage est bati sur cette philosophie : utiliser aussi peu de mots que possible. Groovy cache toutes les lourdeurs dont Java a besoin pour  permettre de se concentrer sur l'écriture du code.

 

Par exemple, quelle quantité de code java a-t-on besoin pour lire chaque fichier passé en ligne de commande et afficher seulement les lignes contenant la chaîne de caractères "new" ?

 

En groovy, cela donne :

 

for(file in args){

   new File(file).eachLine{line ->

      if(line =~ /new/) {

         println(line)

      }

   }

}

 

C'est le code complet et non pas un extrait.

Revenir à Java après avoir programmé en Groovy, donne l'impression de programmer avec un boulet au pied. 

Le typage dynamique

Groovy permet le typage dynamique. Pour les personnes venant de Perl, Python, Ruby, etc, Le système de typage de java est une camisole de force qui ne sert pas les objectifs mais qui entrave.

Méta classes

 Le concept de méta classe est aussi très puissant. Il permet d'augmenter dynamiquement des classes existantes avec des nouvelles méthodes.

 

Outils pratiques

Groovy contient des améliorations significatives concernant l'itération des collections.

Il fournit des closures qui sont très pratiques ainsi que des outils permettant la gestion du XML de façon très fluide (XmlSlurper.

D'autres choses sympas: les regexes peuvent être des entités de première classe ou des closures.

Groovy contient un large éventail de fonctionnalités qui font défaut en Java. Il s'agit notamment de :

  • Des propriétés
  • Des Closures
  • de la méta-programation
  • des chaînes multi-lignes
  • Mixins/Categories
  • Des arguments nommés
  • Des arguments par défaut
  • des collection de literaux
  • de la surcharge d'opérateurs
  • des expressions GPath
  • d'opérateurs additionels tel que '?.' (une version résistante au null du de l'opérateur '.')
Conclusion

L'expérience des closures de Groovy m'a séduite. Il faut dire qu'en Java, nous utilisons les closures de Guava. Celles de Groovy sont beaucoup plus légères et pratiques à utiliser.

J'ai regardé la méta-programmation pour faire des mocks dans des tests unitaires. J'ai trouvé ça formidable. Mais on m'a renvoyer la peur de ne plus comprendre le comportement d'une classe en utilisant ce type de programmation.

L'ajout de nouvels opérateurs dans Groovy ainsi que sa forte expressivité en peu de caractères est à priori un bon point. Comme il y a moins de lignes de codes, il y a moins de chance d'introduire des bugs et il est plus facile de comprendre le code puisqu'il y a moins à lire. Mais on m'a renvoyer la peur de ne rien comprendre en soutenant que le code devient cryptique.

En ce qui concerne le typage dynamique, toutes les personnes qui l'utilisent depuis longtemps en python et en ruby, m'ont dit que c'était formidable. Par contre, à l'utilisation, je ne suis pas encore au point. Je ne sais pas quand le mettre  et quand ne pas le mettre.

Il faut encore que je regarde les autres fonctionnalités que je n'ai pas encore étudiées.

Il y a encore du travail et beaucoup de peurs à relativiser. Il est toujours plus facile de se cramponner à nos connaissances que de s'aventurer vers l'inconnu ....

 

Publié dans groovy

Pour être informé des derniers articles, inscrivez vous :
Commenter cet article