SlideShare une entreprise Scribd logo
1  sur  45
Télécharger pour lire hors ligne
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

En vedette

Ciencia, tecnologia y educacion para no expertos
Ciencia, tecnologia y educacion para no expertosCiencia, tecnologia y educacion para no expertos
Ciencia, tecnologia y educacion para no expertos
Camilo Cardenas
 
Proyecto institucional media_tecnica_nomina_y_prestaciones_sociales
Proyecto institucional media_tecnica_nomina_y_prestaciones_socialesProyecto institucional media_tecnica_nomina_y_prestaciones_sociales
Proyecto institucional media_tecnica_nomina_y_prestaciones_sociales
nuryyy
 
Vr100 -133106_contabilidad-1
Vr100  -133106_contabilidad-1Vr100  -133106_contabilidad-1
Vr100 -133106_contabilidad-1
nuryyy
 
Vr100 133106 contabilidad-1
Vr100   133106 contabilidad-1Vr100   133106 contabilidad-1
Vr100 133106 contabilidad-1
karitosanta
 
Integracion de las tic.unprg.
Integracion de las tic.unprg.Integracion de las tic.unprg.
Integracion de las tic.unprg.
nilzuhu
 
Teorías de aprendizaje tic
Teorías de aprendizaje ticTeorías de aprendizaje tic
Teorías de aprendizaje tic
nilzuhu
 
Problemática yerbatera (segunda parte)
Problemática yerbatera (segunda parte)Problemática yerbatera (segunda parte)
Problemática yerbatera (segunda parte)
susanabartz
 
Entrees sorties
Entrees sortiesEntrees sorties
Entrees sorties
yazidds2
 
Publicate baja california
Publicate baja californiaPublicate baja california
Publicate baja california
garden92
 

En vedette (20)

Proceso para la obtención de un programa ejecutable
Proceso para la obtención de un programa ejecutableProceso para la obtención de un programa ejecutable
Proceso para la obtención de un programa ejecutable
 
Villamarin oscar. producto 3
Villamarin oscar. producto 3Villamarin oscar. producto 3
Villamarin oscar. producto 3
 
Ciencia, tecnologia y educacion para no expertos
Ciencia, tecnologia y educacion para no expertosCiencia, tecnologia y educacion para no expertos
Ciencia, tecnologia y educacion para no expertos
 
Proyecto institucional media_tecnica_nomina_y_prestaciones_sociales
Proyecto institucional media_tecnica_nomina_y_prestaciones_socialesProyecto institucional media_tecnica_nomina_y_prestaciones_sociales
Proyecto institucional media_tecnica_nomina_y_prestaciones_sociales
 
Cipjes pres
Cipjes presCipjes pres
Cipjes pres
 
Homo videns
Homo vidensHomo videns
Homo videns
 
Franche comté Jéssica
Franche comté Jéssica Franche comté Jéssica
Franche comté Jéssica
 
Regalitos
RegalitosRegalitos
Regalitos
 
OpenDS - Ludovic Poitou - December 2010
OpenDS - Ludovic Poitou - December 2010OpenDS - Ludovic Poitou - December 2010
OpenDS - Ludovic Poitou - December 2010
 
Formations tertiaires Brest
Formations tertiaires BrestFormations tertiaires Brest
Formations tertiaires Brest
 
Presentation de D-Lices 131107
Presentation de D-Lices 131107Presentation de D-Lices 131107
Presentation de D-Lices 131107
 
Vr100 -133106_contabilidad-1
Vr100  -133106_contabilidad-1Vr100  -133106_contabilidad-1
Vr100 -133106_contabilidad-1
 
Vr100 133106 contabilidad-1
Vr100   133106 contabilidad-1Vr100   133106 contabilidad-1
Vr100 133106 contabilidad-1
 
Centres sociaux
Centres sociauxCentres sociaux
Centres sociaux
 
Un/Une
Un/UneUn/Une
Un/Une
 
Integracion de las tic.unprg.
Integracion de las tic.unprg.Integracion de las tic.unprg.
Integracion de las tic.unprg.
 
Teorías de aprendizaje tic
Teorías de aprendizaje ticTeorías de aprendizaje tic
Teorías de aprendizaje tic
 
Problemática yerbatera (segunda parte)
Problemática yerbatera (segunda parte)Problemática yerbatera (segunda parte)
Problemática yerbatera (segunda parte)
 
Entrees sorties
Entrees sortiesEntrees sorties
Entrees sorties
 
Publicate baja california
Publicate baja californiaPublicate baja california
Publicate baja california
 

Similaire à Introduction Groovy / Grails - Cyril Picat - December 2009

Innover sans contrainte, intégrer sans rupture
Innover sans contrainte, intégrer sans ruptureInnover sans contrainte, intégrer sans rupture
Innover sans contrainte, intégrer sans rupture
Guillaume Laforge
 
Gtug2 Mobile app with web technlogy
Gtug2 Mobile app with web technlogyGtug2 Mobile app with web technlogy
Gtug2 Mobile app with web technlogy
Sacha Leprêtre
 
