Groovy 2.0 : plus statique pour un meilleur dynamisme
Invoke Dynamic, vérification des types et compilation statiques sur la première bêta




L'équipe du projet Groovy surprend la communauté du langage en sortant la version 2.0 en bêta, alors que c'est la 1.9 qui était attendue.

Comme c'est tendance actuellement, Groovy abandonne la numérotation des versions majeures en deuxième position (1.x), où la version 2.0 devient « mythique et semble ne jamais vouloir arriver », explique Guillaume Laforge, manager du projet.

Le projet aura désormais une évolution majeure chaque année, mais cette version 2.0 n'est pas pour autant qu'un saut de version de façade. Elle marque un virage important dans l'identité du langage.

Partant d'un simple constat, le langage de script de la JVM prendra quelques distances du dynamisme qui le distingue de Java. Les mainteneurs du projet ont constaté que l'utilisation type qu'en font les développeurs ne tire pas particulièrement parti des aspects dynamiques du langage. Ce dernier serait utilisé « comme une sorte de meilleure syntaxe pour Java », explique Laforge.

D'où l'introduction de la vérification statique du type, qui peut être exigée au compilateur à l'aide de l'annotation @TypeChecked. Elle peut prendre effet sur toute une classe ou être limitée à la portée d'une méthode.

Cette nouvelle facette du langage n'est pas entièrement implémentée et son comportement pourra être influencé par les avis de la communauté d'ici la sortie de la version finale prévue début 2012. Elle inclut toutefois l'inférence de type, le typage sensible au flux, les blocs instanceof, etc.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
import groovy.transform.TypeChecked

@TypeChecked
void method(String message) {
   if (rareCondition) {
        println "Did you spot the error in this ${message.toUppercase()}?"
   }
}
Exemple de l'utilisation de @TypeChecked sur une méthode

L'introduction de ces nouveautés permet au nouveau compilateur Groovy de traiter le code de manière plus intelligente. Dans certaines situations, il pourra générer ainsi des appels directs de méthodes (comme en Java), sans passer par le protocole de Meta-Objet de Groovy.
Ce remaniement du compilateur et la vérification des types sont grandement inspirés de l'extension Groovy++.

Groovy 2.0 tire profit de l'instruction de Bytecode et des API « Invoke Dynamic » introduites par JDK 7 à l'intention des langages dynamiques. Cette intégration permettra d'améliorer les performances des aspects dynamiques du langage de manière significative, affirme Guillaume Laforge.


Cette Beta est disponible en téléchargement sous Licence Apache 2.0 sur cette page

Sources :
Blog officiel du projet
Blog de Cédric Champeau (détails sur la vérification statique de type)

Et vous ?

Suivez-vous l'évolution du langage Groovy ?
Que pensez-vous de l'introduction de ces nouveautés ?