SlideShare une entreprise Scribd logo
1  sur  45
Télécharger pour lire hors ligne
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

Contenu connexe

En vedette

Introduction au langage de script Groovy
Introduction au langage de script GroovyIntroduction au langage de script Groovy
Introduction au langage de script GroovyEric Reboisson
 
Domain-Specific Languages avec Groovy
Domain-Specific Languages avec GroovyDomain-Specific Languages avec Groovy
Domain-Specific Languages avec GroovyGuillaume Laforge
 
FinistJUG - J’ai besoin d’une appli web rapidement
FinistJUG -   J’ai besoin d’une appli web rapidementFinistJUG -   J’ai besoin d’une appli web rapidement
FinistJUG - J’ai besoin d’une appli web rapidementHoracio Gonzalez
 
Formation Grails
Formation GrailsFormation Grails
Formation Grailsskeltown
 
"Apache JMeter, Java et Groovy sont sur un bateau" présentée au Paris JUG
"Apache JMeter, Java et Groovy sont sur un bateau" présentée au Paris JUG"Apache JMeter, Java et Groovy sont sur un bateau" présentée au Paris JUG
"Apache JMeter, Java et Groovy sont sur un bateau" présentée au Paris JUGAntonio Gomes Rodrigues
 
Groovy workshop à Mix-IT 2013
Groovy workshop à Mix-IT 2013Groovy workshop à Mix-IT 2013
Groovy workshop à Mix-IT 2013Guillaume Laforge
 
Groovy 2.0 update at Devoxx 2012
Groovy 2.0 update at Devoxx 2012Groovy 2.0 update at Devoxx 2012
Groovy 2.0 update at Devoxx 2012Guillaume Laforge
 
Les nouveautés de Groovy 2 -- Mix-IT 2013
Les nouveautés de Groovy 2 -- Mix-IT 2013Les nouveautés de Groovy 2 -- Mix-IT 2013
Les nouveautés de Groovy 2 -- Mix-IT 2013Guillaume Laforge
 
Présentation Groovy
Présentation GroovyPrésentation Groovy
Présentation GroovyJS Bournival
 
JHipster à Devoxx 2015
JHipster à Devoxx 2015JHipster à Devoxx 2015
JHipster à Devoxx 2015Julien Dubois
 
Conception d'un module de gestion de la paie adapté au contexte marocain pour...
Conception d'un module de gestion de la paie adapté au contexte marocain pour...Conception d'un module de gestion de la paie adapté au contexte marocain pour...
Conception d'un module de gestion de la paie adapté au contexte marocain pour...HORIYASOFT
 
Devoxx : being productive with JHipster
Devoxx : being productive with JHipsterDevoxx : being productive with JHipster
Devoxx : being productive with JHipsterJulien Dubois
 
DEMARCHE AUDIT INFORMATIQUE DANS UNE BANQUE - RAPPORT DE STAGE
DEMARCHE AUDIT INFORMATIQUE DANS UNE BANQUE - RAPPORT DE STAGEDEMARCHE AUDIT INFORMATIQUE DANS UNE BANQUE - RAPPORT DE STAGE
DEMARCHE AUDIT INFORMATIQUE DANS UNE BANQUE - RAPPORT DE STAGEhpfumtchum
 

En vedette (20)

Introduction au langage de script Groovy
Introduction au langage de script GroovyIntroduction au langage de script Groovy
Introduction au langage de script Groovy
 
Gradle
GradleGradle
Gradle
 
Domain-Specific Languages avec Groovy
Domain-Specific Languages avec GroovyDomain-Specific Languages avec Groovy
Domain-Specific Languages avec Groovy
 
FinistJUG - J’ai besoin d’une appli web rapidement
FinistJUG -   J’ai besoin d’une appli web rapidementFinistJUG -   J’ai besoin d’une appli web rapidement
FinistJUG - J’ai besoin d’une appli web rapidement
 
Formation Grails
Formation GrailsFormation Grails
Formation Grails
 
"Apache JMeter, Java et Groovy sont sur un bateau" présentée au Paris JUG
"Apache JMeter, Java et Groovy sont sur un bateau" présentée au Paris JUG"Apache JMeter, Java et Groovy sont sur un bateau" présentée au Paris JUG
"Apache JMeter, Java et Groovy sont sur un bateau" présentée au Paris JUG
 
Infoviz 0511
Infoviz 0511Infoviz 0511
Infoviz 0511
 
Groovy workshop à Mix-IT 2013
Groovy workshop à Mix-IT 2013Groovy workshop à Mix-IT 2013
Groovy workshop à Mix-IT 2013
 
Groovy 2.0 update at Devoxx 2012
Groovy 2.0 update at Devoxx 2012Groovy 2.0 update at Devoxx 2012
Groovy 2.0 update at Devoxx 2012
 
Les nouveautés de Groovy 2 -- Mix-IT 2013
Les nouveautés de Groovy 2 -- Mix-IT 2013Les nouveautés de Groovy 2 -- Mix-IT 2013
Les nouveautés de Groovy 2 -- Mix-IT 2013
 
Présentation Groovy
Présentation GroovyPrésentation Groovy
Présentation Groovy
 
JHipster à Devoxx 2015
JHipster à Devoxx 2015JHipster à Devoxx 2015
JHipster à Devoxx 2015
 
De Devoxx au CAC40
De Devoxx au CAC40De Devoxx au CAC40
De Devoxx au CAC40
 
Conception d'un module de gestion de la paie adapté au contexte marocain pour...
Conception d'un module de gestion de la paie adapté au contexte marocain pour...Conception d'un module de gestion de la paie adapté au contexte marocain pour...
Conception d'un module de gestion de la paie adapté au contexte marocain pour...
 
Introduction à Angular 2
Introduction à Angular 2Introduction à Angular 2
Introduction à Angular 2
 
JHipster overview
JHipster overviewJHipster overview
JHipster overview
 
Devoxx : being productive with JHipster
Devoxx : being productive with JHipsterDevoxx : being productive with JHipster
Devoxx : being productive with JHipster
 
DEMARCHE AUDIT INFORMATIQUE DANS UNE BANQUE - RAPPORT DE STAGE
DEMARCHE AUDIT INFORMATIQUE DANS UNE BANQUE - RAPPORT DE STAGEDEMARCHE AUDIT INFORMATIQUE DANS UNE BANQUE - RAPPORT DE STAGE
DEMARCHE AUDIT INFORMATIQUE DANS UNE BANQUE - RAPPORT DE STAGE
 
Jenkins Workflow
Jenkins WorkflowJenkins Workflow
Jenkins Workflow
 
Les guides d'audit TI de l'ISACA
Les guides d'audit TI de l'ISACALes guides d'audit TI de l'ISACA
Les guides d'audit TI de l'ISACA
 

Similaire à JUGL 2009 - Introduction Groovy/Grails

Innover sans contrainte, intégrer sans rupture
Innover sans contrainte, intégrer sans ruptureInnover sans contrainte, intégrer sans rupture
Innover sans contrainte, intégrer sans ruptureGuillaume Laforge
 
Introduction à web assembly
Introduction à web assemblyIntroduction à web assembly
Introduction à web assemblyJérémy Buget
 
La Duck Conf - Continuous Security : Secure a DevOps World!
La Duck Conf - Continuous Security : Secure a DevOps World!La Duck Conf - Continuous Security : Secure a DevOps World!
La Duck Conf - Continuous Security : Secure a DevOps World!OCTO Technology
 
Comptoir - Utiliser une solution d'edge Open Source pour améliorer l'inspecti...
Comptoir - Utiliser une solution d'edge Open Source pour améliorer l'inspecti...Comptoir - Utiliser une solution d'edge Open Source pour améliorer l'inspecti...
Comptoir - Utiliser une solution d'edge Open Source pour améliorer l'inspecti...OCTO Technology
 
LA DUCK CONF 2023 - La vie d'Ops au coeur d'un SI en évolution
LA DUCK CONF 2023 - La vie d'Ops au coeur d'un SI en évolutionLA DUCK CONF 2023 - La vie d'Ops au coeur d'un SI en évolution
LA DUCK CONF 2023 - La vie d'Ops au coeur d'un SI en évolutionOCTO Technology
 
Jug Lausanne Android Janvier2013
Jug Lausanne Android Janvier2013Jug Lausanne Android Janvier2013
Jug Lausanne Android Janvier2013jeromevdl
 
Gtug2 Mobile app with web technlogy
Gtug2 Mobile app with web technlogyGtug2 Mobile app with web technlogy
Gtug2 Mobile app with web technlogySacha Leprêtre
 
GAB 2017 PARIS - Docker sur Azure Container Services et DCOS par Michaël FERY...
GAB 2017 PARIS - Docker sur Azure Container Services et DCOS par Michaël FERY...GAB 2017 PARIS - Docker sur Azure Container Services et DCOS par Michaël FERY...
GAB 2017 PARIS - Docker sur Azure Container Services et DCOS par Michaël FERY...AZUG FR
 
Support formation : Construire et administrer vos conteneurs avec Docker
Support formation : Construire et administrer vos conteneurs avec DockerSupport formation : Construire et administrer vos conteneurs avec Docker
Support formation : Construire et administrer vos conteneurs avec DockerSmartnSkilled
 
Support formation vidéo : Construire et administrer vos conteneurs avec Docker
Support formation vidéo : Construire et administrer vos conteneurs avec DockerSupport formation vidéo : Construire et administrer vos conteneurs avec Docker
Support formation vidéo : Construire et administrer vos conteneurs avec DockerSmartnSkilled
 
Formation Play! framework
Formation Play! frameworkFormation Play! framework
Formation Play! frameworkBenoît Simard
 
Comment travailler avec les logiciels Open Source
Comment travailler avec les logiciels Open SourceComment travailler avec les logiciels Open Source
Comment travailler avec les logiciels Open SourceChristian Charreyre
 
Docker le buzz est il justifié ?
Docker le buzz est il justifié ? Docker le buzz est il justifié ?
Docker le buzz est il justifié ? Romain Chalumeau
 
Paris Container Day 2016 : Architecture microservices hautement disponible au...
Paris Container Day 2016 : Architecture microservices hautement disponible au...Paris Container Day 2016 : Architecture microservices hautement disponible au...
Paris Container Day 2016 : Architecture microservices hautement disponible au...Publicis Sapient Engineering
 
Yocto une solution robuste pour construire des applications à fort contenu ap...
Yocto une solution robuste pour construire des applications à fort contenu ap...Yocto une solution robuste pour construire des applications à fort contenu ap...
Yocto une solution robuste pour construire des applications à fort contenu ap...Christian Charreyre
 
20081023 - Paris Vi Master STL TA - Initiation Maven
20081023 - Paris Vi Master STL TA - Initiation Maven20081023 - Paris Vi Master STL TA - Initiation Maven
20081023 - Paris Vi Master STL TA - Initiation MavenArnaud Héritier
 
Retour d'expérience du métier d'architecte logiciel
Retour d'expérience du métier d'architecte logicielRetour d'expérience du métier d'architecte logiciel
Retour d'expérience du métier d'architecte logicielMik_Arber
 

Similaire à JUGL 2009 - Introduction Groovy/Grails (20)

Innover sans contrainte, intégrer sans rupture
Innover sans contrainte, intégrer sans ruptureInnover sans contrainte, intégrer sans rupture
Innover sans contrainte, intégrer sans rupture
 
Introduction à web assembly
Introduction à web assemblyIntroduction à web assembly
Introduction à web assembly
 
La Duck Conf - Continuous Security : Secure a DevOps World!
La Duck Conf - Continuous Security : Secure a DevOps World!La Duck Conf - Continuous Security : Secure a DevOps World!
La Duck Conf - Continuous Security : Secure a DevOps World!
 
GWT no-dto
GWT no-dtoGWT no-dto
GWT no-dto
 
