ANNÉES 2000

Groovy

En 2003, Java trônait sur le monde informatique avec sa bibliothèque de composants considérable. Pourtant, son architecture rigide décourageait ceux qui voulaient simplement scripter une tâche, prototyper ou écrire du code minimal. Ruby, Python et Smalltalk paraissaient plus agiles, mais leur syntaxe déroutait les programmeurs habitués à Java. James Strachan créa alors Groovy : un langage qui resterait fidèle à l'esprit Java tout en éliminant ses lourdeurs.

L'idée était simple : garder l'apparence de Java pour ne pas désorienter les développeurs, mais alléger la syntaxe et réduire les contraintes. Strachan voulait un « Python à saveur Java », où Groovy servirait de colle entre les bibliothèques Java existantes. Le langage devait s'intégrer naturellement à l'écosystème de la JVM sans bouleverser les habitudes.

Mars 2004 marqua une étape décisive : Groovy fut soumis comme Java Specification Request (JSR 241) et accepté par vote. Ce processus exigeait une spécification rigoureuse, une implémentation de référence et des tests de compatibilité. La charge de travail s'avéra écrasante. Des tensions émergèrent au sein de la communauté sur les directions à prendre. Strachan finit par se retirer, laissant Guillaume Laforge reprendre le flambeau.

Le JSR ne fut jamais voté dans sa forme finale, mais ce passage obligé força l'équipe à structurer le langage. Sans cette contrainte, les fonctionnalités accumulées pendant le développement initial auraient sans doute formé un ensemble disparate plutôt qu'un tout cohérent.

Janvier 2007 vit naître la version 1.0. Elle apportait les fermetures lexicales, les scripts, les constructeurs, les chaînes interpolées (GStrings) et les paramètres nommés. Le langage intégrait nativement les expressions régulières, la surcharge d'opérateurs et une syntaxe littérale pour les listes et les cartes. Le Groovy Development Kit enrichissait environ 430 classes Java standard avec de nouvelles méthodes.

Deux ans plus tard, Groovy dépassait son rôle initial de langage de script. On l'utilisait désormais pour développer des applications complètes. Ses capacités de métaprogrammation à l'exécution, déjà robustes, furent complétées par des fonctionnalités à la compilation. Cette évolution permit de réduire la complexité du code sans sacrifier les performances.

En 2012, le langage gagnait du terrain sur des projets traditionnellement réservés à Java. Les utilisateurs réclamaient plus de vérifications de types à la compilation et de meilleures performances. L'équipe ajouta une nature statique au langage. Groovy ne renonçait pas à son dynamisme : il offrait simplement le choix entre typage statique et dynamique selon les besoins du projet.

Les transformations AST (Abstract Syntax Tree), introduites avec la version 1.6, changèrent la donne. Elles permettaient d'étendre le langage sans toucher à sa grammaire. Cette approche déclarative, basée sur des annotations, facilitait l'application de motifs de conception Java. L'annotation @Immutable, par exemple, générait automatiquement tout le code nécessaire pour créer une classe immuable conforme aux bonnes pratiques.

La version 2.4 apporta le support d'Android, ce qui entraîna de nombreuses optimisations dans la génération de bytecode. La quantité de code produit diminua, la consommation mémoire des structures internes chuta, et les performances s'améliorèrent. Février 2020 vit arriver la version 3.0 avec son nouveau parseur basé sur Antlr4, offrant une meilleure compatibilité avec la syntaxe Java moderne.

L'histoire organisationnelle de Groovy ressemble à un parcours du combattant. D'abord hébergé sur Codehaus, le projet migra vers la Apache Software Foundation en 2015 après la fermeture de la plateforme. G2One, SpringSource, VMware, Pivotal et OCI sponsorisèrent tour à tour son développement. Malgré ces changements, la communauté open source maintint le cap et assura la progression du langage.

Groovy laissa son empreinte sur d'autres technologies. Kotlin s'inspira de ses fermetures lexicales, de son concept de constructeur, du paramètre par défaut it pour les fermetures, des templates et chaînes interpolées, de l'opérateur Elvis et de la navigation sécurisée. Swift et C# adoptèrent des fonctionnalités similaires comme l'opérateur de navigation sécurisée.

La philosophie de Groovy repose sur l'extensibilité pragmatique. Plutôt que d'intégrer toutes les fonctionnalités possibles dans le cœur du langage, il fournit des mécanismes pour que les utilisateurs enrichissent le langage selon leurs besoins. Les transformations AST, les extensions de vérification de types et la création de langages dédiés (DSL) illustrent cette approche.

Le langage reste vivant et sa communauté continue d'innover tout en préservant la compatibilité avec Java, qui demeure au cœur de sa conception. Groovy tient son équilibre entre productivité accrue pour les développeurs Java et fonctionnalités dynamiques pour des cas d'usage spécifiques.