paris jug - backbone.js en environnement java - laurent dutheil et frederic merizen

47
Copyright © 2008 ParisJug. Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

Upload: frederic-merizen

Post on 26-May-2015

534 views

Category:

Technology


2 download

TRANSCRIPT

Page 1: Paris JUG - Backbone.js en environnement Java - Laurent DUTHEIL et Frederic MERIZEN

Copyright © 2008 ParisJug. Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

Page 2: Paris JUG - Backbone.js en environnement Java - Laurent DUTHEIL et Frederic MERIZEN

Copyright © 2008 ParisJug. Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

Backbone.js en environnement Java

Laurent Dutheil Frederic Merizen

Consultants

OCTO Technology

Page 3: Paris JUG - Backbone.js en environnement Java - Laurent DUTHEIL et Frederic MERIZEN

www.parisjug.orgCopyright © 2008 ParisJug. Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

08/01/2013 Backbone.js en environnement Java 3

« Comment une équipe Java développe une application JavaScript et l’intègre dans son

environnement… »

Page 4: Paris JUG - Backbone.js en environnement Java - Laurent DUTHEIL et Frederic MERIZEN

www.parisjug.orgCopyright © 2008 ParisJug. Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

08/01/2013 Backbone.js en environnement Java 4

Intervenants

Laurent DUTHEIL

Consultant chez OCTO Technology depuis 2010

Diplômé de l'université de Lille I en Intelligence Artificielle et Génie Logiciel

Forte expérience des architectures JEE : audit d’architecture, étude de cadrage, supervision métier, tech-lead, Proof of Concept

Rompu aux méthodes agiles

Page 5: Paris JUG - Backbone.js en environnement Java - Laurent DUTHEIL et Frederic MERIZEN

www.parisjug.orgCopyright © 2008 ParisJug. Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

08/01/2013 Backbone.js en environnement Java 5

Intervenants

Frederic MERIZEN

Consultant chez OCTO Technology depuis 2011

Diplômé de Supélec

Technical leader, développeur et agilitateur sur des mission Java et Front

Co-anime la communauté des technical leaders chez OCTO

Membre de l’équipe d’organisation de la conférence Agile France

Page 6: Paris JUG - Backbone.js en environnement Java - Laurent DUTHEIL et Frederic MERIZEN

www.parisjug.orgCopyright © 2008 ParisJug. Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

08/01/2013 Backbone.js en environnement Java 6

Motivation

Même pour écrire un nouvelle application, on part très rarement d’une page blanche

Équipe en place

Environnements de développement

Applications existantes

Tirer parti des forces en place pour innover

Page 7: Paris JUG - Backbone.js en environnement Java - Laurent DUTHEIL et Frederic MERIZEN

Copyright © 2008 ParisJug. Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

Historique des application web

Toujours plus riche et réactif

Page 8: Paris JUG - Backbone.js en environnement Java - Laurent DUTHEIL et Frederic MERIZEN

www.parisjug.orgCopyright © 2008 ParisJug. Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

08/01/2013 Backbone.js en environnement Java 8

MVC côté serveur

Model View

Controler

<html>

Client

Serveur

Page 9: Paris JUG - Backbone.js en environnement Java - Laurent DUTHEIL et Frederic MERIZEN

www.parisjug.orgCopyright © 2008 ParisJug. Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

08/01/2013 Backbone.js en environnement Java 9

Ajax

Model View

Controler

<html>+js

Client

Serveur

asynchrone

Page 10: Paris JUG - Backbone.js en environnement Java - Laurent DUTHEIL et Frederic MERIZEN

www.parisjug.orgCopyright © 2008 ParisJug. Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

08/01/2013 Backbone.js en environnement Java 10

jQuery

Page 11: Paris JUG - Backbone.js en environnement Java - Laurent DUTHEIL et Frederic MERIZEN

www.parisjug.orgCopyright © 2008 ParisJug. Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

08/01/2013 Backbone.js en environnement Java 11

MVC côté client

Model

View Controler

Client

Serveur

REST

