Groovy (langage)
Un article de Wikipédia, l'encyclopédie libre.
Cet article fait partie de la série Langages de programmation |
Langages à objets |
C++ - C# Delphi - Eiffel - Java Groovy - Python - Ruby Simula - Smalltalk Visual Basic - WinDev |
Langages impératifs |
APL - ASP - Assembleur BASIC - C - Cobol Forth - Fortran - Logo Pascal - Limbo - Perl - PHP |
Langages fonctionnels |
Haskell - ML/OCaml Lisp/Common Lisp Scheme XSLT |
Langages déclaratifs |
Clips - Prolog |
Langages concurrents |
Ada 95 - Erlang |
Langage de balisage |
HTML - SGML - XML S-expressions |
Voir aussi |
Conception - Codage Tests - Optimisations |
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 [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 tout naturellement avec l'écosystème Java car du point de vue de la JVM, il ne présente pas de différence: c'est du bytecode. Il peut donc aussi bien
Sommaire |
[modifier] Principales caractéristiques du language
Groovy possède certaines caractéristiques qui le différencie du java standard
- typage statique et typage dynamique
- Les listes, maps, et expressions régulières sont nativement supportées
- Fermetures ou Closures
- Surcharge des opérateurs
[modifier] Comparaison entre Java et Groovy
Voici une comparaison de Java et Groovy:
Standard Java (Java 5+)
class Filter { public static void main(String[] args) { List<String> list = Arrays.asList("Rod", "Carlos", "Chris"); List<String> shorts = new ArrayList<String>(); for (String item : list) { if (item.length() <= 4) { shorts.add(item); } } for (String item : shorts) { System.out.println(item); } } }
Groovy
list = ["Rod", "Carlos", "Chris"] shorts = list.findAll { it.size() <= 4 } shorts.each { println it }
[modifier] Langage de balisage (XML, HTML, ...)
Une des caractéristiques notables de Groovy est son support natif des langages de balisage tels que XML et HTML. Ce support permet de définir et manipuler par programmation plusieurs type de structure 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:
<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>
[modifier] 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 = '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} !"