Pour les articles homonymes, voir Groovy (langage) (homonymie).
Groovy est le nom d'un langage de programmation orienté objet destiné à la plateforme Java. Il constitue une alternative au langage Java pour cette plateforme 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 est entièrement compatble 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+) <source lang="java">
class Filter {
public static void main(String[] args) {
List<String> shorts = new ArrayList<String>();
for (String item : Arrays.asList("Rod", "Carlos", "Chris"))
if (item.length() <= 4) shorts.add(item); for (String item : shorts) System.out.println(item); } } </source>
Groovy <source lang="groovy">
list = ["Rod", "Carlos", "Chris"]
shorts = list.findAll { it.size() <= 4 } shorts.each { println it } </source>
Une des caractéristiques notables de Groovy est son support natif des
langages de balisage comme XML et HTML. Ce support permet de définir et manipuler par programmation plusieurs types de structures avec une syntaxe commune.
Exemple :
ce code Groovy... <source lang="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
</source>
... produit le contenu XML suivant : <source lang="xml">
<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>
</source>
Autres exemples
- Hello world
<source lang="groovy">
print "hello word"
def name='World'; println "Hello $name!"
</source>
- Afficher une liste ordonnée de noms transformés en majuscule
<source lang="groovy">
def names = ['Jean', 'John', 'Jill']
println names.collect{ it.toUpperCase() }.sort()
</source>
- Afficher les sept premiers carrés successifs de 2
<source lang="groovy">
def num = 2G
7.times {
println "$num"
num *= num
}
</source>
2
4
16
256
65536
4294967296
18446744073709551616
- Définir des classes utilisateur
<source lang="groovy"> 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 = 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} !" </source>
Liens externes