Page 12: Paris JUG - Backbone.js en environnement Java - Laurent DUTHEIL et Frederic MERIZEN

Copyright © 2008 ParisJug. Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

L’applicationhttps://github.com/fredZen/java-backbone-demo

(démo)

Page 13: Paris JUG - Backbone.js en environnement Java - Laurent DUTHEIL et Frederic MERIZEN

www.parisjug.orgCopyright © 2008 ParisJug. Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

08/01/2013 Backbone.js en environnement Java 13

Une stack efficace avec Java

Serveur d’application

Browser

ESB

Spring MVC

appli serveur

Require.js

appli client

JSON / REST / HTTP

Underscore.js

SOAP / HTTP

Backbone.js

widgets & mouf-mouf

Page 14: Paris JUG - Backbone.js en environnement Java - Laurent DUTHEIL et Frederic MERIZEN

Copyright © 2008 ParisJug. Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

Côté client

Page 15: Paris JUG - Backbone.js en environnement Java - Laurent DUTHEIL et Frederic MERIZEN

www.parisjug.orgCopyright © 2008 ParisJug. Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

08/01/2013 Backbone.js en environnement Java 15

Pourquoi Backbone.js

Facileà

Apprendre

Supporteles browsersen fin de vie

Testable

ServicesREST

&Autres

Gestiondes

ÉvénementsRouting

Backbone.js

Vues&

Templates

Éprouvé

Page 16: Paris JUG - Backbone.js en environnement Java - Laurent DUTHEIL et Frederic MERIZEN

www.parisjug.orgCopyright © 2008 ParisJug. Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

08/01/2013 Backbone.js en environnement Java 16

Exploiter le templating

Variabiliser le html avec un langage de templates

Un moteur est inclus dans Underscore

D’autres : Mustache, Handlebars, …

Page 17: Paris JUG - Backbone.js en environnement Java - Laurent DUTHEIL et Frederic MERIZEN

www.parisjug.orgCopyright © 2008 ParisJug. Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

08/01/2013 Backbone.js en environnement Java 17

Exploiter le templating

Tips : Associer une Vue à chaque template

var MyView = Backbone.View.extend({el: "#container",

...render: function() {

var content = //votre méthode de templatingthis.$el.html(content);

},...});

Page 18: Paris JUG - Backbone.js en environnement Java - Laurent DUTHEIL et Frederic MERIZEN

www.parisjug.orgCopyright © 2008 ParisJug. Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

08/01/2013 Backbone.js en environnement Java 18

Synchroniser vue et modèle

Utiliser les événements backbonevar MyView = Backbone.View.extend({...

setModel: function(model) {this.model = model;this.model.on("change", this.modelChanged);

},

events: {"change input, select, textarea": "viewChanged",

},

viewChanged: function(event) {//mise à jour du model...

},

modelChanged: function() {//mise à jour de la vue...

},...});

Page 19: Paris JUG - Backbone.js en environnement Java - Laurent DUTHEIL et Frederic MERIZEN

www.parisjug.orgCopyright © 2008 ParisJug. Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

08/01/2013 Backbone.js en environnement Java 19

Synchroniser vue et modèle

Système d’événement très flexible

Pas restreint à la vue : un modèle peut observer un modèle, etc…

Permet un couplage lâche

Tips : Penser à mettre en place un bus d’événements

Page 20: Paris JUG - Backbone.js en environnement Java - Laurent DUTHEIL et Frederic MERIZEN

www.parisjug.orgCopyright © 2008 ParisJug. Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

08/01/2013 Backbone.js en environnement Java 20

Communiquer avec le serveur

La synchro backbone en 1 ligne !

model.fetch => GET

model.save => POST

model{id}.save => PUT

model.destroy => DELETEvar myModel = backbone.Model.extend({

urlRoot: baseUrl + "/myResource",...});

var MyView = backbone.View.extend({...

submit: function() {this.model.save();

},...});

Page 21: Paris JUG - Backbone.js en environnement Java - Laurent DUTHEIL et Frederic MERIZEN

www.parisjug.orgCopyright © 2008 ParisJug. Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

