Contenu connexe
Similaire à Introduction Groovy / Grails - Cyril Picat - December 2009 (20)
Plus de JUG Lausanne (20)
Introduction Groovy / Grails - Cyril Picat - December 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