Introduction Groovy / Grails
JUG Lausanne
Jeudi 10 décembre 2009
Présentateur
§  Cyril PICAT
§  Architecte chez OCTO Technology
§  cpicat@octo.com
§  http://www.octo.com

Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

2
Agenda
§  L’éco-système Groovy (GR3)
§  Présentation de Groovy
§  Présentation de Grails
§  Synthèse : Groovy / Grails pour ?

Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

3
L’ECO-SYSTÈME GROOVY (GR3)

Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

4
Qu’est-ce que Groovy ?
§  Groovy est un langage dynamique pour la machine
virtuelle Java
§  « Interprété » ou compilé
§  Génère du bytecode

§  Grammaire dérivée du langage Java
§  Et inspiré d’autres langages : Python, Ruby, SmallTalk

§  Son but est de simplifier la vie des développeurs

Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

5
Qu’est-ce que Grails ?
§  Grails est un framework de développement
d’applications Web
§  Inspiré par Ruby on Rails, Django, Turbo Gears

§  Pour la plateforme Java
§  Basé sur Groovy
§  S’appuie sur des briques Open Source reconnues (Spring,
Hibernate etc…)

§  Son but est de simplifier le développement tout en
permettant la ré-utilisation de l’existant

Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

6
Un peu d’histoire…
§  Groovy
§ 
§ 
§ 
§ 

Lancé en 2003
Version 1.0 en janvier 2007
Branche stable : 1.6.7 datée de décembre 2009
JSR-223 en 2006 : langages de script sur la JVM

§  Grails
§  Lancé en 2005
§  Version 1.0 en février 2008
§  Branche stable : 1.1.2 datée de novembre 2009

Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

7
Eco-système
§  Griffon
§  Framework MVC pour construire des applications Swing –
similaire à Grails pour le RDA

§  Gradle
§  Nouveau système de build inspiré de Ant, Maven et Ivy

§  Easyb
§  Behaviour Driven Development (BDD). Utilise du langage
naturel pour décrire les tests et donc documenter le code

Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

8
PRÉSENTATION DE GROOVY

Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

9
Langage
§  Dérivé de Java
§  À quelques exceptions près…
§  Un programme Java compile en Groovy

§  Surcouche à Java
§  En terme de syntaxe
§  En terme d’API

§  Apports
§  Simplification du code
§  Expressivité, lisibilité du code
§  Simplification de l’écriture de scripts

Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

10
Ex. d’utilisation - DSL
§  DSL = Domain Specific Language

§  Grails fait un usage intensif de ces fonctionnalités
§  ex. GORM, l’API de persistence de Grails
Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

11
Outils
§  Shell et console: groovysh and groovyConsole
§  Tâche Ant, plugin Maven (GMaven)
§  Un compilateur joint groovyc
§  Compile Groovy et Java simultanémenent

§  Support dans les IDE

Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

12
DEMO: HELLOWORLD EN GROOVY

Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

13
Intéropérabilité avec Java
§  Groovy génère des .class - bytecode Java
§ 
§ 
§ 
§ 
§ 

Mêmes chaînes de caractères et expressions régulières
Mêmes APIs — JDK, collections, 3rd party
Même modèle de sécurité, même threading
Même modèle de programmation Orienté Objet
Compilation “jointe”

Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

14
Listes, maps, ranges, regex...
§  Listes
§ 

def list = ["Groovy", "Grails"]
println list[0]
list[2] = "Griffon"

§  Maps — dictionnaires
def states = [CA: "California", TX: "Texas"]
println states["CA"]; println states.CA
States["NY"] = "New York"

§  Ranges
def range = 1..10; def range = 'a'..'d'
for (i in 1..10) { … }

§  Regex
(myString =~ /Hello/).each { … }
Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

15
GDK
§  GDK = Groovy Development Kit
§  Groovy « décore » le JDK existant
§  étend Object
§  étend des classes final comme java.lang.String ou java.io.File

§  Exemples :
new File(“f.txt”).eachLine { println it }
(1..100).findAll { it % 2 == 1 }
speakers.groupBy { it.lastname }
“123”.padLeft(5, ‘0’)
Thread.start { /* code to be executed */ }

Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

16
DEMO: REST EN GROOVY

Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

17
Et bien plus...
§ 
§ 
§ 
§ 
§ 
§ 
§ 
§ 
§ 

