SlideShare une entreprise Scribd logo
1  sur  47
Copyright © 2008 ParisJug. Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique
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
www.parisjug.org
Copyright © 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… »
www.parisjug.org
Copyright © 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
www.parisjug.org
Copyright © 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
www.parisjug.org
Copyright © 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
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
www.parisjug.org
Copyright © 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
www.parisjug.org
Copyright © 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
www.parisjug.org
Copyright © 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
www.parisjug.org
Copyright © 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
Copyright © 2008 ParisJug. Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique
L’application
https://github.com/fredZen/java-backbone-demo
(démo)
www.parisjug.org
Copyright © 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
Copyright © 2008 ParisJug. Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique
Côté client
www.parisjug.org
Copyright © 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
Supporte
les browsers
en fin de vie
Testable
Services
REST
&
Autres
Gestion
des
Événements
Routing
Backbone.js
Vues
&
Templates
Éprouvé
www.parisjug.org
Copyright © 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, …
www.parisjug.org
Copyright © 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 templating
this.$el.html(content);
},
...
});
www.parisjug.org
Copyright © 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 backbone
var 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
...
},
...
});
www.parisjug.org
Copyright © 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
www.parisjug.org
Copyright © 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 => DELETE
var myModel = backbone.Model.extend({
urlRoot: baseUrl + "/myResource",
...
});
var MyView = backbone.View.extend({
...
submit: function() {
this.model.save();
},
...
});
www.parisjug.org
Copyright © 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écessaire
var 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
...
},
});
www.parisjug.org
Copyright © 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 JavaScript
Vos 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
www.parisjug.org
Copyright © 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épendances
define([ 'backbone', 'jquery', 'underscore'],
function(Backbone , $ , _ ) {
var ErrorModel = Backbone.Model.extend({
...
});
return new ErrorModel();
});
www.parisjug.org
Copyright © 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'
},
...
};
www.parisjug.org
Copyright © 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
www.parisjug.org
Copyright © 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
vues
var 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
www.parisjug.org
Copyright © 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’URL
MyView = Backbone.View.extend({
...
}, {
showMe: function() {
router.navigate("myPage");
...
}
});
Copyright © 2008 ParisJug. Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique
Côté serveur
www.parisjug.org
Copyright © 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é
www.parisjug.org
Copyright © 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
@Controller
public class MyController extends StandardExceptionHandling {
@RequestMapping(value = "/myResource", method = RequestMethod.POST)
@ResponseBody
public MyResource persiste(@RequestBody MyResource myResource) {
...
}
@RequestMapping(value = "/proposal/{id}", method = RequestMethod.GET)
@ResponseBody
public MyResource getById(@PathVariable Long id) {
...
}
...
}
www.parisjug.org
Copyright © 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
www.parisjug.org
Copyright © 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>
www.parisjug.org
Copyright © 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>
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
www.parisjug.org
Copyright © 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
www.parisjug.org
Copyright © 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
www.parisjug.org
Copyright © 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
www.parisjug.org
Copyright © 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
www.parisjug.org
Copyright © 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
Copyright © 2008 ParisJug. Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique
À vous de jouer !
www.parisjug.org
Copyright © 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
www.parisjug.org
Copyright © 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
www.parisjug.org
Copyright © 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/backbon
e-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, …
Copyright © 2008 ParisJug. Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique
Questions /
Réponses
www.parisjug.org
Copyright © 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
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!
www.parisjug.org
Copyright © 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/

Contenu connexe

En vedette

Business intelligence software tools
Business intelligence software toolsBusiness intelligence software tools
Business intelligence software toolsSkyward Techno, Inc.
 
Sail play investor_deck_en
Sail play investor_deck_enSail play investor_deck_en
Sail play investor_deck_enleonidshangin
 
Salespatron for B2B: Increasing sales productivity by knowing client engagement
Salespatron for B2B: Increasing sales productivity by knowing client engagementSalespatron for B2B: Increasing sales productivity by knowing client engagement
Salespatron for B2B: Increasing sales productivity by knowing client engagementAniruddh Jain
 