08/01/2013 Backbone.js en environnement Java 21

Communiquer avec le serveur

Flexibilité de customiser si nécessairevar ProposalModel = backbone.Model.extend({...

parse: function(response) {return null;

},...});

var MyView = backbone.View.extend({...

submit: function() {this.model.save({}, {

success: this.saveSucceeded,error: this.saveError

});},

...saveSucceeded: function(model, response) { //traitement de la réponse

...},saveError: function(model) { //traitement de l’erreur

...},

});

Page 22: Paris JUG - Backbone.js en environnement Java - Laurent DUTHEIL et Frederic MERIZEN

www.parisjug.orgCopyright © 2008 ParisJug. Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

08/01/2013 Backbone.js en environnement Java 22

Organiser son application

Organiser ses fichiers dans des répertoires

Librairies JavaScriptVos modèles (organisés en domaine fonctionnel)

Vos vues (organisés en domaine fonctionnel)

Vos templates (organisés en domaine fonctionnel)

Structure équivalente pour les tests

Page 23: Paris JUG - Backbone.js en environnement Java - Laurent DUTHEIL et Frederic MERIZEN

www.parisjug.orgCopyright © 2008 ParisJug. Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

08/01/2013 Backbone.js en environnement Java 23

Organiser son application

Requirejs

Simule l’import Java

Permet l’injection de dépendancesdefine([ 'backbone', 'jquery', 'underscore'],function(Backbone , $ , _ ) {

var ErrorModel = Backbone.Model.extend({...});

return new ErrorModel();});

Page 24: Paris JUG - Backbone.js en environnement Java - Laurent DUTHEIL et Frederic MERIZEN

www.parisjug.orgCopyright © 2008 ParisJug. Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

08/01/2013 Backbone.js en environnement Java 24

Organiser son application

Centralisation des dépendances

require.paths = {backbone: 'lib/backbone/backbone.min',underscore: 'lib/lodash/lodash.min',jquery: 'lib/jquery/jquery.min',json2: 'lib/json2',...

};

require.shim = {'backbone': {

deps: ['underscore', 'jquery', 'json2'],exports: 'Backbone'

},...

};

Page 25: Paris JUG - Backbone.js en environnement Java - Laurent DUTHEIL et Frederic MERIZEN

www.parisjug.orgCopyright © 2008 ParisJug. Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

08/01/2013 Backbone.js en environnement Java 25

Retrouver ses repères java

define([ 'jquery', 'underscore', 'backbone', 'router ], function($ , _ , backbone , router ) {

var singleton = null, MyView = Backbone.View.extend({

...setModel: function(model) {

this.model = model;this.model.on("change", this.modelChanged);

},...

}, {showMe: function() {

router.navigate("myPage");singleton.setModel(new MyModel());singleton.render();

}});

singleton = new MyView();

return MyView;});

Classe

Méthode

Méthode statique

Page 26: Paris JUG - Backbone.js en environnement Java - Laurent DUTHEIL et Frederic MERIZEN

www.parisjug.orgCopyright © 2008 ParisJug. Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

08/01/2013 Backbone.js en environnement Java 26

Gérer les URLs

Le routeur ventile les URLs entrantes vers les vuesvar AppRouter = Backbone.Router.extend({

routes: {// Pages'myPage': 'myPage',...

},

init: function() {Backbone.history.start({

root : baseUrl,pushState: true

});},

...myPage: function() {

require([ 'view/myView'], function(MyView) {MyView.showMe();

});},

...return AppRouter;

});

Gestion transparente des hashtags vs pushstate

Page 27: Paris JUG - Backbone.js en environnement Java - Laurent DUTHEIL et Frederic MERIZEN

www.parisjug.orgCopyright © 2008 ParisJug. Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

08/01/2013 Backbone.js en environnement Java 27

Gérer les URLs

Les vues doivent mettent à jour l’URLMyView = Backbone.View.extend({

...}, {

showMe: function() {router.navigate("myPage");...

}});

Page 28: Paris JUG - Backbone.js en environnement Java - Laurent DUTHEIL et Frederic MERIZEN

Copyright © 2008 ParisJug. Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

Côté serveur

Page 29: Paris JUG - Backbone.js en environnement Java - Laurent DUTHEIL et Frederic MERIZEN

www.parisjug.orgCopyright © 2008 ParisJug. Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

08/01/2013 Backbone.js en environnement Java 29

Spring MVC sur le serveur

Spring MVC pour s’interfacer au SI

Couche d’adaptation avec le back (Web Services, Hibernate, …)

Exposer des services REST en JSON avec Jackson

Hybrider REST et RPC si le back est trop procédural

Gérer la sécurité

Page 30: Paris JUG - Backbone.js en environnement Java - Laurent DUTHEIL et Frederic MERIZEN

www.parisjug.orgCopyright © 2008 ParisJug. Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

08/01/2013 Backbone.js en environnement Java 30

Spring MVC sur le serveur

@Controllerpublic class MyController extends StandardExceptionHandling {

@RequestMapping(value = "/myResource", method = RequestMethod.POST)@ResponseBodypublic MyResource persiste(@RequestBody MyResource myResource) {

...}

@RequestMapping(value = "/proposal/{id}", method = RequestMethod.GET)@ResponseBodypublic MyResource getById(@PathVariable Long id) {

...}

...}

Page 31: Paris JUG - Backbone.js en environnement Java - Laurent DUTHEIL et Frederic MERIZEN

www.parisjug.orgCopyright © 2008 ParisJug. Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

08/01/2013 Backbone.js en environnement Java 31

Spring MVC sur le serveur

Tips : pour migrer en douceur

« MVC client » aux parties très dynamiques du site

« MVC serveur » pour les parties plus statiques facilite le SEO

Page 32: Paris JUG - Backbone.js en environnement Java - Laurent DUTHEIL et Frederic MERIZEN

www.parisjug.orgCopyright © 2008 ParisJug. Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

08/01/2013 Backbone.js en environnement Java 32

Une page conteneur

Une JSP<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %><c:set value="${pageContext.request.contextPath}/js" var="js" /><c:set value="${pageContext.request.contextPath}/resource" var="resource" /><c:set value="${pageContext.request.contextPath}/monAppli" var="monAppli" />...

<div id="container"/>...<script>

var require = {baseUrl: '${js}',config: {

'util/resource': {baseUrl: '${resource}'

},'router': {

baseUrl: '${monAppli}'}

}};<%@ include file="../../js/modules.js"%>

</script><script data-main="main" src="${js}/lib/require/require.min.js"></script>

Page 33: Paris JUG - Backbone.js en environnement Java - Laurent DUTHEIL et Frederic MERIZEN

www.parisjug.orgCopyright © 2008 ParisJug. Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

08/01/2013 Backbone.js en environnement Java 33

Une page conteneur

UrlRewriteFilter

Toutes les URL utilisateur aboutissent à la même JSP

Ajouter UrlRewriteFilter dans web.xml

Paramétrer urlrewrite.xml

<urlrewrite default-match-type="wildcard">...

