Introduction Groovy / Grails - Cyril Picat - December 2009

45
Introduction Groovy / Grails JUG Lausanne Jeudi 10 décembre 2009

description

Introduction Groovy / Grails - Cyril Picat - December 2009

Transcript of Introduction Groovy / Grails - Cyril Picat - December 2009

Page 1: Introduction Groovy / Grails - Cyril Picat - December 2009

Introduction Groovy / Grails

JUG Lausanne Jeudi 10 décembre 2009

Page 2: Introduction Groovy / Grails - Cyril Picat - December 2009

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

Présentateur

  Cyril PICAT   Architecte chez OCTO Technology   [email protected]   http://www.octo.com

Page 3: Introduction Groovy / Grails - Cyril Picat - December 2009

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

Agenda

  L’éco-système Groovy (GR3)

  Présentation de Groovy

  Présentation de Grails

  Synthèse : Groovy / Grails pour ?

Page 4: Introduction Groovy / Grails - Cyril Picat - December 2009

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

L’ECO-SYSTÈME GROOVY (GR3)

4

Page 5: Introduction Groovy / Grails - Cyril Picat - December 2009

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

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

5

Page 6: Introduction Groovy / Grails - Cyril Picat - December 2009

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

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

6

Page 7: Introduction Groovy / Grails - Cyril Picat - December 2009

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

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

7

Page 8: Introduction Groovy / Grails - Cyril Picat - December 2009

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

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

8

Page 9: Introduction Groovy / Grails - Cyril Picat - December 2009

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

PRÉSENTATION DE GROOVY

9

Page 10: Introduction Groovy / Grails - Cyril Picat - December 2009

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

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

10

Page 11: Introduction Groovy / Grails - Cyril Picat - December 2009

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

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

11

Page 12: Introduction Groovy / Grails - Cyril Picat - December 2009

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

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

12

Page 13: Introduction Groovy / Grails - Cyril Picat - December 2009

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

DEMO: HELLOWORLD EN GROOVY

13

Page 14: Introduction Groovy / Grails - Cyril Picat - December 2009

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

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”

14

Page 15: Introduction Groovy / Grails - Cyril Picat - December 2009

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

Listes, maps, ranges, regex...

  Listes  

  Maps — dictionnaires

  Ranges

  Regex

15

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

def states = [CA: "California", TX: "Texas"] println states["CA"]; println states.CA States["NY"] = "New York"

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

(myString =~ /Hello/).each { … }

Page 16: Introduction Groovy / Grails - Cyril Picat - December 2009

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

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 :

16

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 */ }

Page 17: Introduction Groovy / Grails - Cyril Picat - December 2009

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

DEMO: REST EN GROOVY

17

Page 18: Introduction Groovy / Grails - Cyril Picat - December 2009

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

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…

18

Page 19: Introduction Groovy / Grails - Cyril Picat - December 2009

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

PRÉSENTATION DE GRAILS

19

Page 20: Introduction Groovy / Grails - Cyril Picat - December 2009

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

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

20

Page 21: Introduction Groovy / Grails - Cyril Picat - December 2009

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

Vision haut-niveau

21

Page 22: Introduction Groovy / Grails - Cyril Picat - December 2009

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

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

22

Page 23: Introduction Groovy / Grails - Cyril Picat - December 2009

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

DEMO: CRÉATION D’UNE APPLICATION GRAILS VIDE

23

Page 24: Introduction Groovy / Grails - Cyril Picat - December 2009

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

Arborescence et nommage

24

Page 25: Introduction Groovy / Grails - Cyril Picat - December 2009

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

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)

25

Page 26: Introduction Groovy / Grails - Cyril Picat - December 2009

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

DEMO: DOMAINE / CONTROLLEUR / VUE / SERVICE

26

Page 27: Introduction Groovy / Grails - Cyril Picat - December 2009

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

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 :-) 27

Page 28: Introduction Groovy / Grails - Cyril Picat - December 2009

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

Synthèse demo

  Explication des conventions   Domaine   Controlleur / Actions   Vue   Service

  CRUD en Grails

28

Page 29: Introduction Groovy / Grails - Cyril Picat - December 2009

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

DEMO: WEB LAYER

29

Page 30: Introduction Groovy / Grails - Cyril Picat - December 2009

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

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

30

Page 31: Introduction Groovy / Grails - Cyril Picat - December 2009

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

DEMO: DOMAINE - GORM

31

Page 32: Introduction Groovy / Grails - Cyril Picat - December 2009

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

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

32

Page 33: Introduction Groovy / Grails - Cyril Picat - December 2009

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

DEMO: CONTROLLER & BINDINGS

33

Page 34: Introduction Groovy / Grails - Cyril Picat - December 2009

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

Synthèse demo

  GORM   Controller

  Bindings : simple / multiple / association

  URL Mappings

34

Page 35: Introduction Groovy / Grails - Cyril Picat - December 2009

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

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 !

35

Page 36: Introduction Groovy / Grails - Cyril Picat - December 2009

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

DEMO: GOOGLE CHART PLUGIN

36

Page 37: Introduction Groovy / Grails - Cyril Picat - December 2009

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

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…

37

Page 38: Introduction Groovy / Grails - Cyril Picat - December 2009

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

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…

38

Page 39: Introduction Groovy / Grails - Cyril Picat - December 2009

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

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

39

Page 40: Introduction Groovy / Grails - Cyril Picat - December 2009

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

SYNTHÈSE : GROOVY / GRAILS POUR ?

40

Page 41: Introduction Groovy / Grails - Cyril Picat - December 2009

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

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

41

Page 42: Introduction Groovy / Grails - Cyril Picat - December 2009

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

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

42

Page 43: Introduction Groovy / Grails - Cyril Picat - December 2009

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

Sources

  « Introduction à Groovy », Guillaume Laforge, Paris JUG, septembre 2008

  « Groovy & Grails in Action! », Guillaume Laforge, Devoxx, 2008

43

Page 44: Introduction Groovy / Grails - Cyril Picat - December 2009

Copyright © 2009 – OCTO Technology – Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique 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/

Page 45: Introduction Groovy / Grails - Cyril Picat - December 2009

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

Q&A