Surcharge d’opérateurs
Multi-méthodes
API pour SQL, Ant, XML, templates, Swing, JMX, WS
Groovy Truth
GPath avancé
Groovy Builders
Paramètres nommés
Meta-programming statique (AST) et dynamique (MOP)
Autres mécanismes d’intégration avec Spring, Java etc…

Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

18
PRÉSENTATION DE GRAILS

Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

19
Vision très haut-niveau
§  Grails est un framework MVC action-based
§  Grails utilise les principes rendus populaires par Rails
§  CoC: Convention over Configuration
§  DRY: Don’t Repeat Yourself
§  Scaffolding

§  Productivité et simplicité de développement Web
§  Tout en protégeant votre investissement sur la plateforme Java

Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

20
Vision haut-niveau

Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

21
Vision rapprochée
§  Grails est bâti sur des technologies éprouvées
§ 
§ 
§ 
§ 
§ 
§ 

la JVM, les specs Java EE, les serveurs d’app
Spring : IoC, DI, Spring MVC, Spring WebFlow
Hibernate : Object-Relational Mapping
SiteMesh : structure de page et composition
Quartz : séquencement de tâches
Jetty and HSQLDB : pour des cycles de développement rapide

§  Grails est fourni comme un ensemble intégré et est
productif immédiatemment

Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

22
DEMO: CRÉATION D’UNE APPLICATION GRAILS VIDE

Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

23
Arborescence et nommage

Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

24
Outils
§  Les mêmes outils que pour Groovy
§  Sauf pour Eclipse, pas de support direct de Grails

§  Support de Grails dans Eclipse via SpringSource Tools
Suite (STS)

Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

25
DEMO: DOMAINE / CONTROLLEUR / VUE / SERVICE

Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

26
Avez-vous remarqué ?
§ 
§ 
§ 
§ 
§ 

Où sont les fichiers de configuration ?
Pas besoin d’écrire du XML ?
Où sont mes DAOs ?
Où sont mes fichiers de mapping ?
Pas besoin de configurer une base de
données ?
§  Pas besoin d’installer et de configurer un
serveur d’app ?
§  Pas besoin de télécharger des tonnes de
jar depuis des repositories Maven ?
=> Il y a de la magie dans l’air :-)
Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

27
Synthèse demo
§  Explication des conventions
§ 
§ 
§ 
§ 

Domaine
Controlleur / Actions
Vue
Service

§  CRUD en Grails

Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

28
DEMO: WEB LAYER

Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

29
Synthèse demo
§  GSP
§  Support de la syntaxe JSP/ASP <% %>
§  GSP tags : variable, logique, search, filter, links, forms
§  Tags
•  fonctions groovy standard utilisables en <g:xx> ou ${g.xx}

§  Création de librairies de Tag

§  Templates
§  Layout de site avec SiteMesh

Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

30
DEMO: DOMAINE - GORM

Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

31
Synthèse demo
§  DSL GORM (Grails ORM)
§  Contraintes / Validation
§  Association / Composition / Héritage

§  Classes du domaine décorées
§  save / delete
§  count / get / getAll / list
•  pagination & sorting

§  dynamic finders : findBy / findAllBy
•  pagination & sorting

Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

32
DEMO: CONTROLLER & BINDINGS

Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

33
Synthèse demo
§  GORM
§  Controller
§  Bindings : simple / multiple / association

§  URL Mappings

Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

34
Plugins
§  Grails est bâti sur un système de plugins évolué
§  Le coeur même de Grails est constitué de plugins
§  Hibernate plugin
§  Tomcat plugin

§  Les plugins rajoutent de la fonctionnalité
§  Domaine, service, controlleur, tag libs et même conventions !

Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

35
DEMO: GOOGLE CHART PLUGIN

Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

36
Plugins disponibles
§  100+ plugins disponibles
§ 
§ 
§ 
§ 
§ 
§ 

Build : Maven
Tests : Webtest, Easyb, Selenium, jsUnit, Fitnesse…
Rich client / AJAX : Yahoo, Ext-JS, GWT, jQuery, iUI…
Web Services : XFire, remoting, Axis2, Metro…
Sécurité : Spring Security, Jsecurity…
Search : Compass integration…

Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

37
Déploiement
§  Environnements
§  Par défaut développement / test / production
§  Possibilité de créer ses propres environnements

§  Déploiement
§  Commandes ‘grails run-app/run-war/war’