Paris JUG - Backbone.js en environnement Java - Laurent DUTHEIL et Frederic M...
Paris JUG - Backbone.js en environnement Java - Laurent DUTHEIL et Frederic M...Paris JUG - Backbone.js en environnement Java - Laurent DUTHEIL et Frederic M...
Paris JUG - Backbone.js en environnement Java - Laurent DUTHEIL et Frederic M...
Frederic Merizen
 

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

Yocto une solution robuste pour construire des applications à fort contenu ap...
Yocto une solution robuste pour construire des applications à fort contenu ap...Yocto une solution robuste pour construire des applications à fort contenu ap...
Yocto une solution robuste pour construire des applications à fort contenu ap...
 
Formation Play! framework
Formation Play! frameworkFormation Play! framework
Formation Play! framework
 
Innover sans contrainte, intégrer sans rupture
Innover sans contrainte, intégrer sans ruptureInnover sans contrainte, intégrer sans rupture
Innover sans contrainte, intégrer sans rupture
 
La Duck Conf - Continuous Security : Secure a DevOps World!
La Duck Conf - Continuous Security : Secure a DevOps World!La Duck Conf - Continuous Security : Secure a DevOps World!
La Duck Conf - Continuous Security : Secure a DevOps World!
 
Rebuild 2018 - Bonnes pratiques de développement Mixed Reality
Rebuild 2018 - Bonnes pratiques de développement Mixed RealityRebuild 2018 - Bonnes pratiques de développement Mixed Reality
Rebuild 2018 - Bonnes pratiques de développement Mixed Reality
 
Comptoir - Utiliser une solution d'edge Open Source pour améliorer l'inspecti...
Comptoir - Utiliser une solution d'edge Open Source pour améliorer l'inspecti...Comptoir - Utiliser une solution d'edge Open Source pour améliorer l'inspecti...
Comptoir - Utiliser une solution d'edge Open Source pour améliorer l'inspecti...
 
Jug Lausanne Android Janvier2013
Jug Lausanne Android Janvier2013Jug Lausanne Android Janvier2013
Jug Lausanne Android Janvier2013
 
Strategie de Virtualisation Open Source
Strategie de Virtualisation Open SourceStrategie de Virtualisation Open Source
Strategie de Virtualisation Open Source
 
Introduction à web assembly
Introduction à web assemblyIntroduction à web assembly
Introduction à web assembly
 
OCTO Talks - Les IA s'invitent au chevet des développeurs
OCTO Talks - Les IA s'invitent au chevet des développeursOCTO Talks - Les IA s'invitent au chevet des développeurs
OCTO Talks - Les IA s'invitent au chevet des développeurs
 
Le futur de gwt
Le futur de gwtLe futur de gwt
Le futur de gwt
 
Retour d'expérience du métier d'architecte logiciel
Retour d'expérience du métier d'architecte logicielRetour d'expérience du métier d'architecte logiciel
Retour d'expérience du métier d'architecte logiciel
 
Gtug2 Mobile app with web technlogy
Gtug2 Mobile app with web technlogyGtug2 Mobile app with web technlogy
Gtug2 Mobile app with web technlogy
 
Comment travailler avec les logiciels Open Source
Comment travailler avec les logiciels Open SourceComment travailler avec les logiciels Open Source
Comment travailler avec les logiciels Open Source
 
Concevoir un système Linux embarqué avec Yocto Project
Concevoir un système Linux embarqué avec Yocto ProjectConcevoir un système Linux embarqué avec Yocto Project
Concevoir un système Linux embarqué avec Yocto Project
 
20081023 - Paris Vi Master STL TA - Initiation Maven
20081023 - Paris Vi Master STL TA - Initiation Maven20081023 - Paris Vi Master STL TA - Initiation Maven
20081023 - Paris Vi Master STL TA - Initiation Maven
 
Cours cordova & REST
Cours cordova & RESTCours cordova & REST
Cours cordova & REST
 
Paris JUG - Backbone.js en environnement Java - Laurent DUTHEIL et Frederic M...
Paris JUG - Backbone.js en environnement Java - Laurent DUTHEIL et Frederic M...Paris JUG - Backbone.js en environnement Java - Laurent DUTHEIL et Frederic M...
Paris JUG - Backbone.js en environnement Java - Laurent DUTHEIL et Frederic M...
 
Initiation aux tests fonctionnels - Philippe Kernevez - October 2009
Initiation aux tests fonctionnels - Philippe Kernevez - October 2009Initiation aux tests fonctionnels - Philippe Kernevez - October 2009
Initiation aux tests fonctionnels - Philippe Kernevez - October 2009
 
LA DUCK CONF 2023 - La vie d'Ops au coeur d'un SI en évolution
LA DUCK CONF 2023 - La vie d'Ops au coeur d'un SI en évolutionLA DUCK CONF 2023 - La vie d'Ops au coeur d'un SI en évolution
LA DUCK CONF 2023 - La vie d'Ops au coeur d'un SI en évolution
 

Plus de JUG Lausanne

Reverse engineering Java et contournement du mécanisme de paiement inapp Android
Reverse engineering Java et contournement du mécanisme de paiement inapp AndroidReverse engineering Java et contournement du mécanisme de paiement inapp Android
Reverse engineering Java et contournement du mécanisme de paiement inapp Android
JUG Lausanne
 

Plus de JUG Lausanne (20)

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

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