Groovy, dont une rapide introduction est donnée ici, est un langage de scripting basé sur Java dont il hérite les principaux concepts tels que le concept objet, le bytecode et la syntaxe. On peut même écrire en Java avec Groovy mais nous verrons qu'il existe des simplifications syntaxique comme le typage dynamique comme en Python ce qui accélère le développement et facilite le prototypage.
Les variables
Globalement pour la définition des variables, le typage étant dynamique comme en SmallTalk, la declaration se realise par un simple:
a=12
b="toto"
Au choix il est possible (et conseillé ) d'ajouter le mot clef def afin de conserver une lisibilitée sufisante. Dans le cas ou il est necessaire de faire un typage fort, comme Groovy est basé sur Java, rien n'empeche d'ecrire:
Integer a=12
String b="toto"
A noter que je n'ai pas mis de point virgules mais qu'il est possible de les utiliser (Java toujours la...)
Les listes et dictionnaires
Pour ce qui est des listes:
def liste=[ 'toto', 12, "tata" ]
liste.each{
println (it)
}
et des dictionnaires:
def mamap=[ 'toto':12, 12:"tata", "tata":'toto' ]
println mamap['toto']
println mamap[mamap[mamap['toto']]] // pour rigoler un peu...
Bon bien sur il existe aussi les structures de contrôle et les boucles que nous avons vu juste au dessus. A noter que celle ci utilise le pointeur it comme reference a l'objet courant de l'iteration.
Les chaines et regex
Sur les chaines de caracteres on peut employer un raccourci pour faire des regex en utilisant le symbole "=~", ce qui aura pour consequence la creation d'un objet de la classe java.util.regex.Pattern:
def machaine="Groovy is groovy"Nous donnera:
def pattern=/(G|g)roovy/
def matcher= machaine =~ pattern
println "tous les resultats"
println matcher.grep().each {
println it
}
println "Dans le details"
println matcher[0][0]
println matcher[0][1]
println matcher[1][0]
println matcher[1][1]
tous les resultats
[Groovy, G]
[groovy, g]
[[Groovy, G], [groovy, g]]
Dans le details
Groovy
G
groovy
g
Les Classes
Etant basé sur java, il va etre possible d'utiliser le concept objet avec quelques simplifications facilitant grandement le prototypage. Prennons par exemple la classe suivante:class MaClass
{
String maProp
def hello(quoi)
{
return "hello"+quoi
}
}
def obj=new MaClass()
obj.hello "world"
Il faut savoir que par défaut les classes en groovy sont publique, les données membres privées et les méthodes publiques.
Pour créer une classe abstraite de la même façon qu'en Java il suffit de déclarer abstract avant le mot clef class et pour définir une méthode abstraite, de la même façon, il faut le déclarer avant le mot clef def.
Pour l’héritage, de nouveau comme en Java, les mots clefs extends et implements sont au rendez vous, tout comme la manière de déclarer des interfaces.
Les closures
Et faire des closures comme en JavaScript ou les lambda expression de Java8, amenant une programmation plus dynamique et réactive.Ainsi une premiere closure que l'on peut ecrire serai:
def hello={qui ->Une closure suit donc la construction syntaxique suivante (ici sous la forme de grammaire simplifier):
print "hello" + qui;
}
hello("world")
CLOSURE ::= { [args->] instructions }
Conclusion
Inutile de faire des kilomètres de doc sur la syntaxe de Groovy, celle ci est simple et si vous etes un développeur Java, vous ne serez pas perdu car vous pouvez a tout instant revenir et faire confiance a vos basiques. Cependant, il ne faut pas se tromper, et finalement ne faire que du Java, car Groovy offre des simplifications pour l’écriture du code qui facilite vraiment le développement rapide. Apres toute la subtilité se trouvera peut être dans l'exploitation du code groovy at runtime....Pour obtenir plus d'informations générales sur groovy, je vous invite a consulter le site https://www.tutorialspoint.com/groovy ou le site de torrefacteurjava qui est vraiment tres complet.
Maintenant on va pouvoir s’intéresser a Gradle.... et pourquoi pas Grails ?
Aucun commentaire:
Enregistrer un commentaire