VOOZH about

URL: https://fr.wikipedia.org/wiki/Groovy_(langage)

⇱ Groovy (langage) — Wikipédia


Aller au contenu
Un article de Wikipédia, l'encyclopédie libre.

Pour les articles homonymes, voir Groovy.

Groovy
👁 Logo.
👁 Image illustrative de l’article Groovy (langage)

Date de première version 2003
Paradigmes Objet, impératif
Auteur Java Community Process
Dernière version 5.0.4 ()[1]👁 Voir et modifier les données sur Wikidata
Influencé par Java, Python, Ruby, Smalltalk
Écrit en Java👁 Voir et modifier les données sur Wikidata
Système d'exploitation Multiplate-forme
Licence Licence Apache 2.0👁 Voir et modifier les données sur Wikidata
Site web www.groovy-lang.org
Extension de fichier groovy, gvy, gsh et gy👁 Voir et modifier les données sur Wikidata
modifier 👁 Image

Groovy est le nom d'un langage de programmation orienté objet destiné à la plate-forme Java. Il constitue un substitut au langage Java pour cette plate-forme et est inspiré de Python, Ruby et Smalltalk. Il est l'objet de la spécification JSR 241[2].

Groovy utilise une syntaxe très proche de Java, avec des accolades, et est directement compilé, soit à la volée dynamiquement, soit classiquement avec un compilateur en bytecode.

Groovy s'intègre et est entièrement compatible avec la JVM étant donné que le bytecode est le même. Il peut donc :

  • utiliser les bibliothèques Java ;
  • être utilisé dans des classes Java.

Groovy peut être comparé à BeanShell, l'objectif de faire un langage de scripting proche de Java est le même, la mise en œuvre étant différente.

Principales caractéristiques du langage

[modifier | modifier le code]

Groovy possède certaines caractéristiques qui le différencient du Java standard :

Comparaison entre Java et Groovy

[modifier | modifier le code]

Un exemple qui affiche dans la sortie standard des chaines de caractères ayant au plus quatre lettres.

Java 5 :

class Filter{
publicstaticvoidmain(String[]args){
for(Stringitem:Arrays.asList("Rod","Carlos","Chris"))
if(item.length()<=4)System.out.println(item);
}
}

Java 8 :

class Filter{
publicstaticvoidmain(String[]args){
Stream.of("Rod","Carlos","Chris")
.filter(item->item.length()<=4)
.forEach(System.out::println);
}
}

Java 21 :

voidmain(){
Stream.of("Rod","Carlos","Chris")
.filter(item->item.length()<=4)
.forEach(System.out::println);
}

Groovy :

["Rod","Carlos","Chris"].findAll{it.size()<=4}.each{printlnit}

Langage de balisage

[modifier | modifier le code]

Une des caractéristiques notables de Groovy est sa gestion native des langages de balisage comme XML et HTML. Cette prise en charge permet de définir et manipuler par programmation plusieurs types de structures avec une syntaxe commune.

Par exemple un code Groovy qui produit du XML :

importgroovy.xml.MarkupBuilder
defmyXMLDoc=newMarkupBuilder()
myXMLDoc.workbook{
worksheet(caption:"Employees"){
row(fname:"John",lname:"McDoe")
row(fname:"Nancy",lname:"Davolio")
}
worksheet(caption:"Products"){
row(name:"Veeblefeetzer",id:"sku34510")
row(name:"Prune Unit Zappa",id:"sku3a550")
}
}
printlnmyXMLDoc

Sortie du programme :

<workbook>
<worksheetcaption='Employees'>
<rowfname="John"lname="McDoe"/>
<rowfname="Nancy"lname="Davolio"/>
</worksheet>
<worksheetcaption='Products'>
<rowname="Veeblefeetzer"id="sku34510"/>
<rowname="Prune Unit Zappa"id="sku3a550"/>
</worksheet>
</workbook>

Autres exemples

[modifier | modifier le code]

Hello World :

print"hello world"

defname='World';println"Hello $name!"

Afficher une liste ordonnée de noms transformés en majuscules :

defnames=['Jean','John','Jill']
printlnnames.collect{it.toUpperCase()}.sort()

Afficher les sept premiers carrés successifs de 2 :

defnum=2G
7.times{
println"$num"
num*=num
}

Définir des classes utilisateur :

classPerson{
Stringname
Stringgivenname
intage
Stringsex
}

classUserextendsPerson{
Stringuserid
Stringemail
}

deftiti=newUser(name:'titi')
titi.userid='titi1412'
titi.email='titi@acme.org'
titi.age=40

defrominet=newPerson(name:'rominet',age:40,sex:'uhum')
println"Hé ${rominet.name} , ici ${titi.name}, un vieux copain de promo. Écris-moi sur ${titi.email} !"

Liens externes

[modifier | modifier le code]

Notes et références

[modifier | modifier le code]
  1. a et b « https://github.com/apache/groovy/releases/tag/GROOVY_5_0_4 », (consulté le )
  2. (en) « JSR 241: The Groovy Programming Language », sur jpc.org
v · m
Technologie
Général
Framework
Techniques
Langages de programmation
v · m
Concurrents
Déclaratifs
Fonctionnels
Impératifs
Orientés objet