Présentation donnée lors de Devoxx France 2012, présentant comment réaliser une application moderne avec les technologies HTML5, Spring, NoSQL (Cassandra) et mobiles.
Nouveau look pour une nouvelle vie, version spéciale IpponJulien Dubois
Support de ma présentation lors de l'Ippevent HTML5, Spring, NoSQL et mobilité le 28 Juin. CF. http://blog.ippon.fr/2012/06/14/ippevent-html5-spring-nosql-et-mobilite-le-28-juin/
Nouveau look pour une nouvelle vie : HTML5, Spring, NoSQL et MobileIppon
Présentation donnée par Julien Dubois lors de Devoxx France 2012, présentant comment réaliser une application moderne avec les technologies HTML5, Spring, NoSQL (Cassandra) et mobiles.
Nouveau look pour une nouvelle vie, version spéciale IpponJulien Dubois
Support de ma présentation lors de l'Ippevent HTML5, Spring, NoSQL et mobilité le 28 Juin. CF. http://blog.ippon.fr/2012/06/14/ippevent-html5-spring-nosql-et-mobilite-le-28-juin/
Nouveau look pour une nouvelle vie : HTML5, Spring, NoSQL et MobileIppon
Présentation donnée par Julien Dubois lors de Devoxx France 2012, présentant comment réaliser une application moderne avec les technologies HTML5, Spring, NoSQL (Cassandra) et mobiles.
Web API & Cache, the HTTP way - Ippevent 10 Juin 2014Ippon
Chacun connait les fondamentaux pour développer une API Web, mais quand il s’agit de performance, de capacité, de montée en charge, avez vous toutes les clefs pour mettre en oeuvre un cache efficace ?
Le protocole HTTP dispose d’un mécanisme de cache adapté aux architectures distribuées, découvrez ou redécouvrez-le dans cette session et tirez-en profit dans vos API.
Le speaker : David développeur, architecte Java EE et directeur du Pôle Conseil d’Ippon Technologies. Passionné de nouvelles technologies, il s’intéresse aux architectures Java alliant simplicité et efficacité, aptes à répondre aux problèmes concrets. Il est aussi un supporter des API Web et du style d’architecture REST.
Formation JPA Avancé / Hibernate gratuite par Ippon 2014Ippon
Les ORM, c’est pratique. Mais cela peut rapidement devenir complexe ou subtile. JPA permet de rapidement modéliser la couche d’accès aux données avec une facilité indiscutable. Cependant, il est préférable de bien en comprendre le fonctionnement pour éviter quelques anti patterns fâcheux.
La formation JPA Avancé proposée par Ippon détaille les aspects techniques et permet d’aller plus loin dans la compréhension et la maîtrise. Enrichie par des TP très fournis lorsqu’elle est dispensée par les formateurs Ippon, elle permet d’assimiler en 3 jours les subtilités et offre les outils pour réaliser une couche d’accès aux données de qualité, performante et maintenable.
Techniques de modélisation, gestion et subtilités du cache (L1, L2), mécanismes transactionnels, langage de requêtage… Tous ces aspects et bien d’autres sont détaillés et illustrés afin de vous apporter les clefs pour vos prochains projets.
Découvrez dès aujourd’hui les slides de cette formation, mis à disposition dans le cadre de l’OpenFormation.
Vous êtes en fonctionnement agile mais ça ne marche pas ? Vous ne vous servez pas de l’agilité et doutez que ça puisse s’appliquer à votre équipe ? Ce REX est fait pour vous !
Nous vous proposons de retrouver l’esprit de l’agilité en comparant deux expériences client contradictoires. D’un côté l’application quasi stricte des cérémoniels décrits dans la méthode Scrum, de l’autre une application très adaptée des principes de l’agilité.
Quels sont les effets observés dans chacun des cas et quels pièges peuvent être évités lors de l’application de la méthode ?
Support de notre séminaire du 08/10/2009.
- Présentation technique de la notion de portail, portlet JSR168, JSR286
- Présentation du marché
- Zoom sur les principaux acteurs Open Source du monde du portail JEE
Formation Spring Avancé gratuite par Ippon 2014Ippon
Spring est le principal framework de développement Java utilisé en entreprise. Ce succès tient au fait qu'il permet de développer facilement et rapidement des applications robustes, légères et bien testées.
Apprécié également par les cellules d'architecture et les DSI, Spring permet d'avoir des applications bien découpées en couches, facilement maintenables et évolutives.
Cependant, si une configuration Spring simple est à la portée de tous, avoir une architecture Spring correcte, en comprendre le fonctionnement interne et connaître les fonctionnalités avancées du framework sont des tâches nettement plus ardues.
L'objectif de cette formation est de donner les bonnes bases pour comprendre les principaux aspects de Spring, de manière à ce que les participants soient capables de :
- Développer une application Spring complète (persistance, métier, validation, transactions, sécurité, Web, Ajax...).
- Comprendre le fonctionnement interne de Spring et donc être autonomes lorsqu'un bug ou une situation anormale se produit.
- Avoir intégré la philosophie de développement Spring, afin de pouvoir facilement prendre en main un sous-projet ou une fonctionnalité Spring qu'ils ne connaissent pas encore.
Découvrir Spring-Batch, l'assimiler, et ainsi pourvoir détecter les cas d'usage et enfin pouvoir en faire.
GitHub : https://github.com/mmohamed/spring-batch
Démystifions le machine learning avec spark par David Martin pour le Salon B...Ippon
Les volumes de données permettent d’envisager de nouveaux usages, pour la plupart rendus accessibles grâce aux algorithmes de Machine Learning. Découvrez ce qu’est le Machine Learning par de multiples exemples. Comprenez les enjeux autour de la donnée et comment passer de la donnée brute aux prédictions en identifiant les différentes étapes intermédiaires. Enfin, découvrez comment mettre ces concepts en oeuvre avec une présentation des outils à disposition aujourd’hui, et un focus sur Spark, son architecture et les possibilités offertes autour du Machine Learning.
Presentation du socle technique Java open source Scub FoundationStéphane Traumat
Scub Foundation est un ensemble de frameworks, de conventions, d'outils et de procédures qui structurent les développeurs et leurs développements. Pour simplifier, c'est une plateforme qui permet l'industrialisation des projets de développement informatique.
Plus d'informations à http://www.scub-foundation.org
Objectifs du socle
- Ne pas réinventer la roue ! (Intégration d'Eclipse et des frameworks populaires comme hibernate, spring, gwt, JUnit…).
- Avoir des modèles de projets pour chaque type de projet mais avec des structures identiques.
- Avoir des tâches automatisées pour l'ensemble du cycle de vie du projet (compilation, packaging, test…).
- Développement SOA (intégration de la notion de noyau et du découplage Interface/implémentation).
- Gestion automatique des dépendances / librairies.
- Gérer les différents environnements (Test / Développement / Pré production / Production…).
Concrètement, notre socle technique offre au développeur un environnement de développement intégrant les meilleurs éléments Open Source (Eclipse, Maven, Spring, GWT…) ainsi que des modèles de projet.
10 tips pour améliorer les performances de vos applications Windows 8Microsoft
S’il est très simple de réaliser des applications Windows 8 de qualité, il est moins évident de créer des applications ultra performantes. Windows tourne désormais sur tout type d’appareils, des PC de gamers aux tablettes peu puissantes. Pour ces dernières, il est nécessaire de tirer parti au maximum des API fournies par WinRT. Cette session vous propose de découvrir 10 astuces afin d’améliorer visiblement les performances de vos applications.
Web API & Cache, the HTTP way - Ippevent 10 Juin 2014Ippon
Chacun connait les fondamentaux pour développer une API Web, mais quand il s’agit de performance, de capacité, de montée en charge, avez vous toutes les clefs pour mettre en oeuvre un cache efficace ?
Le protocole HTTP dispose d’un mécanisme de cache adapté aux architectures distribuées, découvrez ou redécouvrez-le dans cette session et tirez-en profit dans vos API.
Le speaker : David développeur, architecte Java EE et directeur du Pôle Conseil d’Ippon Technologies. Passionné de nouvelles technologies, il s’intéresse aux architectures Java alliant simplicité et efficacité, aptes à répondre aux problèmes concrets. Il est aussi un supporter des API Web et du style d’architecture REST.
Formation JPA Avancé / Hibernate gratuite par Ippon 2014Ippon
Les ORM, c’est pratique. Mais cela peut rapidement devenir complexe ou subtile. JPA permet de rapidement modéliser la couche d’accès aux données avec une facilité indiscutable. Cependant, il est préférable de bien en comprendre le fonctionnement pour éviter quelques anti patterns fâcheux.
La formation JPA Avancé proposée par Ippon détaille les aspects techniques et permet d’aller plus loin dans la compréhension et la maîtrise. Enrichie par des TP très fournis lorsqu’elle est dispensée par les formateurs Ippon, elle permet d’assimiler en 3 jours les subtilités et offre les outils pour réaliser une couche d’accès aux données de qualité, performante et maintenable.
Techniques de modélisation, gestion et subtilités du cache (L1, L2), mécanismes transactionnels, langage de requêtage… Tous ces aspects et bien d’autres sont détaillés et illustrés afin de vous apporter les clefs pour vos prochains projets.
Découvrez dès aujourd’hui les slides de cette formation, mis à disposition dans le cadre de l’OpenFormation.
Vous êtes en fonctionnement agile mais ça ne marche pas ? Vous ne vous servez pas de l’agilité et doutez que ça puisse s’appliquer à votre équipe ? Ce REX est fait pour vous !
Nous vous proposons de retrouver l’esprit de l’agilité en comparant deux expériences client contradictoires. D’un côté l’application quasi stricte des cérémoniels décrits dans la méthode Scrum, de l’autre une application très adaptée des principes de l’agilité.
Quels sont les effets observés dans chacun des cas et quels pièges peuvent être évités lors de l’application de la méthode ?
Support de notre séminaire du 08/10/2009.
- Présentation technique de la notion de portail, portlet JSR168, JSR286
- Présentation du marché
- Zoom sur les principaux acteurs Open Source du monde du portail JEE
Formation Spring Avancé gratuite par Ippon 2014Ippon
Spring est le principal framework de développement Java utilisé en entreprise. Ce succès tient au fait qu'il permet de développer facilement et rapidement des applications robustes, légères et bien testées.
Apprécié également par les cellules d'architecture et les DSI, Spring permet d'avoir des applications bien découpées en couches, facilement maintenables et évolutives.
Cependant, si une configuration Spring simple est à la portée de tous, avoir une architecture Spring correcte, en comprendre le fonctionnement interne et connaître les fonctionnalités avancées du framework sont des tâches nettement plus ardues.
L'objectif de cette formation est de donner les bonnes bases pour comprendre les principaux aspects de Spring, de manière à ce que les participants soient capables de :
- Développer une application Spring complète (persistance, métier, validation, transactions, sécurité, Web, Ajax...).
- Comprendre le fonctionnement interne de Spring et donc être autonomes lorsqu'un bug ou une situation anormale se produit.
- Avoir intégré la philosophie de développement Spring, afin de pouvoir facilement prendre en main un sous-projet ou une fonctionnalité Spring qu'ils ne connaissent pas encore.
Découvrir Spring-Batch, l'assimiler, et ainsi pourvoir détecter les cas d'usage et enfin pouvoir en faire.
GitHub : https://github.com/mmohamed/spring-batch
Démystifions le machine learning avec spark par David Martin pour le Salon B...Ippon
Les volumes de données permettent d’envisager de nouveaux usages, pour la plupart rendus accessibles grâce aux algorithmes de Machine Learning. Découvrez ce qu’est le Machine Learning par de multiples exemples. Comprenez les enjeux autour de la donnée et comment passer de la donnée brute aux prédictions en identifiant les différentes étapes intermédiaires. Enfin, découvrez comment mettre ces concepts en oeuvre avec une présentation des outils à disposition aujourd’hui, et un focus sur Spark, son architecture et les possibilités offertes autour du Machine Learning.
Presentation du socle technique Java open source Scub FoundationStéphane Traumat
Scub Foundation est un ensemble de frameworks, de conventions, d'outils et de procédures qui structurent les développeurs et leurs développements. Pour simplifier, c'est une plateforme qui permet l'industrialisation des projets de développement informatique.
Plus d'informations à http://www.scub-foundation.org
Objectifs du socle
- Ne pas réinventer la roue ! (Intégration d'Eclipse et des frameworks populaires comme hibernate, spring, gwt, JUnit…).
- Avoir des modèles de projets pour chaque type de projet mais avec des structures identiques.
- Avoir des tâches automatisées pour l'ensemble du cycle de vie du projet (compilation, packaging, test…).
- Développement SOA (intégration de la notion de noyau et du découplage Interface/implémentation).
- Gestion automatique des dépendances / librairies.
- Gérer les différents environnements (Test / Développement / Pré production / Production…).
Concrètement, notre socle technique offre au développeur un environnement de développement intégrant les meilleurs éléments Open Source (Eclipse, Maven, Spring, GWT…) ainsi que des modèles de projet.
10 tips pour améliorer les performances de vos applications Windows 8Microsoft
S’il est très simple de réaliser des applications Windows 8 de qualité, il est moins évident de créer des applications ultra performantes. Windows tourne désormais sur tout type d’appareils, des PC de gamers aux tablettes peu puissantes. Pour ces dernières, il est nécessaire de tirer parti au maximum des API fournies par WinRT. Cette session vous propose de découvrir 10 astuces afin d’améliorer visiblement les performances de vos applications.
Le Web est devenu l’outil principal pour la diffusion d'offres d’emploi, la gestion de candidatures et la promotion de sa marque employeur. Les solutions utilisées s’appuient généralement sur des progiciels dédiés au e-recrutement (Clic’n Job, JobPartners, RFlex, Stepstone, Taleo...).
Se préoccuper de l'accessibilité de ces solutions devient donc essentiel.
Comment prendre en compte l’accessibilité pour de tels projets ?
Est-il possible de faire évoluer un progiciel ? À quel prix ?
Cette présentation s’appuiera sur de nombreuses études de cas pour dresser un aperçu de plusieurs démarches adoptées par de grandes entreprises françaises.
Spinnaker est un outil open source de déploiement continu multi-cloud développé par Netflix.
Vous savez déjà construire vos applications avec Jenkins, venez découvrir comment automatiser tous vos déploiements.
Nous verrons ensemble comment créer une plate forme complète de déploiement continu jusqu'en production, à base de canary, blue/green et rollback.
Spark, ou comment traiter des données à la vitesse de l'éclairAlexis Seigneurin
Spark fait partie de la nouvelle génération de frameworks de manipulation de données basés sur Hadoop. L’outil utilise agressivement la mémoire pour offrir des temps de traitement jusqu’à 100 fois plus rapides qu'Hadoop. Dans cette session, nous découvrirons les principes de traitement de données (notamment MapReduce) et les options mises à disposition pour monter un cluster (Zookeper, Mesos…). Nous ferons un point sur les différents modules proposés par le framework, et notamment sur Spark Streaming pour le traitement de données en flux continu.
Présentation jouée chez Ippon le 11 décembre 2014.
Devoxx : being productive with JHipsterJulien Dubois
Slides from the "being productive with JHipster" talk at Devoxx Belgium 2016 by Julien Dubois (JHipster lead) & Deepu K Sasidharan (JHipster co-lead).
Live video is at: https://www.youtube.com/watch?v=dzdjP3CPOCs
Code commited (live!) during the presentation is at:
https://github.com/jhipster/devoxx-2016
Découverte de 3 innovations eRecrutement 2.0 :
* ATTIRER en orientant en ligne les candidats (illustration l’espace Graines de Talents ... CARREFOUR)
* PRE-SELECTIONNER en révélant en ligne les talents avec le témoignage d'IPPON TECHNOLOGIES
* DIALOGUER avec les candidats (illustration avec l'initiative d'Ethique & Recrutement)
"L'accueil des e-candidats" (21/11/06 maison de l'ANDCP)
Introduction de David Guillocheau (Talent4jobs, JobMeeters) et intervention de Thomas Delorme (TMPNEO) : les pratiques les plus répandues et le regard des Jeunes Diplômés "
AngularJS est un framework Javascript en plein essor, visant à structurer et simplifier le développement d'applications riches côté client.
Développé par Google sous licence open-source, il intègre nativement l'ensemble des fonctionnalités habituellement obtenues par assemblage de librairies spécialisées : routage, templates, bindings, appels REST... Sa robustesse et sa polyvalence en font aujourd'hui un élément incontournable de toutes les applications web orientées REST !
En effet, cette formation vous apportera la maîtrise des fonctionnalités clés du framework : filtres, contrôleurs, templates, REST... Vous verrez également son intégration dans la plateforme PowerTools (Accélérateur B2B Hybris).
Agile Tour Nantes 2011 - Bertrand pinel les projets au forfait - scrum but....Association Agile Nantes
La méthodologie Scrum et son caractère profondément itératif conduisent souvent à éviter une mise en place pour les projets au forfait. Cette session se propose, au travers de 3 projets concrets portant sur des problématiques différentes (Intranet, portail web, application métier), de montrer les possibilités et les limites de Scrum en mode forfait :
Comment trouver le Product Owner ?
Comment gérer un périmètre projet contractuel ?
Quels outillage utilisé ?
Que faire de la vélocité ?
...
Node.js et les nouvelles technologies javascriptKhalid Jebbari
Présentation sur Node.js et les nouvelles technologies javascript, qui a eu lieu dans les locaux de Smile, à Levallois (92).
Retour d'exploration par un développeur Drupal (moi) sur ces technologies, et comparaison avec Drupal.
Les applications web recourent de plus en plus au javascript, et on commence maintenant à recourir au javascript pour les parties serveur avec des outils comme Node.js TypeScript est un nouveau language permettant d'annoter et de structurer son code javascript, afin d'en faciliter la fiabilité et la maintenance. Dans cette session, nous vous présenterons les bases de TypeScript et comment tirer le meilleur parti de ce nouvel outil dans vos applications.
Devoxx: Tribulation d'un développeur sur le CloudTugdual Grall
Comme beaucoup de développeurs une grande partie de mon temps libre est utilisé pour découvrir de nouvelles technologies et développer des applications avec celles-ci.
J'ai donc choisi de découvrir le développement d'application Java sur le cloud, avec Google AppEngine, pour créer le site http://www.resultri.com qui permet de gérer les resultats de triathlon (mon autre passion).
Développer cette application est une aventure interessante que je partage avec vous durant ce BOF:
découverte de GAE et des outils de developpement
les "surprises" du NoSQL, surtout pour un cerveau "cablé relationnel comme le mien"
hmmm tout n'est pas gratuit?
les quelques trucs à savoir : l'importance de memcache, utilisation de CloudSQL, les batchs....
L'histoire d'html5 pour les développeurs windows phone 8davrous
Dans cette session, nous parcourons ensemble l'histoire HTML5 pour les développeurs Windows Phone 8. Nous verrons d'abord comment utiliser des morceaux d'HTML5 dans certaines applications natives, ce qui peut s'avérer dans certains cas exceptionnels être assez pratique. Ensuite, grâce aux possibilités d'IE10, nous verrons qu'il est également possible de créer de vraies applications vivant uniquement dans le navigateur. Pour finir, nous jetterons un oeil aux possibilités d'intégration dans l'OS grâce au template de projet HTML5 de Visual Studio 2012 ou grâce à des frameworks comme PhoneGap ou Sencha Touch 2.
Jouée pendant les MS Techdays 2013: http://www.microsoft.com/france/mstechdays/programmes/2013/fiche-session.aspx?ID=2d81322e-6ab2-4840-a4b1-568f1bd370f4
Ce document, accompagné d’une série d’exercices corrigés, constitue un support de formation présentielle d’une durée de 5 jours basé sur le cours officiel de Microsoft 20480B.
Responsible Design ou Le web moderne à destination de tousjwajsberg
Après avoir présenté la situation actuelle, j'essaie d'expliquer comment on peut utiliser les technologies récentes du web tout en supportant tous les navigateurs, qu'ils soient anciens ou minoritaires.
Ma stack d'outils agiles, tout un programme !Cédric Leblond
Pour le développement, nous utilisons tous des outils. Leur nombre et surtout leur intégration peuvent même devenir un vrai casse tête. Surtout s'il vous faut supporter des technologies parfois très distinctes ... Je vous propose de monter une plateforme entièrement intégrée et flexible avec Visual Studio Online. Intégrée car toutes les données y sont disponibles. Flexible car ses API permettent de l'étendre avec vos outils agiles préférés (Trello, Zendesk, Jenkins, Jira, ...) et de l’adapter ainsi à vos besoins
Javascript as a first programming language : votre IC prête pour la révolution !VISEO
NodeJs, GruntJs, Bower, Karma, ... des buzzwords dont nous entendons parler, que nous voyons passer dans les blogs/articles. Mais à quoi servent-ils ?
Comment industrialiser nos développements Javascript ? Mettre en place des tests unitaires dans une application Web ? Générer de la documentation ? Des métriques qualités ? La couverture de code ? Comme avec Maven ? Nous verrons concrètement comment articuler tous ces outils autour d'une application école, pour démystifier tout ça.
A brief summary of the most important reasons about why choosing MongoDB might be a good solution in current common problems in IT. This talk is dedicated to software engineers, DBA, managers, CTO that could know MongoDB but don't see why they should deploy it in production.
jQuery mobile / PhoneGap : contenus dynamiques client-sidemaru.maru
Présentation effectuée le 24 mai 2012 à l'occasion de la Creative week Adobe live à Paris.
Problématiques abordées :
- Comment générer du contenu HTML dynamiquement côté client (sans PHP !) ?
- Quelles sont les techniques disponibles, les bonnes pratiques, les pièges à éviter ?
Présentation Telosys Tools au JUG Nantes le 14 avril 2014
Development accelerator
ou comment faire un "départ lancé"
( générateur de code Telosys Tools )
Similaire à Nouveau look pour une nouvelle vie : HTML5, Spring, NoSQL et mobilité (20)
Opening keynote for DevoxxUK on building accessible software.
Learn why accessibility matters, and get 10 good habits to improve how you build software, by including everyone.
Running Spring Boot microservices in the cloudJulien Dubois
Presentation at Dawscon 2020
Microservices patterns and good practices that we use in JHipster, and how you can implement them with Spring Boot and Azure Spring Cloud
Gérer son environnement de développement avec DockerJulien Dubois
Utilisation de Docker pour gérer une stack de développement "moderne", avec Maven / Grunt / Bower / Yeoman, et pouvoir facilement se partager ses containers entre membres d'une même équipe
Nouveau look pour une nouvelle vie : HTML5, Spring, NoSQL et mobilité
1. Nouveau look pour une
nouvelle vie
HTML5+Spring+NoSQL+Mobile
Julien Dubois
@juliendubois
1
2. Objectif :
réaliser une application
Java moderne, sans
(trop) céder à la mode
Pas de framework inconnu ou propriétaire
Des technologies standards ou largement
répandues
Pas de langage alternatif que personne ne
comprend
Du code simple et performant
Le XML, ce n’est pas sale
2
3. Speaker
• Développeur Java depuis 13 ans
• A commencé avec les EJB 1.0
• Code toujours chez les clients
Julien Dubois • Connait bien Spring
Directeur du Conseil et du Développement • Co-auteur de «Spring par la pratique»
Ippon Technologies • Ancien directeur de SpringSource France
http://www.ippon.fr
• Aujourd’hui chez Ippon Technologies
• RDV sur notre stand
• On recrute !
Suivez-moi sur Twitter : @juliendubois
3
4. Nous allons nous baser sur Tatami, une
application HTML5+Spring+NoSQL+Mobile
4
10. 1. De nouveaux types de champs (2/2)
• Ces champs sont ensuite
automatiquement validés par le
navigateur
• Sur mobile/tablette, le clavier
correspondant au champ est activé
• Attention, le support est inégal en
fonction des navigateurs
10
11. 2. Le SVG
• Permet de faire du
dessin vectoriel
• Supporte les
événements
JavaScript !!!
• Ne fonctionne pas
sous IE (utilisation de
VML)
• Nombreuses libraires : raphael.js, Google Chart Tools,
HighCharts...
11
13. 3. CSS 3
n 2D et en 3D
ions de texte e
• Transformat
• Transitions et animations
• Web Fonts
• Bords arrondis, ombres, opacité ...
13
14. 4. Les WebSockets
Trop jeune pour être utilisé concrètement :
• Support inégal des navigateurs,
• Support récent et non standard des
serveurs d’applications
• Mauvais support des proxys
• Compliqué à débugger
• Contesté au sein même de l’IETF...
14
15. 5. Le «storage»
• Web Storage : simples paires clef/valeur,
fonctionne à peu près partout
• Indexed Database : ajoute des index,
ressemble à du NoSQL
• Web SQL Database : vraie base
de données, non supportée par
Firefox et IE, en «pause»
au W3C
15
16. 6. Pour les amateurs de jeux vidéos
• 3D avec WebGL
• Canvas
• Audio et vidéo
16
17. Nous devons sauter un trou technologique
• Le HTML5 reste très jeune : nombreux bugs et
incompatibilités entre navigateurs
• Coder le HTML/CSS/JavaScript à la main est de
plus en plus compliqué
• 2 à 3 ans pour que HTML5 mûrisse 17
18. Le fait d'avoir intégré toutes ces
nouveautés résulte dans des sites plus
performants côté client et plus
agréables visuellement
(moins de hacks pour réaliser le
même rendu graphique)
18
19. Quelques outils pour réussir votre
application
• jQuery
• Twitter Bootstrap
• LESS CSS
19
21. Fini le MVC et le Struts «à
papa»
Une application = une page HTML qui fait des
appels REST/JSON
21
22. Comment coder une application REST/JSON ?
En Java EE avec l’API JAX-RS
Standard, nombreuses implémentations :
Jersey ou CXF
Ou en Spring MVC REST + Jackson
Simple à intégrer et à utiliser avec Spring MVC
22
23. Pourquoi choisir Spring ?
• Performances : éprouvé depuis longtemps
(singleton), plus rapide que Java EE
• Léger : 15 à 30 Mo de RAM
• Support de nombreuses bases NoSQL
• Cycle de développement rapide :
Jetty + Hotspot
• Les abstractions et sous-projets :
MVC, cache, sécurité, mobile, social...
• Simple et peu cher à héberger (8 Euros/mois)
23
30. Comment tenir la charge au niveau de la couche
de persistance ?
30
31. Nouvelle abstraction «cache» de Spring 3.1
1: @Cacheable("tweet-cache")
2: public Tweet findTweetById(String tweetId) {
3: return em.find(Tweet.class, tweetId);
4: }
5:
6: @CacheEvict(value="tweet-cache", key="#tweet.tweetId")
7: public void removeTweet(Tweet tweet) {
8: tweet.setRemoved(true);
9: em.persist(tweet);
10: }
31
32. Le NoSQL avec Cassandra
• Cassandra : une base de données orientée colonne, très
performante en lecture/écriture
• Pas de Single Point of Failure
• Montée en charge «élastique» sans effort
• Possibilité d’utiliser JPA (avec des limites)
• Mais pas de foreign keys, de transactions ou de sessions !
32
33. Exemple de code Cassandra/Hector
1: public void createUser(User user){
2: em.persist(user);
3: }
4:
5: public Collection<String> getTimeline(String login, int size) {
6: ColumnSlice<String, String> result = createSliceQuery(keyspaceOperator,
7: StringSerializer.get(), StringSerializer.get(), StringSerializer.get())
8: .setColumnFamily(TIMELINE_CF)
9: .setKey(login)
10: .setRange(null, null, true, size)
11: .execute()
12: .get();
13:
14: Collection<String> tweetIds = new ArrayList<String>();
15: for (HColumn<String, String> column : result.getColumns()) {
16: tweetIds.add(column.getValue());
17: }
18: return tweetIds;
19: }
33
34. Cassandra + le cache ?
• Combiner les deux solutions précédentes est-il la
solution ultime ?
• Cassandra propose son propre système de cache
interne : très performant et automatiquement distribué
• Dans certains cas, l’utilisation d’un cache mémoire local
en plus est intéressant (pas d’accès distant)
• Sur Tatami nous avons un gain de performance
d’environ 20%
34
35. Les problèmes causés par le NoSQL
• Non consistance de données
• L’absence de session peut être gênante :
1: setTimeout(function() {
2: $('#defaultTab').tab('show');
3: }, 1000) //wait for Cassandra
• Problèmes de réplication de cache
• Retour de la couche «DAO»
35
36. Testons la montée en charge
Un test imparfait...
• Avec JMeter sur la même machine que Jetty et
Cassandra
• Avec un disque dur 5400 rpm crypté
Un très bon résultat...
• 1000 utilisateurs concurrents : 750 requêtes/sec
• Faible utilisation mémoire
• 50 à 100 Mo en fonction des GC
• Grossit à cause du cache
36
38. Pourquoi faire une application
mobile spécifique ?
«Good mobile user experience requires a different
design than what's needed to satisfy desktop users.
Two designs, two sites, and cross-linking to make it
all work.» -- Jakob Nielsen
http://www.useit.com/alertbox/mobile-vs-full-sites.html
38
39. Comment faire une application mobile ?
Aucun problème grâce à
Spring MVC et à notre
architecture REST !
39
40. Utilisation de Spring Mobile avec Spring MVC
pour choisir quelle vue renvoyer
Vue «standard»
Requête HTTP
DispatcherServlet
Spring MVC
Vue «mobile»
DeviceResolver
Spring Mobile
40
41. Il suffit de faire une vue spécialisée qui utilise les
mêmes services REST
Req
uêtes
Vue «standard» RES
T/JSO
N
Spring MVC REST
+ Cassandra
Jackson
/JS ON
sR EST
Vue «mobile» ête
Requ
41
42. jQuery Mobile
• Version de jQuery spécifique pour
smartphones et tablettes
• HTML5, cross-platform
• jQuery UI et ThemeRoller
• Intégration PhoneGap / Apache Cordova
42