VSM Pharma Services - Case Study
VSM Pharma Services - Case StudyVSM Pharma Services - Case Study
VSM Pharma Services - Case StudyVSM Software
 
VSM Software Company Profile
VSM Software Company ProfileVSM Software Company Profile
VSM Software Company ProfileVSM Software
 
[Instituto Interage - Curso de Psicofarmacologia] Aula 4
[Instituto Interage - Curso de Psicofarmacologia] Aula 4[Instituto Interage - Curso de Psicofarmacologia] Aula 4
[Instituto Interage - Curso de Psicofarmacologia] Aula 4Marcelo Zanotti da Silva
 
Sell or fade away - how excuses kill businesses
Sell or fade away - how excuses kill businesses Sell or fade away - how excuses kill businesses
Sell or fade away - how excuses kill businesses InTouch
 

En vedette (12)

Business intelligence software tools
Business intelligence software toolsBusiness intelligence software tools
Business intelligence software tools
 
Exact abacus
Exact abacusExact abacus
Exact abacus
 
QualiTest
QualiTestQualiTest
QualiTest
 
Gormiti
GormitiGormiti
Gormiti
 
Bliss
BlissBliss
Bliss
 
Sail play investor_deck_en
Sail play investor_deck_enSail play investor_deck_en
Sail play investor_deck_en
 
Salespatron for B2B: Increasing sales productivity by knowing client engagement
Salespatron for B2B: Increasing sales productivity by knowing client engagementSalespatron for B2B: Increasing sales productivity by knowing client engagement
Salespatron for B2B: Increasing sales productivity by knowing client engagement
 
Backbonejs presentation
Backbonejs presentationBackbonejs presentation
Backbonejs presentation
 
VSM Pharma Services - Case Study
VSM Pharma Services - Case StudyVSM Pharma Services - Case Study
VSM Pharma Services - Case Study
 
VSM Software Company Profile
VSM Software Company ProfileVSM Software Company Profile
VSM Software Company Profile
 
[Instituto Interage - Curso de Psicofarmacologia] Aula 4
[Instituto Interage - Curso de Psicofarmacologia] Aula 4[Instituto Interage - Curso de Psicofarmacologia] Aula 4
[Instituto Interage - Curso de Psicofarmacologia] Aula 4
 
Sell or fade away - how excuses kill businesses
Sell or fade away - how excuses kill businesses Sell or fade away - how excuses kill businesses
Sell or fade away - how excuses kill businesses
 

Similaire à Paris JUG - Backbone.js en environnement Java - Laurent DUTHEIL et Frederic MERIZEN

20080513 - Paris Jug - Maven à La Demande
20080513 - Paris Jug - Maven à La Demande20080513 - Paris Jug - Maven à La Demande
20080513 - Paris Jug - Maven à La DemandeArnaud Héritier
 
Jee016 formation-jee-spring-les-bases
Jee016 formation-jee-spring-les-basesJee016 formation-jee-spring-les-bases
Jee016 formation-jee-spring-les-basesCERTyou Formation
 
Wpl53 g formation-developper-des-applications-pour-ibm-websphere-portal-8-0-a...
Wpl53 g formation-developper-des-applications-pour-ibm-websphere-portal-8-0-a...Wpl53 g formation-developper-des-applications-pour-ibm-websphere-portal-8-0-a...
Wpl53 g formation-developper-des-applications-pour-ibm-websphere-portal-8-0-a...CERTyou Formation
 
Jee007 formation-jee-jboss-seam
Jee007 formation-jee-jboss-seamJee007 formation-jee-jboss-seam
Jee007 formation-jee-jboss-seamCERTyou Formation
 
Introduction Groovy / Grails - Cyril Picat - December 2009
Introduction Groovy / Grails - Cyril Picat - December 2009Introduction Groovy / Grails - Cyril Picat - December 2009
Introduction Groovy / Grails - Cyril Picat - December 2009JUG Lausanne
 
Cyjspweb formation-web-jsp-servlets-developper-des-applications-web-mvc2-avec...
Cyjspweb formation-web-jsp-servlets-developper-des-applications-web-mvc2-avec...Cyjspweb formation-web-jsp-servlets-developper-des-applications-web-mvc2-avec...
Cyjspweb formation-web-jsp-servlets-developper-des-applications-web-mvc2-avec...CERTyou Formation
 
Softshake 2013 - Du JavaScript propre ? Challenge Accepted!
Softshake 2013 - Du JavaScript propre ? Challenge Accepted!Softshake 2013 - Du JavaScript propre ? Challenge Accepted!
Softshake 2013 - Du JavaScript propre ? Challenge Accepted!Romain Linsolas
 
Jee012 formation-jee-servlets-et-jsp-perfectionnement
Jee012 formation-jee-servlets-et-jsp-perfectionnementJee012 formation-jee-servlets-et-jsp-perfectionnement
Jee012 formation-jee-servlets-et-jsp-perfectionnementCERTyou Formation
 
Introduction à GWT - GTI780 & MTI780 - ETS - A08
Introduction à GWT - GTI780 & MTI780 - ETS - A08Introduction à GWT - GTI780 & MTI780 - ETS - A08
Introduction à GWT - GTI780 & MTI780 - ETS - A08Claude Coulombe
 
Java dans Windows Azure: l'exemple de Jonas
Java dans Windows Azure: l'exemple de JonasJava dans Windows Azure: l'exemple de Jonas
Java dans Windows Azure: l'exemple de JonasMicrosoft
 
Wilfried woivre web api & windows azure web sites
Wilfried woivre   web api & windows azure web sitesWilfried woivre   web api & windows azure web sites
Wilfried woivre web api & windows azure web sitesAymeric Weinbach
 
Ou sont mes beans, contrats et workflows ? WOA et REST: Un changement de ment...
Ou sont mes beans, contrats et workflows ? WOA et REST: Un changement de ment...Ou sont mes beans, contrats et workflows ? WOA et REST: Un changement de ment...
Ou sont mes beans, contrats et workflows ? WOA et REST: Un changement de ment...Jean-Laurent de Morlhon
 
Jee014 formation-jee-servlets-et-jsp-les-bases-et-perfectionnement
Jee014 formation-jee-servlets-et-jsp-les-bases-et-perfectionnementJee014 formation-jee-servlets-et-jsp-les-bases-et-perfectionnement
Jee014 formation-jee-servlets-et-jsp-les-bases-et-perfectionnementCERTyou Formation
 
GWT Approfondissement - GTI780 & MTI780 - ETS - A08
GWT Approfondissement - GTI780 & MTI780 - ETS - A08GWT Approfondissement - GTI780 & MTI780 - ETS - A08
GWT Approfondissement - GTI780 & MTI780 - ETS - A08Claude Coulombe
 
Session Spring et TDD du ParisJUG
Session Spring et TDD du ParisJUGSession Spring et TDD du ParisJUG
Session Spring et TDD du ParisJUGChristian Blavier
 
Introduction aux RIA (Rich Internet Applications)
Introduction aux RIA (Rich Internet Applications)Introduction aux RIA (Rich Internet Applications)
Introduction aux RIA (Rich Internet Applications)Tugdual Grall
 

Similaire à Paris JUG - Backbone.js en environnement Java - Laurent DUTHEIL et Frederic MERIZEN (20)

20080513 - Paris Jug - Maven à La Demande
20080513 - Paris Jug - Maven à La Demande20080513 - Paris Jug - Maven à La Demande
20080513 - Paris Jug - Maven à La Demande
 
Jee016 formation-jee-spring-les-bases
Jee016 formation-jee-spring-les-basesJee016 formation-jee-spring-les-bases
Jee016 formation-jee-spring-les-bases
 
Wpl53 g formation-developper-des-applications-pour-ibm-websphere-portal-8-0-a...
Wpl53 g formation-developper-des-applications-pour-ibm-websphere-portal-8-0-a...Wpl53 g formation-developper-des-applications-pour-ibm-websphere-portal-8-0-a...
Wpl53 g formation-developper-des-applications-pour-ibm-websphere-portal-8-0-a...
 