§  Serveurs d’application supportés
§  Tomcat, Jetty, GlassFish, JBoss, Weblogic etc…

Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

38
Ce que l’on a pas vu…
§ 
§ 
§ 
§ 
§ 
§ 

Advanced Query : Hibernate HQL, Criteria
Spring Web Flow
Internationalisation
Architectures type REST
Tests en Grails
GORM avancé
§  eager/lazy fetching, pessimistic/optimistic locking
§  utilisation de schémas existants, de mapping Hibernate ou de
configuration Spring existantes

§  Filtres / intercepteurs

Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

39
SYNTHÈSE : GROOVY / GRAILS POUR ?

Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

40
Synthèse
§  Parfait pour développer rapidement des applications innovantes
§  Adapté à un développement Agile des applications
§  Permet de montrer très rapidement des écrans fonctionnels

§  Également adapté aux développement de nouvelles
fonctionnalités en s’interfaçant avec du legacy
§  Architecture type REST

§  Permet de profiter de toutes ces nouveautés toute de suite
§  Pas d’impact en production

§  Permet une transition facile de la zone d’innovation vers la zone
rationalisée
§  Si besoin

Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

41
Bibliographie
§  Livres
§  Groovy
•  Groovy in Action

§  Grails
•  The Definitive Guide to Grails, 2nd edition
•  Grails in Action

§  Ressources :
§  Groovy User Guide : http://groovy.codehaus.org/User+Guide
§  Groovy GDK : http://groovy.codehaus.org/groovy-jdk
§  Grails User Guide : http://www.grails.org/doc/latest

Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

42
Sources
§  « Introduction à Groovy », Guillaume Laforge, Paris JUG,
septembre 2008
§  « Groovy & Grails in Action! », Guillaume Laforge, Devoxx,
2008

Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

43
Licence
Creative Commons
Contrat Paternité
Pas d'Utilisation Commerciale
Partage des Conditions Initiales à l'Identique
2.0 France

http://creativecommons.org/licenses/by-nc-sa/2.0/fr/

Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

44
Q&A

Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

45

