Más contenido relacionado
Similar a JUGL 2009 - Introduction Groovy/Grails (20)
JUGL 2009 - Introduction Groovy/Grails
- 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