Jee007 formation-jee-jboss-seam
Jee007 formation-jee-jboss-seamJee007 formation-jee-jboss-seam
Jee007 formation-jee-jboss-seam
 
CV REBAI Hamida
CV REBAI HamidaCV REBAI Hamida
CV REBAI Hamida
 
Gwtmo formation-gwt-mobile
Gwtmo formation-gwt-mobileGwtmo formation-gwt-mobile
Gwtmo formation-gwt-mobile
 
Introduction Groovy / Grails - Cyril Picat - December 2009
Introduction Groovy / Grails - Cyril Picat - December 2009Introduction Groovy / Grails - Cyril Picat - December 2009
Introduction Groovy / Grails - Cyril Picat - December 2009
 
Cyjspweb formation-web-jsp-servlets-developper-des-applications-web-mvc2-avec...
Cyjspweb formation-web-jsp-servlets-developper-des-applications-web-mvc2-avec...Cyjspweb formation-web-jsp-servlets-developper-des-applications-web-mvc2-avec...
Cyjspweb formation-web-jsp-servlets-developper-des-applications-web-mvc2-avec...
 
gradle_nantesjug
gradle_nantesjuggradle_nantesjug
gradle_nantesjug
 
Softshake 2013 - Du JavaScript propre ? Challenge Accepted!
Softshake 2013 - Du JavaScript propre ? Challenge Accepted!Softshake 2013 - Du JavaScript propre ? Challenge Accepted!
Softshake 2013 - Du JavaScript propre ? Challenge Accepted!
 
Jee012 formation-jee-servlets-et-jsp-perfectionnement
Jee012 formation-jee-servlets-et-jsp-perfectionnementJee012 formation-jee-servlets-et-jsp-perfectionnement
Jee012 formation-jee-servlets-et-jsp-perfectionnement
 
Introduction à GWT - GTI780 & MTI780 - ETS - A08
Introduction à GWT - GTI780 & MTI780 - ETS - A08Introduction à GWT - GTI780 & MTI780 - ETS - A08
Introduction à GWT - GTI780 & MTI780 - ETS - A08
 
CV_Bilel CHAOUADI
CV_Bilel CHAOUADICV_Bilel CHAOUADI
CV_Bilel CHAOUADI
 
Java dans Windows Azure: l'exemple de Jonas
Java dans Windows Azure: l'exemple de JonasJava dans Windows Azure: l'exemple de Jonas
Java dans Windows Azure: l'exemple de Jonas
 
Wilfried woivre web api & windows azure web sites
Wilfried woivre   web api & windows azure web sitesWilfried woivre   web api & windows azure web sites
Wilfried woivre web api & windows azure web sites
 
Ou sont mes beans, contrats et workflows ? WOA et REST: Un changement de ment...
Ou sont mes beans, contrats et workflows ? WOA et REST: Un changement de ment...Ou sont mes beans, contrats et workflows ? WOA et REST: Un changement de ment...
Ou sont mes beans, contrats et workflows ? WOA et REST: Un changement de ment...
 
Jee014 formation-jee-servlets-et-jsp-les-bases-et-perfectionnement
Jee014 formation-jee-servlets-et-jsp-les-bases-et-perfectionnementJee014 formation-jee-servlets-et-jsp-les-bases-et-perfectionnement
Jee014 formation-jee-servlets-et-jsp-les-bases-et-perfectionnement
 
GWT Approfondissement - GTI780 & MTI780 - ETS - A08
GWT Approfondissement - GTI780 & MTI780 - ETS - A08GWT Approfondissement - GTI780 & MTI780 - ETS - A08
GWT Approfondissement - GTI780 & MTI780 - ETS - A08
 
Session Spring et TDD du ParisJUG
Session Spring et TDD du ParisJUGSession Spring et TDD du ParisJUG
Session Spring et TDD du ParisJUG
 
