JUGL 2009 - Introduction Groovy/Grails

476 vues

Publié le

Introduction to Groovy/Grails held at the Java User Group Lausanne in 2009

Publié dans : Technologie
0 commentaire
0 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

Aucun téléchargement
Vues
Nombre de vues
476
Sur SlideShare
0
Issues des intégrations
0
Intégrations
3
Actions
Partages
0
Téléchargements
18
Commentaires
0
J’aime
0
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

JUGL 2009 - Introduction Groovy/Grails

  1. 1. Introduction Groovy / Grails JUG Lausanne Jeudi 10 décembre 2009
  2. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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

×