JUGL 2009 - Introduction Groovy/Grails

  • 1.
    Introduction Groovy /Grails JUG Lausanne Jeudi 10 décembre 2009
  • 2.
    Présentateur §  Cyril PICAT § Architecte chez OCTO Technology §  cpicat@octo.com §  http://www.octo.com Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique 2
  • 3.
    Agenda §  L’éco-système Groovy(GR3) §  Présentation de Groovy §  Présentation de Grails §  Synthèse : Groovy / Grails pour ? Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique 3
  • 4.
    L’ECO-SYSTÈME GROOVY (GR3) Copyright© 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique 4
  • 5.
    Qu’est-ce que Groovy? §  Groovy est un langage dynamique pour la machine virtuelle Java §  « Interprété » ou compilé §  Génère du bytecode §  Grammaire dérivée du langage Java §  Et inspiré d’autres langages : Python, Ruby, SmallTalk §  Son but est de simplifier la vie des développeurs Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique 5
  • 6.
    Qu’est-ce que Grails? §  Grails est un framework de développement d’applications Web §  Inspiré par Ruby on Rails, Django, Turbo Gears §  Pour la plateforme Java §  Basé sur Groovy §  S’appuie sur des briques Open Source reconnues (Spring, Hibernate etc…) §  Son but est de simplifier le développement tout en permettant la ré-utilisation de l’existant Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique 6
  • 7.
    Un peu d’histoire… § Groovy §  §  §  §  Lancé en 2003 Version 1.0 en janvier 2007 Branche stable : 1.6.7 datée de décembre 2009 JSR-223 en 2006 : langages de script sur la JVM §  Grails §  Lancé en 2005 §  Version 1.0 en février 2008 §  Branche stable : 1.1.2 datée de novembre 2009 Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique 7
  • 8.
    Eco-système §  Griffon §  FrameworkMVC pour construire des applications Swing – similaire à Grails pour le RDA §  Gradle §  Nouveau système de build inspiré de Ant, Maven et Ivy §  Easyb §  Behaviour Driven Development (BDD). Utilise du langage naturel pour décrire les tests et donc documenter le code Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique 8
  • 9.
    PRÉSENTATION DE GROOVY Copyright© 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique 9
  • 10.
    Langage §  Dérivé deJava §  À quelques exceptions près… §  Un programme Java compile en Groovy §  Surcouche à Java §  En terme de syntaxe §  En terme d’API §  Apports §  Simplification du code §  Expressivité, lisibilité du code §  Simplification de l’écriture de scripts Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique 10
  • 11.
    Ex. d’utilisation -DSL §  DSL = Domain Specific Language §  Grails fait un usage intensif de ces fonctionnalités §  ex. GORM, l’API de persistence de Grails Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique 11
  • 12.
    Outils §  Shell etconsole: groovysh and groovyConsole §  Tâche Ant, plugin Maven (GMaven) §  Un compilateur joint groovyc §  Compile Groovy et Java simultanémenent §  Support dans les IDE Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique 12
  • 13.
    DEMO: HELLOWORLD ENGROOVY Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique 13
  • 14.
    Intéropérabilité avec Java § Groovy génère des .class - bytecode Java §  §  §  §  §  Mêmes chaînes de caractères et expressions régulières Mêmes APIs — JDK, collections, 3rd party Même modèle de sécurité, même threading Même modèle de programmation Orienté Objet Compilation “jointe” Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique 14
  • 15.
    Listes, maps, ranges,regex... §  Listes §  def list = ["Groovy", "Grails"] println list[0] list[2] = "Griffon" §  Maps — dictionnaires def states = [CA: "California", TX: "Texas"] println states["CA"]; println states.CA States["NY"] = "New York" §  Ranges def range = 1..10; def range = 'a'..'d' for (i in 1..10) { … } §  Regex (myString =~ /Hello/).each { … } Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique 15
  • 16.
    GDK §  GDK =Groovy Development Kit §  Groovy « décore » le JDK existant §  étend Object §  étend des classes final comme java.lang.String ou java.io.File §  Exemples : new File(“f.txt”).eachLine { println it } (1..100).findAll { it % 2 == 1 } speakers.groupBy { it.lastname } “123”.padLeft(5, ‘0’) Thread.start { /* code to be executed */ } Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique 16
  • 17.
    DEMO: REST ENGROOVY Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique 17
  • 18.
    Et bien plus... §  §  §  §  §  §  §  §  §  Surcharged’opérateurs Multi-méthodes API pour SQL, Ant, XML, templates, Swing, JMX, WS Groovy Truth GPath avancé Groovy Builders Paramètres nommés Meta-programming statique (AST) et dynamique (MOP) Autres mécanismes d’intégration avec Spring, Java etc… Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique 18
  • 19.
    PRÉSENTATION DE GRAILS Copyright© 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique 19
  • 20.
    Vision très haut-niveau § Grails est un framework MVC action-based §  Grails utilise les principes rendus populaires par Rails §  CoC: Convention over Configuration §  DRY: Don’t Repeat Yourself §  Scaffolding §  Productivité et simplicité de développement Web §  Tout en protégeant votre investissement sur la plateforme Java Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique 20
  • 21.
    Vision haut-niveau Copyright ©2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique 21
  • 22.
    Vision rapprochée §  Grailsest bâti sur des technologies éprouvées §  §  §  §  §  §  la JVM, les specs Java EE, les serveurs d’app Spring : IoC, DI, Spring MVC, Spring WebFlow Hibernate : Object-Relational Mapping SiteMesh : structure de page et composition Quartz : séquencement de tâches Jetty and HSQLDB : pour des cycles de développement rapide §  Grails est fourni comme un ensemble intégré et est productif immédiatemment Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique 22
  • 23.
    DEMO: CRÉATION D’UNEAPPLICATION GRAILS VIDE Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique 23
  • 24.
    Arborescence et nommage Copyright© 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique 24
  • 25.
    Outils §  Les mêmesoutils que pour Groovy §  Sauf pour Eclipse, pas de support direct de Grails §  Support de Grails dans Eclipse via SpringSource Tools Suite (STS) Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique 25
  • 26.
    DEMO: DOMAINE /CONTROLLEUR / VUE / SERVICE Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique 26
  • 27.
    Avez-vous remarqué ? §  §  §  §  §  Oùsont les fichiers de configuration ? Pas besoin d’écrire du XML ? Où sont mes DAOs ? Où sont mes fichiers de mapping ? Pas besoin de configurer une base de données ? §  Pas besoin d’installer et de configurer un serveur d’app ? §  Pas besoin de télécharger des tonnes de jar depuis des repositories Maven ? => Il y a de la magie dans l’air :-) Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique 27
  • 28.
    Synthèse demo §  Explicationdes conventions §  §  §  §  Domaine Controlleur / Actions Vue Service §  CRUD en Grails Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique 28
  • 29.
    DEMO: WEB LAYER Copyright© 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique 29
  • 30.
    Synthèse demo §  GSP § Support de la syntaxe JSP/ASP <% %> §  GSP tags : variable, logique, search, filter, links, forms §  Tags •  fonctions groovy standard utilisables en <g:xx> ou ${g.xx} §  Création de librairies de Tag §  Templates §  Layout de site avec SiteMesh Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique 30
  • 31.
    DEMO: DOMAINE -GORM Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique 31
  • 32.
    Synthèse demo §  DSLGORM (Grails ORM) §  Contraintes / Validation §  Association / Composition / Héritage §  Classes du domaine décorées §  save / delete §  count / get / getAll / list •  pagination & sorting §  dynamic finders : findBy / findAllBy •  pagination & sorting Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique 32
  • 33.
    DEMO: CONTROLLER &BINDINGS Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique 33
  • 34.
    Synthèse demo §  GORM § Controller §  Bindings : simple / multiple / association §  URL Mappings Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique 34
  • 35.
    Plugins §  Grails estbâti sur un système de plugins évolué §  Le coeur même de Grails est constitué de plugins §  Hibernate plugin §  Tomcat plugin §  Les plugins rajoutent de la fonctionnalité §  Domaine, service, controlleur, tag libs et même conventions ! Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique 35
  • 36.
    DEMO: GOOGLE CHARTPLUGIN Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique 36
  • 37.
    Plugins disponibles §  100+plugins disponibles §  §  §  §  §  §  Build : Maven Tests : Webtest, Easyb, Selenium, jsUnit, Fitnesse… Rich client / AJAX : Yahoo, Ext-JS, GWT, jQuery, iUI… Web Services : XFire, remoting, Axis2, Metro… Sécurité : Spring Security, Jsecurity… Search : Compass integration… Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique 37
  • 38.
    Déploiement §  Environnements §  Pardéfaut développement / test / production §  Possibilité de créer ses propres environnements §  Déploiement §  Commandes ‘grails run-app/run-war/war’ §  Serveurs d’application supportés §  Tomcat, Jetty, GlassFish, JBoss, Weblogic etc… Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique 38
  • 39.
    Ce que l’ona pas vu… §  §  §  §  §  §  Advanced Query : Hibernate HQL, Criteria Spring Web Flow Internationalisation Architectures type REST Tests en Grails GORM avancé §  eager/lazy fetching, pessimistic/optimistic locking §  utilisation de schémas existants, de mapping Hibernate ou de configuration Spring existantes §  Filtres / intercepteurs Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique 39
  • 40.
    SYNTHÈSE : GROOVY/ GRAILS POUR ? Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique 40
  • 41.
    Synthèse §  Parfait pourdévelopper rapidement des applications innovantes §  Adapté à un développement Agile des applications §  Permet de montrer très rapidement des écrans fonctionnels §  Également adapté aux développement de nouvelles fonctionnalités en s’interfaçant avec du legacy §  Architecture type REST §  Permet de profiter de toutes ces nouveautés toute de suite §  Pas d’impact en production §  Permet une transition facile de la zone d’innovation vers la zone rationalisée §  Si besoin Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique 41
  • 42.
    Bibliographie §  Livres §  Groovy • Groovy in Action §  Grails •  The Definitive Guide to Grails, 2nd edition •  Grails in Action §  Ressources : §  Groovy User Guide : http://groovy.codehaus.org/User+Guide §  Groovy GDK : http://groovy.codehaus.org/groovy-jdk §  Grails User Guide : http://www.grails.org/doc/latest Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique 42
  • 43.
    Sources §  « Introductionà Groovy », Guillaume Laforge, Paris JUG, septembre 2008 §  « Groovy & Grails in Action! », Guillaume Laforge, Devoxx, 2008 Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique 43
  • 44.
    Licence Creative Commons Contrat Paternité Pasd'Utilisation Commerciale Partage des Conditions Initiales à l'Identique 2.0 France http://creativecommons.org/licenses/by-nc-sa/2.0/fr/ Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique 44
  • 45.
    Q&A Copyright © 2009– OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique 45