Groovy (langage)

langage de programmation

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

Date de première version2003
ParadigmesObjet, impératif
AuteurJava Community Process
Dernière version4.0.21 ()[1]Voir et modifier les données sur Wikidata
Influencé parJava, Python, Ruby, Smalltalk
Écrit enJavaVoir et modifier les données sur Wikidata
Système d'exploitationMultiplate-forme
LicenceLicence Apache version 2.0 et licence ApacheVoir et modifier les données sur Wikidata
Site webwww.groovy-lang.org
Extension de fichiergroovy, gvy, gsh et gyVoir et modifier les données sur Wikidata

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

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

Comparaison entre Java et Groovy

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

Java 5 :

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

Java 8 :

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

Java 21 :

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

Groovy :

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

Langage de balisage

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 :

    import groovy.xml.MarkupBuilder    def myXMLDoc = new MarkupBuilder()    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")       }    }    println myXMLDoc

Sortie du programme :

    <workbook>       <worksheet caption='Employees'>          <row fname="John" lname="McDoe" />          <row fname="Nancy" lname="Davolio" />       </worksheet>       <worksheet caption='Products'>          <row name="Veeblefeetzer" id="sku34510" />          <row name="Prune Unit Zappa" id="sku3a550" />       </worksheet>    </workbook>

Autres exemples

Hello World :

 print "hello world" def name='World'; println "Hello $name!"

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

 def names = ['Jean', 'John', 'Jill'] println names.collect{ it.toUpperCase() }.sort()

Afficher les sept premiers carrés successifs de 2 :

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

Définir des classes utilisateur :

class Person {  String name  String givenname  int age  String sex}class User extends Person {  String userid  String email}def titi = new User(name: 'titi')titi.userid = 'titi1412'titi.email = 'titi@acme.org'titi.age = 40def rominet = new Person(name: 'rominet', age: 40, sex: 'uhum')println "Hé ${rominet.name} , ici ${titi.name}, un vieux copain de promo. Écris-moi sur ${titi.email} !"

Annexes

Liens externes

Notes et références

🔥 Top keywords: