SlideShare une entreprise Scribd logo
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

PDF
JUGL 2009 - Introduction Groovy/Grails
PDF
Introduction à Google Web Toolkit (GWT) - Philippe Kernevez - February 2009
PDF
Maven2 - Philippe Kernevez - March 2009
PPT
GWT no-dto
PDF
Anniversaire Paris JUG - Deja 10 ans - retour vers le futur avec JMX
PPTX
presentation Compu training
PPT
Medios de comunicación
PPS
Menudo pelotazo
JUGL 2009 - Introduction Groovy/Grails
Introduction à Google Web Toolkit (GWT) - Philippe Kernevez - February 2009
Maven2 - Philippe Kernevez - March 2009
GWT no-dto
Anniversaire Paris JUG - Deja 10 ans - retour vers le futur avec JMX
presentation Compu training
Medios de comunicación
Menudo pelotazo

En vedette (20)

PDF
Proceso para la obtención de un programa ejecutable
PPTX
Villamarin oscar. producto 3
PPTX
Ciencia, tecnologia y educacion para no expertos
XLSX
Proyecto institucional media_tecnica_nomina_y_prestaciones_sociales
PPTX
PPTX
Homo videns
PPTX
Franche comté Jéssica
PPTX
Regalitos
PDF
OpenDS - Ludovic Poitou - December 2010
PDF
Formations tertiaires Brest
PDF
Presentation de D-Lices 131107
DOCX
Vr100 -133106_contabilidad-1
DOCX
Vr100 133106 contabilidad-1
PPT
Centres sociaux
PPTX
PPT
Integracion de las tic.unprg.
DOC
Teorías de aprendizaje tic
PDF
Problemática yerbatera (segunda parte)
PPT
Entrees sorties
PDF
Publicate baja california
Proceso para la obtención de un programa ejecutable
Villamarin oscar. producto 3
Ciencia, tecnologia y educacion para no expertos
Proyecto institucional media_tecnica_nomina_y_prestaciones_sociales
Homo videns
Franche comté Jéssica
Regalitos
OpenDS - Ludovic Poitou - December 2010
Formations tertiaires Brest
Presentation de D-Lices 131107
Vr100 -133106_contabilidad-1
Vr100 133106 contabilidad-1
Centres sociaux
Integracion de las tic.unprg.
Teorías de aprendizaje tic
Problemática yerbatera (segunda parte)
Entrees sorties
Publicate baja california
Publicité

Similaire à Introduction Groovy / Grails - Cyril Picat - December 2009 (20)

PDF
Introduction à Groovy - OpenSource eXchange 2008
PPT
Présentation Groovy
PPT
Présentation Groovy
PPTX
Grails Un Framework Web Agile
PDF
Grails from scratch to prod - MixIT 2011
PPTX
Grails from scratch to prod - MixIT 2010
PDF
ENIB 2013-2014 - CAI Web #3: Groovy
PDF
ENIB 2013-2014 - CAI Web #3: J’ai besoin d’une appli web rapidement
PDF
Enib cours c.a.i. web - séance #5 - j’ai besoin d’une appli web rapidement !
PPT
Innover sans contrainte, intégrer sans rupture
PDF
Enib cours c.a.i. web - séance #5 - groovy
PPT
Dynamic Languages
PDF
Présentation Gradle au LyonJUG par Grégory Boissinot - Zenika
PPT
Domain-Specific Languages avec Groovy
PDF
FinistJUG - J’ai besoin d’une appli web rapidement
PDF
TP GWT JDEV 2015
PPTX
Qualité Logiciel - Outils Open Source pour Java et Web
PPTX
Ez18n crowdsourcing
PPT
20091020 - Normandy Jug - Builders Battle
PPT
M1 presentation OSGi
Introduction à Groovy - OpenSource eXchange 2008
Présentation Groovy
Présentation Groovy
Grails Un Framework Web Agile
Grails from scratch to prod - MixIT 2011
Grails from scratch to prod - MixIT 2010
ENIB 2013-2014 - CAI Web #3: Groovy
ENIB 2013-2014 - CAI Web #3: J’ai besoin d’une appli web rapidement
Enib cours c.a.i. web - séance #5 - j’ai besoin d’une appli web rapidement !
Innover sans contrainte, intégrer sans rupture
Enib cours c.a.i. web - séance #5 - groovy
Dynamic Languages
Présentation Gradle au LyonJUG par Grégory Boissinot - Zenika
Domain-Specific Languages avec Groovy
FinistJUG - J’ai besoin d’une appli web rapidement
TP GWT JDEV 2015
Qualité Logiciel - Outils Open Source pour Java et Web
Ez18n crowdsourcing
20091020 - Normandy Jug - Builders Battle
M1 presentation OSGi
Publicité

Plus de JUG Lausanne (20)

PDF
Introduction aux algorithmes génétiques
PDF
Développer un moteur d'exécution symbolique en partant de rien
PDF
Reverse engineering Java et contournement du mécanisme de paiement inapp Android
PDF
Exemple d'IOT et ML avec Android, Cassandra et Spark
PDF
Play! chez Zaptravel - Nicolas Martignole - December 2012
PDF
Playframework Realtime Web - Guillaume Bort & Sadek Drobi - December 2012
PDF
CloudBees - Sacha Labourey - May 2011
PDF
Apache Camel - Stéphane Kay - April 2011
PDF
Session dédiée à l'analyse de la qualité du code Java - Cyril Picat - Februar...
PDF
Spring Batch - Julien Jakubowski - November 2010
PDF
Infinispan - Galder Zamarreno - October 2010
PDF
No Sql - Olivier Mallassi - September 2010
PDF
Java EE 6 & GlassFish V3 - Alexis Moussine-Pouchkine - May 2010
PDF
Introduction à Scala - Michel Schinz - January 2010
PDF
Initiation aux tests fonctionnels - Philippe Kernevez - October 2009
PDF
Sonar - Freddy Mallet - April 2009
PDF
XML & Java - Raphaël Tagliani - March 2008
PDF
Visual Mobile Applications with Netbeans 6.0 - Cédric Tabin - February 2008
PDF
Scripting with Java FX - Cédric Tabin - December 2007
PDF
GlassFish Update and Directions - Karim Mazouni - November 2007
Introduction aux algorithmes génétiques
Développer un moteur d'exécution symbolique en partant de rien
Reverse engineering Java et contournement du mécanisme de paiement inapp Android
Exemple d'IOT et ML avec Android, Cassandra et Spark
Play! chez Zaptravel - Nicolas Martignole - December 2012
Playframework Realtime Web - Guillaume Bort & Sadek Drobi - December 2012
CloudBees - Sacha Labourey - May 2011
Apache Camel - Stéphane Kay - April 2011
Session dédiée à l'analyse de la qualité du code Java - Cyril Picat - Februar...
Spring Batch - Julien Jakubowski - November 2010
Infinispan - Galder Zamarreno - October 2010
No Sql - Olivier Mallassi - September 2010
Java EE 6 & GlassFish V3 - Alexis Moussine-Pouchkine - May 2010
Introduction à Scala - Michel Schinz - January 2010
Initiation aux tests fonctionnels - Philippe Kernevez - October 2009
Sonar - Freddy Mallet - April 2009
XML & Java - Raphaël Tagliani - March 2008
Visual Mobile Applications with Netbeans 6.0 - Cédric Tabin - February 2008
Scripting with Java FX - Cédric Tabin - December 2007
GlassFish Update and Directions - Karim Mazouni - November 2007

Dernier (7)

PPTX
Presentation_Securite_Reseaux_Bac+2.pptx
PDF
FORMATION COMPLETE EN EXCEL DONE BY MR. NYONGA BRICE.pdf
PDF
Tendances tech 2025 - SFEIR & WENVISION.pdf
PDF
presentation_with_intro_compressee IEEE EPS France
PPTX
Souveraineté numérique - Définition et enjeux pour les entreprises et les dév...
PDF
FORMATION EN Programmation En Langage C.pdf
PDF
Modems expliqués- votre passerelle vers Internet.pdf
Presentation_Securite_Reseaux_Bac+2.pptx
FORMATION COMPLETE EN EXCEL DONE BY MR. NYONGA BRICE.pdf
Tendances tech 2025 - SFEIR & WENVISION.pdf
presentation_with_intro_compressee IEEE EPS France
Souveraineté numérique - Définition et enjeux pour les entreprises et les dév...
FORMATION EN Programmation En Langage C.pdf
Modems expliqués- votre passerelle vers Internet.pdf

Introduction Groovy / Grails - Cyril Picat - December 2009

  • 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