<rule><from>/monAppli/**</from><to>/WEB-INF/jsp/monAppli.jsp</to>

</rule></urlrewrite>

Page 34: Paris JUG - Backbone.js en environnement Java - Laurent DUTHEIL et Frederic MERIZEN

Copyright © 2008 ParisJug. Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

JavaScript à l’ère

industrielle

Page 35: Paris JUG - Backbone.js en environnement Java - Laurent DUTHEIL et Frederic MERIZEN

www.parisjug.orgCopyright © 2008 ParisJug. Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

08/01/2013 Backbone.js en environnement Java 35

Tests unitaires avec Jasmine

Page 36: Paris JUG - Backbone.js en environnement Java - Laurent DUTHEIL et Frederic MERIZEN

www.parisjug.orgCopyright © 2008 ParisJug. Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

08/01/2013 Backbone.js en environnement Java 36

Tests dans l’usine de dev

jasmine-maven-plugin

http://searls.github.com/jasmine-maven-plugin/

Mode interactif : mvn jasmine:bdd + browser

Mode headless avec htmlunit

Jenkins

Générer un surefire report à l’aide du jasmine maven plugin

Page 37: Paris JUG - Backbone.js en environnement Java - Laurent DUTHEIL et Frederic MERIZEN

www.parisjug.orgCopyright © 2008 ParisJug. Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

08/01/2013 Backbone.js en environnement Java 37

Saga pour la couverture

Page 38: Paris JUG - Backbone.js en environnement Java - Laurent DUTHEIL et Frederic MERIZEN

www.parisjug.orgCopyright © 2008 ParisJug. Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

08/01/2013 Backbone.js en environnement Java 38

Saga pour la couverture

Page 39: Paris JUG - Backbone.js en environnement Java - Laurent DUTHEIL et Frederic MERIZEN

www.parisjug.orgCopyright © 2008 ParisJug. Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

saga-maven-plugin

http://timurstrekalov.github.com/saga/

S’interface facilement avec Jasmine (mais pas que)

Jenkins

Publier le rapport html dans le job

Sonar

Importer le rapport .dat

08/01/2013 Backbone.js en environnement Java 39

Couverture dans l’UDD

Page 40: Paris JUG - Backbone.js en environnement Java - Laurent DUTHEIL et Frederic MERIZEN

Copyright © 2008 ParisJug. Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

À vous de jouer !

Page 41: Paris JUG - Backbone.js en environnement Java - Laurent DUTHEIL et Frederic MERIZEN

www.parisjug.orgCopyright © 2008 ParisJug. Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

08/01/2013 Backbone.js en environnement Java 41

Take-away

Structurer votre code JavaScript grâce à Backbone.js

Intégrer des devs JavaScript dans un environnement Java

S’intégrer avec la culture de développement

Capitaliser sur l’UDD

Permettre aux développeurs de se former

S’intégrer avec le logiciel existant

Minimiser l’adhérence entre le legacy et les nouveaux développements

Page 42: Paris JUG - Backbone.js en environnement Java - Laurent DUTHEIL et Frederic MERIZEN

www.parisjug.orgCopyright © 2008 ParisJug. Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

08/01/2013 Backbone.js en environnement Java 42

Plus loin avec JavaScript

Coder ensemble !

Un pionnier

Binômage, dojo

Apprendre JavaScript

JavaScript : The Good Parts

Eloquent JavaScript

JavaScript Patterns

Page 43: Paris JUG - Backbone.js en environnement Java - Laurent DUTHEIL et Frederic MERIZEN

www.parisjug.orgCopyright © 2008 ParisJug. Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

08/01/2013 Backbone.js en environnement Java 43

Plus loin sur le MVC client

Tutoriaux

TodoMVC : http://addyosmani.github.com/todomvc/

Wine Cellar : http://www.adobe.com/devnet/html5/articles/backbone-cellar-pt1.html

Notre exemple :https://github.com/fredZen/java-backbone-demo

Les docs des librairies sont bien faites

Backbone.js, jQuery, jQuery-UI, Underscore.js, Require.js, Lo-Dash, Twitter Bootstrap, …

Page 44: Paris JUG - Backbone.js en environnement Java - Laurent DUTHEIL et Frederic MERIZEN

Copyright © 2008 ParisJug. Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

Questions / Réponses

Page 45: Paris JUG - Backbone.js en environnement Java - Laurent DUTHEIL et Frederic MERIZEN

www.parisjug.orgCopyright © 2008 ParisJug. Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

08/01/2013 Backbone.js en environnement Java 45

Sponsors

Page 46: Paris JUG - Backbone.js en environnement Java - Laurent DUTHEIL et Frederic MERIZEN

Copyright © 2008 ParisJug. Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

Merci de votre attention!

Merci de votre attention!

Page 47: Paris JUG - Backbone.js en environnement Java - Laurent DUTHEIL et Frederic MERIZEN

www.parisjug.orgCopyright © 2008 ParisJug. Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique

08/01/2013 Backbone.js en environnement Java 47

Licence

http://creativecommons.org/licenses/by-nc-sa/2.0/fr/