Introduction aux RIA (Rich Internet Applications)
Introduction aux RIA (Rich Internet Applications)Introduction aux RIA (Rich Internet Applications)
Introduction aux RIA (Rich Internet Applications)
 

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

  • 1. Copyright © 2008 ParisJug. Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique
  • 2. 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
  • 3. www.parisjug.org Copyright © 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… »
  • 4. www.parisjug.org Copyright © 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
  • 5. www.parisjug.org Copyright © 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
  • 6. www.parisjug.org Copyright © 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
  • 7. 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
  • 8. www.parisjug.org Copyright © 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
  • 9. www.parisjug.org Copyright © 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
  • 10. www.parisjug.org Copyright © 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
  • 11. www.parisjug.org Copyright © 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
  • 12. Copyright © 2008 ParisJug. Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique L’application https://github.com/fredZen/java-backbone-demo (démo)
  • 13. www.parisjug.org Copyright © 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
  • 14. Copyright © 2008 ParisJug. Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique Côté client
  • 15. www.parisjug.org Copyright © 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 Supporte les browsers en fin de vie Testable Services REST & Autres Gestion des Événements Routing Backbone.js Vues & Templates Éprouvé
  • 16. www.parisjug.org Copyright © 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, …
  • 17. www.parisjug.org Copyright © 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 templating this.$el.html(content); }, ... });
  • 18. www.parisjug.org Copyright © 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 backbone var 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 ... }, ... });
  • 19. www.parisjug.org Copyright © 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
  • 20. www.parisjug.org Copyright © 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 => DELETE var myModel = backbone.Model.extend({ urlRoot: baseUrl + "/myResource", ... }); var MyView = backbone.View.extend({ ... submit: function() { this.model.save(); }, ... });
  • 21. www.parisjug.org Copyright © 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écessaire var 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 ... }, });
  • 22. www.parisjug.org Copyright © 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 JavaScript Vos 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
  • 23. www.parisjug.org Copyright © 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épendances define([ 'backbone', 'jquery', 'underscore'], function(Backbone , $ , _ ) { var ErrorModel = Backbone.Model.extend({ ... }); return new ErrorModel(); });
  • 24. www.parisjug.org Copyright © 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' }, ... };
  • 25. www.parisjug.org Copyright © 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
  • 26. www.parisjug.org Copyright © 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 vues var 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
  • 27. www.parisjug.org Copyright © 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’URL MyView = Backbone.View.extend({ ... }, { showMe: function() { router.navigate("myPage"); ... } });
  • 28. Copyright © 2008 ParisJug. Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique Côté serveur
  • 29. www.parisjug.org Copyright © 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é
  • 30. www.parisjug.org Copyright © 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 @Controller public class MyController extends StandardExceptionHandling { @RequestMapping(value = "/myResource", method = RequestMethod.POST) @ResponseBody public MyResource persiste(@RequestBody MyResource myResource) { ... } @RequestMapping(value = "/proposal/{id}", method = RequestMethod.GET) @ResponseBody public MyResource getById(@PathVariable Long id) { ... } ... }
  • 31. www.parisjug.org Copyright © 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
  • 32. www.parisjug.org Copyright © 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>
  • 33. www.parisjug.org Copyright © 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>
  • 34. 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
  • 35. www.parisjug.org Copyright © 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
  • 36. www.parisjug.org Copyright © 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
  • 37. www.parisjug.org Copyright © 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
  • 38. www.parisjug.org Copyright © 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
  • 39. www.parisjug.org Copyright © 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
  • 40. Copyright © 2008 ParisJug. Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique À vous de jouer !
  • 41. www.parisjug.org Copyright © 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
  • 42. www.parisjug.org Copyright © 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
  • 43. www.parisjug.org Copyright © 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/backbon e-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, …
  • 44. Copyright © 2008 ParisJug. Licence CC – Creative Commons 2.0 France – Paternité – Pas d'Utilisation Commerciale – Partage des Conditions Initiales à l'Identique Questions / Réponses
  • 45. www.parisjug.org Copyright © 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
  • 46. 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!
  • 47. www.parisjug.org Copyright © 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/