Groovy (langage) - Définition

Source: Wikipédia sous licence CC-BY-SA 3.0.
La liste des auteurs de cet article est disponible ici.

Introduction

Groovy
Groovy.png

Apparu en 2007
Auteur Java Community Process
Paradigmes Objet, impératif
Influencé par Java, Python, Ruby, Smalltalk
Système d'exploitation Multiplate-forme
Site Web groovy.codehaus.org

Groovy est le nom d'un langage de programmation orienté objet destiné à la plate-forme Java. Il constitue une alternative 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.

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.

Principales caractéristiques du langage

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

Comparaison entre Java et Groovy

Voici une comparaison de Java et Groovy :

Standard Java (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);           }       }      

Groovy

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

Langage de balisage (XML, HTML…)

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.

Exemple :

ce code Groovy…

          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      

… produit le contenu XML suivant :

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

Autres exemples

Hello World
       print "hello word"              def name='World'; println "Hello $name!"      
Afficher une liste ordonnée de noms transformés en majuscule
       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       }      
      2      4      16      256      65536      4294967296      18446744073709551616      
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 = '[email protected]'      titi.age = 40             def rominet = new Person(name: 'rominet', age: 40, sex: 'uhum')      println "Hé ${rominet.name} , ici ${titi.name}, un vieux copain de promo. Ecris moi sur ${titi.email} !"      
Page générée en 0.108 seconde(s) - site hébergé chez Contabo
Ce site fait l'objet d'une déclaration à la CNIL sous le numéro de dossier 1037632
A propos - Informations légales
Version anglaise | Version allemande | Version espagnole | Version portugaise