Paris JUG - Backbone.js en environnement Java - Laurent DUTHEIL et Frederic MERIZEN
-
Upload
frederic-merizen -
Category
Technology
-
view
534 -
download
2
Transcript of Paris JUG - Backbone.js en environnement Java - Laurent DUTHEIL et Frederic MERIZEN
![Page 1: Paris JUG - Backbone.js en environnement Java - Laurent DUTHEIL et Frederic MERIZEN](https://reader033.fdocument.pub/reader033/viewer/2022060111/55635c45d8b42a2f508b4a66/html5/thumbnails/1.jpg)
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](https://reader033.fdocument.pub/reader033/viewer/2022060111/55635c45d8b42a2f508b4a66/html5/thumbnails/2.jpg)
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](https://reader033.fdocument.pub/reader033/viewer/2022060111/55635c45d8b42a2f508b4a66/html5/thumbnails/3.jpg)
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](https://reader033.fdocument.pub/reader033/viewer/2022060111/55635c45d8b42a2f508b4a66/html5/thumbnails/4.jpg)
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](https://reader033.fdocument.pub/reader033/viewer/2022060111/55635c45d8b42a2f508b4a66/html5/thumbnails/5.jpg)
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](https://reader033.fdocument.pub/reader033/viewer/2022060111/55635c45d8b42a2f508b4a66/html5/thumbnails/6.jpg)
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](https://reader033.fdocument.pub/reader033/viewer/2022060111/55635c45d8b42a2f508b4a66/html5/thumbnails/7.jpg)
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](https://reader033.fdocument.pub/reader033/viewer/2022060111/55635c45d8b42a2f508b4a66/html5/thumbnails/8.jpg)
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](https://reader033.fdocument.pub/reader033/viewer/2022060111/55635c45d8b42a2f508b4a66/html5/thumbnails/9.jpg)
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](https://reader033.fdocument.pub/reader033/viewer/2022060111/55635c45d8b42a2f508b4a66/html5/thumbnails/10.jpg)
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](https://reader033.fdocument.pub/reader033/viewer/2022060111/55635c45d8b42a2f508b4a66/html5/thumbnails/11.jpg)
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](https://reader033.fdocument.pub/reader033/viewer/2022060111/55635c45d8b42a2f508b4a66/html5/thumbnails/12.jpg)
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](https://reader033.fdocument.pub/reader033/viewer/2022060111/55635c45d8b42a2f508b4a66/html5/thumbnails/13.jpg)
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](https://reader033.fdocument.pub/reader033/viewer/2022060111/55635c45d8b42a2f508b4a66/html5/thumbnails/14.jpg)
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](https://reader033.fdocument.pub/reader033/viewer/2022060111/55635c45d8b42a2f508b4a66/html5/thumbnails/15.jpg)
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](https://reader033.fdocument.pub/reader033/viewer/2022060111/55635c45d8b42a2f508b4a66/html5/thumbnails/16.jpg)
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](https://reader033.fdocument.pub/reader033/viewer/2022060111/55635c45d8b42a2f508b4a66/html5/thumbnails/17.jpg)
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](https://reader033.fdocument.pub/reader033/viewer/2022060111/55635c45d8b42a2f508b4a66/html5/thumbnails/18.jpg)
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](https://reader033.fdocument.pub/reader033/viewer/2022060111/55635c45d8b42a2f508b4a66/html5/thumbnails/19.jpg)
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](https://reader033.fdocument.pub/reader033/viewer/2022060111/55635c45d8b42a2f508b4a66/html5/thumbnails/20.jpg)
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](https://reader033.fdocument.pub/reader033/viewer/2022060111/55635c45d8b42a2f508b4a66/html5/thumbnails/21.jpg)
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](https://reader033.fdocument.pub/reader033/viewer/2022060111/55635c45d8b42a2f508b4a66/html5/thumbnails/22.jpg)
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](https://reader033.fdocument.pub/reader033/viewer/2022060111/55635c45d8b42a2f508b4a66/html5/thumbnails/23.jpg)
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](https://reader033.fdocument.pub/reader033/viewer/2022060111/55635c45d8b42a2f508b4a66/html5/thumbnails/24.jpg)
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](https://reader033.fdocument.pub/reader033/viewer/2022060111/55635c45d8b42a2f508b4a66/html5/thumbnails/25.jpg)
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](https://reader033.fdocument.pub/reader033/viewer/2022060111/55635c45d8b42a2f508b4a66/html5/thumbnails/26.jpg)
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](https://reader033.fdocument.pub/reader033/viewer/2022060111/55635c45d8b42a2f508b4a66/html5/thumbnails/27.jpg)
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](https://reader033.fdocument.pub/reader033/viewer/2022060111/55635c45d8b42a2f508b4a66/html5/thumbnails/28.jpg)
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](https://reader033.fdocument.pub/reader033/viewer/2022060111/55635c45d8b42a2f508b4a66/html5/thumbnails/29.jpg)
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](https://reader033.fdocument.pub/reader033/viewer/2022060111/55635c45d8b42a2f508b4a66/html5/thumbnails/30.jpg)
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](https://reader033.fdocument.pub/reader033/viewer/2022060111/55635c45d8b42a2f508b4a66/html5/thumbnails/31.jpg)
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](https://reader033.fdocument.pub/reader033/viewer/2022060111/55635c45d8b42a2f508b4a66/html5/thumbnails/32.jpg)
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](https://reader033.fdocument.pub/reader033/viewer/2022060111/55635c45d8b42a2f508b4a66/html5/thumbnails/33.jpg)
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](https://reader033.fdocument.pub/reader033/viewer/2022060111/55635c45d8b42a2f508b4a66/html5/thumbnails/34.jpg)
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](https://reader033.fdocument.pub/reader033/viewer/2022060111/55635c45d8b42a2f508b4a66/html5/thumbnails/35.jpg)
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](https://reader033.fdocument.pub/reader033/viewer/2022060111/55635c45d8b42a2f508b4a66/html5/thumbnails/36.jpg)
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](https://reader033.fdocument.pub/reader033/viewer/2022060111/55635c45d8b42a2f508b4a66/html5/thumbnails/37.jpg)
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](https://reader033.fdocument.pub/reader033/viewer/2022060111/55635c45d8b42a2f508b4a66/html5/thumbnails/38.jpg)
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](https://reader033.fdocument.pub/reader033/viewer/2022060111/55635c45d8b42a2f508b4a66/html5/thumbnails/39.jpg)
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](https://reader033.fdocument.pub/reader033/viewer/2022060111/55635c45d8b42a2f508b4a66/html5/thumbnails/40.jpg)
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](https://reader033.fdocument.pub/reader033/viewer/2022060111/55635c45d8b42a2f508b4a66/html5/thumbnails/41.jpg)
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](https://reader033.fdocument.pub/reader033/viewer/2022060111/55635c45d8b42a2f508b4a66/html5/thumbnails/42.jpg)
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](https://reader033.fdocument.pub/reader033/viewer/2022060111/55635c45d8b42a2f508b4a66/html5/thumbnails/43.jpg)
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](https://reader033.fdocument.pub/reader033/viewer/2022060111/55635c45d8b42a2f508b4a66/html5/thumbnails/44.jpg)
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](https://reader033.fdocument.pub/reader033/viewer/2022060111/55635c45d8b42a2f508b4a66/html5/thumbnails/45.jpg)
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](https://reader033.fdocument.pub/reader033/viewer/2022060111/55635c45d8b42a2f508b4a66/html5/thumbnails/46.jpg)
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](https://reader033.fdocument.pub/reader033/viewer/2022060111/55635c45d8b42a2f508b4a66/html5/thumbnails/47.jpg)
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/