Cours cordova & REST
Cours cordova & RESTCours cordova & REST
Cours cordova & REST
 
Comptoir - Utiliser une solution d'edge Open Source pour améliorer l'inspecti...
Comptoir - Utiliser une solution d'edge Open Source pour améliorer l'inspecti...Comptoir - Utiliser une solution d'edge Open Source pour améliorer l'inspecti...
Comptoir - Utiliser une solution d'edge Open Source pour améliorer l'inspecti...
 
LA DUCK CONF 2023 - La vie d'Ops au coeur d'un SI en évolution
LA DUCK CONF 2023 - La vie d'Ops au coeur d'un SI en évolutionLA DUCK CONF 2023 - La vie d'Ops au coeur d'un SI en évolution
LA DUCK CONF 2023 - La vie d'Ops au coeur d'un SI en évolution
 
Jug Lausanne Android Janvier2013
Jug Lausanne Android Janvier2013Jug Lausanne Android Janvier2013
Jug Lausanne Android Janvier2013
 
Le futur de gwt
Le futur de gwtLe futur de gwt
Le futur de gwt
 
Gtug2 Mobile app with web technlogy
Gtug2 Mobile app with web technlogyGtug2 Mobile app with web technlogy
Gtug2 Mobile app with web technlogy
 
GAB 2017 PARIS - Docker sur Azure Container Services et DCOS par Michaël FERY...
GAB 2017 PARIS - Docker sur Azure Container Services et DCOS par Michaël FERY...GAB 2017 PARIS - Docker sur Azure Container Services et DCOS par Michaël FERY...
GAB 2017 PARIS - Docker sur Azure Container Services et DCOS par Michaël FERY...
 
Support formation : Construire et administrer vos conteneurs avec Docker
Support formation : Construire et administrer vos conteneurs avec DockerSupport formation : Construire et administrer vos conteneurs avec Docker
Support formation : Construire et administrer vos conteneurs avec Docker
 
Support formation vidéo : Construire et administrer vos conteneurs avec Docker
Support formation vidéo : Construire et administrer vos conteneurs avec DockerSupport formation vidéo : Construire et administrer vos conteneurs avec Docker
Support formation vidéo : Construire et administrer vos conteneurs avec Docker
 
Formation Play! framework
Formation Play! frameworkFormation Play! framework
Formation Play! framework
 
Comment travailler avec les logiciels Open Source
Comment travailler avec les logiciels Open SourceComment travailler avec les logiciels Open Source
Comment travailler avec les logiciels Open Source
 
Docker le buzz est il justifié ?
Docker le buzz est il justifié ? Docker le buzz est il justifié ?
Docker le buzz est il justifié ?
 
Paris Container Day 2016 : Architecture microservices hautement disponible au...
Paris Container Day 2016 : Architecture microservices hautement disponible au...Paris Container Day 2016 : Architecture microservices hautement disponible au...
Paris Container Day 2016 : Architecture microservices hautement disponible au...
 
Yocto une solution robuste pour construire des applications à fort contenu ap...
Yocto une solution robuste pour construire des applications à fort contenu ap...Yocto une solution robuste pour construire des applications à fort contenu ap...
Yocto une solution robuste pour construire des applications à fort contenu ap...
 
20081023 - Paris Vi Master STL TA - Initiation Maven
20081023 - Paris Vi Master STL TA - Initiation Maven20081023 - Paris Vi Master STL TA - Initiation Maven
20081023 - Paris Vi Master STL TA - Initiation Maven
 
Retour d'expérience du métier d'architecte logiciel
Retour d'expérience du métier d'architecte logicielRetour d'expérience du métier d'architecte logiciel
Retour d'expérience du métier d'architecte logiciel
 

Plus de cyrilpicat

Afterwork OCTO Delivery - L'ADN d'un développement produit réussi
Afterwork OCTO Delivery - L'ADN d'un développement produit réussiAfterwork OCTO Delivery - L'ADN d'un développement produit réussi
Afterwork OCTO Delivery - L'ADN d'un développement produit réussicyrilpicat
 
Softshake 2015 - Comment tester et optimiser la performance d'un SI ?
Softshake 2015 - Comment tester et optimiser la performance d'un SI ?Softshake 2015 - Comment tester et optimiser la performance d'un SI ?
Softshake 2015 - Comment tester et optimiser la performance d'un SI ?cyrilpicat
 
SITB15 - Qu'est qu'une Data Driven Company à l'heure de la digitalisation ?
SITB15 - Qu'est qu'une Data Driven Company à l'heure de la digitalisation ?SITB15 - Qu'est qu'une Data Driven Company à l'heure de la digitalisation ?
SITB15 - Qu'est qu'une Data Driven Company à l'heure de la digitalisation ?cyrilpicat
 
Petit-déjeuner Mobilité 2011 - strategie mobile
Petit-déjeuner Mobilité 2011 - strategie mobilePetit-déjeuner Mobilité 2011 - strategie mobile
Petit-déjeuner Mobilité 2011 - strategie mobilecyrilpicat
 
Make use of Sonar for your mobile developments - It's easy and useful!
Make use of Sonar for your mobile developments - It's easy and useful!Make use of Sonar for your mobile developments - It's easy and useful!
Make use of Sonar for your mobile developments - It's easy and useful!cyrilpicat
 
10 idées recues sur le Bring Your Own Device
10 idées recues sur le Bring Your Own Device10 idées recues sur le Bring Your Own Device
10 idées recues sur le Bring Your Own Devicecyrilpicat
 
February JUGL on Software Quality Analysis
February JUGL on Software Quality AnalysisFebruary JUGL on Software Quality Analysis
February JUGL on Software Quality Analysiscyrilpicat
 

Plus de cyrilpicat (7)

Afterwork OCTO Delivery - L'ADN d'un développement produit réussi
Afterwork OCTO Delivery - L'ADN d'un développement produit réussiAfterwork OCTO Delivery - L'ADN d'un développement produit réussi
Afterwork OCTO Delivery - L'ADN d'un développement produit réussi
 
Softshake 2015 - Comment tester et optimiser la performance d'un SI ?
Softshake 2015 - Comment tester et optimiser la performance d'un SI ?Softshake 2015 - Comment tester et optimiser la performance d'un SI ?
Softshake 2015 - Comment tester et optimiser la performance d'un SI ?
 
SITB15 - Qu'est qu'une Data Driven Company à l'heure de la digitalisation ?
SITB15 - Qu'est qu'une Data Driven Company à l'heure de la digitalisation ?SITB15 - Qu'est qu'une Data Driven Company à l'heure de la digitalisation ?
SITB15 - Qu'est qu'une Data Driven Company à l'heure de la digitalisation ?
 
Petit-déjeuner Mobilité 2011 - strategie mobile
Petit-déjeuner Mobilité 2011 - strategie mobilePetit-déjeuner Mobilité 2011 - strategie mobile
Petit-déjeuner Mobilité 2011 - strategie mobile
 
Make use of Sonar for your mobile developments - It's easy and useful!
Make use of Sonar for your mobile developments - It's easy and useful!Make use of Sonar for your mobile developments - It's easy and useful!
Make use of Sonar for your mobile developments - It's easy and useful!
 
10 idées recues sur le Bring Your Own Device
10 idées recues sur le Bring Your Own Device10 idées recues sur le Bring Your Own Device
10 idées recues sur le Bring Your Own Device
 
February JUGL on Software Quality Analysis
February JUGL on Software Quality AnalysisFebruary JUGL on Software Quality Analysis
February JUGL on Software Quality Analysis
 

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 §  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
  • 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é 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
  • 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 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
  • 13. 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
  • 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 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
  • 18. 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
  • 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 §  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
  • 23. 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
  • 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ê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
  • 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 §  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
  • 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 §  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
  • 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 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
  • 36. 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
  • 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 §  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
  • 39. 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
  • 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 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
  • 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é 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
  • 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