SlideShare une entreprise Scribd logo
1  sur  25
Télécharger pour lire hors ligne
Open-REX - GWT 2.0

      10/06/2010
     David Laurent
•  Cette présentation vous est fournie sous licence
   Creative Commons Attribution Share Alike

•  Vous êtes libres :
    o  De reproduire, distribuer et communiquer cette création au public

•  Selon les conditions suivantes :
    o  Paternité. Vous devez citer le nom des auteurs originaux mais pas
       d'une manière qui suggérerait qu'ils vous soutiennent ou approuvent
       votre utilisation de l'œuvre.
    o  A chaque réutilisation ou distribution de cette création, vous devez faire
       apparaître clairement au public les conditions contractuelles de sa
       mise à disposition sous licence identique Creative Commons Share
       Alike.
    o  Chacune de ces conditions peut e
    o  Rien dans ce contrat ne diminue ou ne restreint le droit moral de
       l'auteur ou des auteurs.
Retour d'expérience

•  Application comptable Carrefour
    o  Gestion de campagne marketing
    o  < 50 utilisateurs
    o  GWT basé sur GXT

•  Application de vente FranceBillet / Fnac
    o  Guichet de vente du réseau de billetterie
    o  > 10000 utilisateurs / jour
    o  + de 1000 points de vente magasin
    o  Infrastructure hétérogène ≠ réseaux de commercialisation
          navigateurs, tailles d'écran, écran guichet + écran client
    o  Réelles contraintes de performances
    o  Objectifs de charge de 100 000 réservations / heure
    o  GWT only

•  Expérience utilisateur ... UI + Vitesse !
And now ... :-) :-| :-(
Points abordés
•  Introduction / Performances / Architecture / Tests
•  Compilation de bonnes pratiques Google IO + GTAC en // mises en oeuvre terrain
•  Démos sur la base des samples du GWT SDK


Google IO 2009
•  Measure in Milliseconds: Performance Tips for
•  Google Web Toolkit Architecture: Best Practices For Architecting Your GWT App


Google IO 2010
•  Measure in milliseconds redux: Meet Speed Tracer
•  Architecting for performance with GWT
•  Architecting GWT applications for production at Google


Google Test Automation Conference 2009
•  Even better than the real thing : Lessons learned from testing GWT applications
•  Selenium: to 2.0 and Beyond!
Google Web Toolkit
•  GWT Manifesto / les designs axioms (2006)
   o    L'expérience utilisateur est primordiale
   o    Simplifier le développement d'applications AJAX
            Java debugging non-négociable, ...
   o     Les principaux composants doivent être utiles indépendamment
            Widgets, RPC disponibles mais non obligatoires, ...
            Le compilateur Java-to-Javascript est utile sans les libs gwt-user
   o    Interopère avec l'existant
            Protocoles autres que RPC, pour coopérer les composants n'ont pas
             besoin d'un serveur spécifiquement GWT
            Rendu avec CSS
   o    Faciliter la réutilisation de code AJAX
            partage de composants et d'applications entières via JARs
   o    Optimiser de façon agressive les performances
            Ne pas faire à l'exécution ce que l'on peut faire à la compilation
   o    Proposer la sécurité par défaut
            Ne pas exposer les services automatiquement
Des apps AJAX écrites en JAVA
Exemples introductifs
•  EntryPoint, Widgets, Module, GWT, Service RPC
Exemples introductifs
•  Handler, Event, ServiceAsync RPC
Démos #1

•  Exemples du SDK
   o  Sample Hello
   o  Sample Mail (versions antérieures à GWT 2.0)
   o  Sample Mail (version 2.0 et au delà)

•  InspectorWidget
    o  inspecter rapidement le nb de widget d'un état du DOM
    o  inspecter rapidement la nature des widgets
Démarrage
#1 Concevoir pour les perfs
•  La vitesse compte!

•  Limites de temps de réponse
    o  0.1 secondes : impression d'instantanéité
    o  1 seconde : impression d'ininterruption
    o  10 secondes : maintient de l'attention

•  Points de contention d'une application
   1.  émarrage
     D
   2.  écupération des données
     R
   3.  alcul de rendu, Affichage
     C
   4. nteractions utilisateur
     I
#1 Démarrage
#1 Démarrage optimisé
#1 Récupération des données
•  Pièges à éviter
   o  trop de requêtes HTTP
   o  récupérer des données dont on a pas besoin

•  Principes
   o  concevoir des interfaces RPC avec précaution
        interfaces côtés serveur adaptées à l'UI
        les services génériques amènent à requêtes +
         données non nécessaires
   o  récupérer que ce dont on a besoin
   o  attention aux types qui sont sérialisés avec RPC
   o  grouper si possible les requêtes (batch requests)
#1 Calcul de rendu, Affichage
•  Pièges à éviter
   o  créer des composants trop tôt
   o  lorsque ce n'est pas nécessaire
   o  associer les données aux widgets

•  Principes
   o  Utiliser le LazyPanel
   o  Savoir quand utiliser des widgets : events ? parent ?
   o  Comment éliminer des widgets
        Utiliser UiBinder pour remplacer les widgets / HTML
        Utiliser le pattern Flyweight pour listes, tables et tree
   o  UiBinder : templates d'HTML et de Widgets (+ simple)
        utiliser HTML autant que possible
        utiliser des CSS optimisées avec CssRessource
            les règles CSS les + simples = + rapides
#1 Interactions utilisateurs

•  Une intéraction utilisateur doit être inférieure à 100 ms

•  Handler trop long à répondre bloque le thread (unique) JS

•  Evénements ne peuvent être intercepté si JS en exécution

•  Deffered Command, Incremental Command

•  Le Layout est plus rapide avec les LayoutPanels
Démos #2

•  Exemples du SDK
   o  Sample Showcase (Chargement à la demande)
   o  Sample Simple RPC
   o  Sample Simple RPC modifié en deRPC

•  Mesure des performances avec SpeedTracer
   o  Comparaison Simple RPC / deRPC
   o  à suivre en 2010 dans la version 2.1 :
        SpeedTracer côté serveur et ...
        SpeedTracer en Intégration Continue
           identifier les regressions de perfs au commit
#2 Architecture : Principes

•  Le test logiciel ne consiste pas à écrire des tests mais ...
   des logiciels testables


•  Quels sont les principes de structuration énoncés
   pour les applications GWT?


•  Le principe fondamental :
    o  isolation / séparation des responsabilités
#2 Bonne / mauvaise isolation
#2 Mauvaise isolation + Code natif
#2 Séparation des responsabilité
#2 Model View Presenter
#2 Model View Presenter

Martin Fowler l'entomologiste du pattern énonce :

  o  Passive     View : A screen and components with all application specific
    behavior extracted into a controller so that the widgets have their state controlled
    entirely by controller. ... A Passive View handles this by reducing the behavior of the
    UI components to the absolute minimum by using a controller that not just handles
    responses to user events, but also does all the updating of the view. This allows testing
    to be focused on the controller with little risk of problems in the view.”

  o  Presenter     : The view of MVP is a structure of these widgets. It doesn't contain
    any behavior that describes how the widgets react to user interaction. The active
    reaction to user acts lives in a separate presenter object. The fundamental handlers for
    user gestures still exist in the widgets, but these handlers merely pass control to the
    presenter. The presenter then decides how to react to the event
Démos #3
•  Exemples GWT Docs
   o  Sample Contacts 1

•  Webdriver / Selenium 2

•  Tests de charges serveur
    o  junit + contiperf + gwtrpc4j
Future ... GWT 2.1

•  MVP refactorisation
   o  Model : RequestFactoryServlet, Record, SyncRequest
   o  Presenter : ActivityManager, Activity
   o  View : EditorSupport



•  Améliorations Widget Library
   o  CellWidgets

Contenu connexe

Tendances

Quoi de neuf pour JHipster en 2016
Quoi de neuf pour JHipster en 2016Quoi de neuf pour JHipster en 2016
Quoi de neuf pour JHipster en 2016Ippon
 
Presentation du socle technique Java open source Scub Foundation
Presentation du socle technique Java open source Scub FoundationPresentation du socle technique Java open source Scub Foundation
Presentation du socle technique Java open source Scub FoundationStéphane Traumat
 
Breizhjug spring batch 2011
Breizhjug spring batch 2011Breizhjug spring batch 2011
Breizhjug spring batch 2011Olivier BAZOUD
 
Presentation of GWT 2.4 (PDF version)
Presentation of GWT 2.4 (PDF version)Presentation of GWT 2.4 (PDF version)
Presentation of GWT 2.4 (PDF version)Celinio Fernandes
 
Formation JPA Avancé / Hibernate gratuite par Ippon 2014
Formation JPA Avancé / Hibernate gratuite par Ippon 2014Formation JPA Avancé / Hibernate gratuite par Ippon 2014
Formation JPA Avancé / Hibernate gratuite par Ippon 2014Ippon
 
20081113 - Nantes Jug - Apache Maven
20081113 - Nantes Jug - Apache Maven20081113 - Nantes Jug - Apache Maven
20081113 - Nantes Jug - Apache MavenArnaud Héritier
 
Hibernate vs le_cloud_computing
Hibernate vs le_cloud_computingHibernate vs le_cloud_computing
Hibernate vs le_cloud_computingIppon
 
Scub Foundation, usine logicielle Java libre
Scub Foundation, usine logicielle Java libreScub Foundation, usine logicielle Java libre
Scub Foundation, usine logicielle Java libreStéphane Traumat
 
Formation html5 CSS3 offerte par ippon 2014
Formation html5 CSS3 offerte par ippon 2014Formation html5 CSS3 offerte par ippon 2014
Formation html5 CSS3 offerte par ippon 2014Ippon
 
Formation Gratuite Total Tests par les experts Java Ippon
Formation Gratuite Total Tests par les experts Java Ippon Formation Gratuite Total Tests par les experts Java Ippon
Formation Gratuite Total Tests par les experts Java Ippon Ippon
 
20080311 - Paris Vi Master STL TA - Initiation Maven
20080311 - Paris Vi Master STL TA - Initiation Maven20080311 - Paris Vi Master STL TA - Initiation Maven
20080311 - Paris Vi Master STL TA - Initiation MavenArnaud Héritier
 
Presentation of GWT 2.4 (PowerPoint version)
Presentation of GWT 2.4 (PowerPoint version)Presentation of GWT 2.4 (PowerPoint version)
Presentation of GWT 2.4 (PowerPoint version)Celinio Fernandes
 
NightClazz Build Tools & Continuous Delivery Avancé
NightClazz Build Tools & Continuous Delivery AvancéNightClazz Build Tools & Continuous Delivery Avancé
NightClazz Build Tools & Continuous Delivery AvancéZenika
 
20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache MavenArnaud Héritier
 
Introduction à GWT - GTI780 & MTI780 - ETS - A09
Introduction à GWT - GTI780 & MTI780 - ETS - A09Introduction à GWT - GTI780 & MTI780 - ETS - A09
Introduction à GWT - GTI780 & MTI780 - ETS - A09Claude Coulombe
 
Nouveau look pour une nouvelle vie, version spéciale Ippon
Nouveau look pour une nouvelle vie, version spéciale IpponNouveau look pour une nouvelle vie, version spéciale Ippon
Nouveau look pour une nouvelle vie, version spéciale IpponJulien Dubois
 
Introduction à GWT - GTI780 & MTI780 - ETS - A08
Introduction à GWT - GTI780 & MTI780 - ETS - A08Introduction à GWT - GTI780 & MTI780 - ETS - A08
Introduction à GWT - GTI780 & MTI780 - ETS - A08Claude Coulombe
 

Tendances (20)

Spring Batch - concepts de base
Spring Batch - concepts de baseSpring Batch - concepts de base
Spring Batch - concepts de base
 
Quoi de neuf pour JHipster en 2016
Quoi de neuf pour JHipster en 2016Quoi de neuf pour JHipster en 2016
Quoi de neuf pour JHipster en 2016
 
Presentation du socle technique Java open source Scub Foundation
Presentation du socle technique Java open source Scub FoundationPresentation du socle technique Java open source Scub Foundation
Presentation du socle technique Java open source Scub Foundation
 
Breizhjug spring batch 2011
Breizhjug spring batch 2011Breizhjug spring batch 2011
Breizhjug spring batch 2011
 
Presentation of GWT 2.4 (PDF version)
Presentation of GWT 2.4 (PDF version)Presentation of GWT 2.4 (PDF version)
Presentation of GWT 2.4 (PDF version)
 
Formation JPA Avancé / Hibernate gratuite par Ippon 2014
Formation JPA Avancé / Hibernate gratuite par Ippon 2014Formation JPA Avancé / Hibernate gratuite par Ippon 2014
Formation JPA Avancé / Hibernate gratuite par Ippon 2014
 
20081113 - Nantes Jug - Apache Maven
20081113 - Nantes Jug - Apache Maven20081113 - Nantes Jug - Apache Maven
20081113 - Nantes Jug - Apache Maven
 
Hibernate vs le_cloud_computing
Hibernate vs le_cloud_computingHibernate vs le_cloud_computing
Hibernate vs le_cloud_computing
 
Scub Foundation, usine logicielle Java libre
Scub Foundation, usine logicielle Java libreScub Foundation, usine logicielle Java libre
Scub Foundation, usine logicielle Java libre
 
Formation html5 CSS3 offerte par ippon 2014
Formation html5 CSS3 offerte par ippon 2014Formation html5 CSS3 offerte par ippon 2014
Formation html5 CSS3 offerte par ippon 2014
 
Formation Gratuite Total Tests par les experts Java Ippon
Formation Gratuite Total Tests par les experts Java Ippon Formation Gratuite Total Tests par les experts Java Ippon
Formation Gratuite Total Tests par les experts Java Ippon
 
Sonar-Hodson-Maven
Sonar-Hodson-MavenSonar-Hodson-Maven
Sonar-Hodson-Maven
 
20080311 - Paris Vi Master STL TA - Initiation Maven
20080311 - Paris Vi Master STL TA - Initiation Maven20080311 - Paris Vi Master STL TA - Initiation Maven
20080311 - Paris Vi Master STL TA - Initiation Maven
 
Presentation of GWT 2.4 (PowerPoint version)
Presentation of GWT 2.4 (PowerPoint version)Presentation of GWT 2.4 (PowerPoint version)
Presentation of GWT 2.4 (PowerPoint version)
 
Usine Logicielle 2013
Usine Logicielle 2013Usine Logicielle 2013
Usine Logicielle 2013
 
NightClazz Build Tools & Continuous Delivery Avancé
NightClazz Build Tools & Continuous Delivery AvancéNightClazz Build Tools & Continuous Delivery Avancé
NightClazz Build Tools & Continuous Delivery Avancé
 
20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven
 
Introduction à GWT - GTI780 & MTI780 - ETS - A09
Introduction à GWT - GTI780 & MTI780 - ETS - A09Introduction à GWT - GTI780 & MTI780 - ETS - A09
Introduction à GWT - GTI780 & MTI780 - ETS - A09
 
Nouveau look pour une nouvelle vie, version spéciale Ippon
Nouveau look pour une nouvelle vie, version spéciale IpponNouveau look pour une nouvelle vie, version spéciale Ippon
Nouveau look pour une nouvelle vie, version spéciale Ippon
 
Introduction à GWT - GTI780 & MTI780 - ETS - A08
Introduction à GWT - GTI780 & MTI780 - ETS - A08Introduction à GWT - GTI780 & MTI780 - ETS - A08
Introduction à GWT - GTI780 & MTI780 - ETS - A08
 

En vedette

Agile Tour Nantes 2011 - Bertrand pinel les projets au forfait - scrum but....
Agile Tour Nantes 2011 - Bertrand pinel   les projets au forfait - scrum but....Agile Tour Nantes 2011 - Bertrand pinel   les projets au forfait - scrum but....
Agile Tour Nantes 2011 - Bertrand pinel les projets au forfait - scrum but....Association Agile Nantes
 
CDI par la pratique
CDI par la pratiqueCDI par la pratique
CDI par la pratiqueIppon
 
Atelier TDD (Test Driven Development)
Atelier TDD (Test Driven Development)Atelier TDD (Test Driven Development)
Atelier TDD (Test Driven Development)Ippon
 
Offre 2015 numeriq_ippon
Offre 2015 numeriq_ipponOffre 2015 numeriq_ippon
Offre 2015 numeriq_ipponIppon
 
Présentation Ippon DGA Liferay Symposium 2011
Présentation Ippon DGA Liferay Symposium 2011Présentation Ippon DGA Liferay Symposium 2011
Présentation Ippon DGA Liferay Symposium 2011Ippon
 
Stateful is beautiful
Stateful is beautifulStateful is beautiful
Stateful is beautifulIppon
 
Présentation du retour d'expérience sur Git
Présentation du retour d'expérience sur GitPrésentation du retour d'expérience sur Git
Présentation du retour d'expérience sur GitIppon
 
Mule ESB Summit 2010 avec Ippon
Mule ESB Summit 2010 avec IpponMule ESB Summit 2010 avec Ippon
Mule ESB Summit 2010 avec IpponIppon
 
Formation GIT gratuite par ippon 2014
Formation GIT gratuite par ippon 2014Formation GIT gratuite par ippon 2014
Formation GIT gratuite par ippon 2014Ippon
 
Realtime Web avec Akka, Kafka, Spark et Mesos - Devoxx Paris 2014
Realtime Web avec Akka, Kafka, Spark et Mesos - Devoxx Paris 2014Realtime Web avec Akka, Kafka, Spark et Mesos - Devoxx Paris 2014
Realtime Web avec Akka, Kafka, Spark et Mesos - Devoxx Paris 2014Ippon
 
Agilité, n’oublions pas les valeurs
Agilité, n’oublions pas les valeursAgilité, n’oublions pas les valeurs
Agilité, n’oublions pas les valeursIppon
 
Nouveau look pour une nouvelle vie : HTML5, Spring, NoSQL et mobilité
Nouveau look pour une nouvelle vie : HTML5, Spring, NoSQL et mobilitéNouveau look pour une nouvelle vie : HTML5, Spring, NoSQL et mobilité
Nouveau look pour une nouvelle vie : HTML5, Spring, NoSQL et mobilitéJulien Dubois
 
Malakocktail 72 (été 2013)
Malakocktail 72 (été 2013)Malakocktail 72 (été 2013)
Malakocktail 72 (été 2013)Malakocktail
 
Accessibilité & e-recrutement
Accessibilité & e-recrutementAccessibilité & e-recrutement
Accessibilité & e-recrutementSébastien Delorme
 
DevFest Nantes 2016 - Spinnaker
DevFest Nantes 2016 - SpinnakerDevFest Nantes 2016 - Spinnaker
DevFest Nantes 2016 - SpinnakerStephan Lagraulet
 
20100225 Ippon Osgi Are You Ready
20100225 Ippon Osgi Are You Ready20100225 Ippon Osgi Are You Ready
20100225 Ippon Osgi Are You ReadyGeoffray Gruel
 

En vedette (17)

Agile Tour Nantes 2011 - Bertrand pinel les projets au forfait - scrum but....
Agile Tour Nantes 2011 - Bertrand pinel   les projets au forfait - scrum but....Agile Tour Nantes 2011 - Bertrand pinel   les projets au forfait - scrum but....
Agile Tour Nantes 2011 - Bertrand pinel les projets au forfait - scrum but....
 
CDI par la pratique
CDI par la pratiqueCDI par la pratique
CDI par la pratique
 
Atelier TDD (Test Driven Development)
Atelier TDD (Test Driven Development)Atelier TDD (Test Driven Development)
Atelier TDD (Test Driven Development)
 
Offre 2015 numeriq_ippon
Offre 2015 numeriq_ipponOffre 2015 numeriq_ippon
Offre 2015 numeriq_ippon
 
Présentation Ippon DGA Liferay Symposium 2011
Présentation Ippon DGA Liferay Symposium 2011Présentation Ippon DGA Liferay Symposium 2011
Présentation Ippon DGA Liferay Symposium 2011
 
Stateful is beautiful
Stateful is beautifulStateful is beautiful
Stateful is beautiful
 
Présentation du retour d'expérience sur Git
Présentation du retour d'expérience sur GitPrésentation du retour d'expérience sur Git
Présentation du retour d'expérience sur Git
 
Mule ESB Summit 2010 avec Ippon
Mule ESB Summit 2010 avec IpponMule ESB Summit 2010 avec Ippon
Mule ESB Summit 2010 avec Ippon
 
Formation GIT gratuite par ippon 2014
Formation GIT gratuite par ippon 2014Formation GIT gratuite par ippon 2014
Formation GIT gratuite par ippon 2014
 
Realtime Web avec Akka, Kafka, Spark et Mesos - Devoxx Paris 2014
Realtime Web avec Akka, Kafka, Spark et Mesos - Devoxx Paris 2014Realtime Web avec Akka, Kafka, Spark et Mesos - Devoxx Paris 2014
Realtime Web avec Akka, Kafka, Spark et Mesos - Devoxx Paris 2014
 
Agilité, n’oublions pas les valeurs
Agilité, n’oublions pas les valeursAgilité, n’oublions pas les valeurs
Agilité, n’oublions pas les valeurs
 
Pierre et Alexandre
Pierre et AlexandrePierre et Alexandre
Pierre et Alexandre
 
Nouveau look pour une nouvelle vie : HTML5, Spring, NoSQL et mobilité
Nouveau look pour une nouvelle vie : HTML5, Spring, NoSQL et mobilitéNouveau look pour une nouvelle vie : HTML5, Spring, NoSQL et mobilité
Nouveau look pour une nouvelle vie : HTML5, Spring, NoSQL et mobilité
 
Malakocktail 72 (été 2013)
Malakocktail 72 (été 2013)Malakocktail 72 (été 2013)
Malakocktail 72 (été 2013)
 
Accessibilité & e-recrutement
Accessibilité & e-recrutementAccessibilité & e-recrutement
Accessibilité & e-recrutement
 
DevFest Nantes 2016 - Spinnaker
DevFest Nantes 2016 - SpinnakerDevFest Nantes 2016 - Spinnaker
DevFest Nantes 2016 - Spinnaker
 
20100225 Ippon Osgi Are You Ready
20100225 Ippon Osgi Are You Ready20100225 Ippon Osgi Are You Ready
20100225 Ippon Osgi Are You Ready
 

Similaire à Présentation Rex GWT 2.0

Saas Libre
Saas LibreSaas Libre
Saas Libregrolland
 
Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et ...
Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et  ...Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et  ...
Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et ...Jasmine Conseil
 
Agile Tour Paris 2014 : Ma stack d'outils Agiles, tout un programme !, Cedric...
Agile Tour Paris 2014 : Ma stack d'outils Agiles, tout un programme !, Cedric...Agile Tour Paris 2014 : Ma stack d'outils Agiles, tout un programme !, Cedric...
Agile Tour Paris 2014 : Ma stack d'outils Agiles, tout un programme !, Cedric...ENSIBS
 
20081023 - Paris Vi Master STL TA - Initiation Maven
20081023 - Paris Vi Master STL TA - Initiation Maven20081023 - Paris Vi Master STL TA - Initiation Maven
20081023 - Paris Vi Master STL TA - Initiation MavenArnaud Héritier
 
SPA avec Angular et SignalR (FR)
SPA avec Angular et SignalR (FR)SPA avec Angular et SignalR (FR)
SPA avec Angular et SignalR (FR)Rui Carvalho
 
Panel de solutions javascript
Panel de solutions javascriptPanel de solutions javascript
Panel de solutions javascriptjp_mouton
 
Au coeur du framework .net 4.5.1
Au coeur du framework .net 4.5.1Au coeur du framework .net 4.5.1
Au coeur du framework .net 4.5.1Cellenza
 
Bbl microservices avec vert.x cdi elastic search
Bbl microservices avec vert.x cdi elastic searchBbl microservices avec vert.x cdi elastic search
Bbl microservices avec vert.x cdi elastic searchIdriss Neumann
 
Codedarmor 2012 - 03/04 - Android, What else?
Codedarmor 2012 - 03/04 - Android, What else?Codedarmor 2012 - 03/04 - Android, What else?
Codedarmor 2012 - 03/04 - Android, What else?codedarmor
 
Université de la performance
Université de la performanceUniversité de la performance
Université de la performancepkernevez
 
Vincent biret azure functions et flow (montreal)
Vincent biret azure functions et flow (montreal)Vincent biret azure functions et flow (montreal)
Vincent biret azure functions et flow (montreal)Vincent Biret
 
Cours Devops Sparks.pptx.pdf
Cours Devops Sparks.pptx.pdfCours Devops Sparks.pptx.pdf
Cours Devops Sparks.pptx.pdfboulonvert
 
L’informatique efficience
L’informatique efficienceL’informatique efficience
L’informatique efficienceMichel Bruchet
 
GtugDakar AppEngine, Gwt
GtugDakar AppEngine, GwtGtugDakar AppEngine, Gwt
GtugDakar AppEngine, Gwthkairi
 
Université de la performance - Devoxx France
Université de la performance - Devoxx FranceUniversité de la performance - Devoxx France
Université de la performance - Devoxx FranceMarc Bojoly
 
Angular développer des applications .pdf
Angular développer des applications .pdfAngular développer des applications .pdf
Angular développer des applications .pdfimenhamada17
 

Similaire à Présentation Rex GWT 2.0 (20)

Gwt final
Gwt finalGwt final
Gwt final
 
Saas Libre
Saas LibreSaas Libre
Saas Libre
 
Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et ...
Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et  ...Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et  ...
Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et ...
 
Agile Tour Paris 2014 : Ma stack d'outils Agiles, tout un programme !, Cedric...
Agile Tour Paris 2014 : Ma stack d'outils Agiles, tout un programme !, Cedric...Agile Tour Paris 2014 : Ma stack d'outils Agiles, tout un programme !, Cedric...
Agile Tour Paris 2014 : Ma stack d'outils Agiles, tout un programme !, Cedric...
 
20081023 - Paris Vi Master STL TA - Initiation Maven
20081023 - Paris Vi Master STL TA - Initiation Maven20081023 - Paris Vi Master STL TA - Initiation Maven
20081023 - Paris Vi Master STL TA - Initiation Maven
 
SPA avec Angular et SignalR (FR)
SPA avec Angular et SignalR (FR)SPA avec Angular et SignalR (FR)
SPA avec Angular et SignalR (FR)
 
Panel de solutions javascript
Panel de solutions javascriptPanel de solutions javascript
Panel de solutions javascript
 
Dev opsday case study
Dev opsday   case studyDev opsday   case study
Dev opsday case study
 
_JCVFr
_JCVFr_JCVFr
_JCVFr
 
Au coeur du framework .net 4.5.1
Au coeur du framework .net 4.5.1Au coeur du framework .net 4.5.1
Au coeur du framework .net 4.5.1
 
Bbl microservices avec vert.x cdi elastic search
Bbl microservices avec vert.x cdi elastic searchBbl microservices avec vert.x cdi elastic search
Bbl microservices avec vert.x cdi elastic search
 
Codedarmor 2012 - 03/04 - Android, What else?
Codedarmor 2012 - 03/04 - Android, What else?Codedarmor 2012 - 03/04 - Android, What else?
Codedarmor 2012 - 03/04 - Android, What else?
 
Université de la performance
Université de la performanceUniversité de la performance
Université de la performance
 
Vincent biret azure functions et flow (montreal)
Vincent biret azure functions et flow (montreal)Vincent biret azure functions et flow (montreal)
Vincent biret azure functions et flow (montreal)
 
Cours Devops Sparks.pptx.pdf
Cours Devops Sparks.pptx.pdfCours Devops Sparks.pptx.pdf
Cours Devops Sparks.pptx.pdf
 
L’informatique efficience
L’informatique efficienceL’informatique efficience
L’informatique efficience
 
Retour d'experience projet AngularJS
Retour d'experience projet AngularJSRetour d'experience projet AngularJS
Retour d'experience projet AngularJS
 
GtugDakar AppEngine, Gwt
GtugDakar AppEngine, GwtGtugDakar AppEngine, Gwt
GtugDakar AppEngine, Gwt
 
Université de la performance - Devoxx France
Université de la performance - Devoxx FranceUniversité de la performance - Devoxx France
Université de la performance - Devoxx France
 
Angular développer des applications .pdf
Angular développer des applications .pdfAngular développer des applications .pdf
Angular développer des applications .pdf
 

Présentation Rex GWT 2.0

  • 1. Open-REX - GWT 2.0 10/06/2010 David Laurent
  • 2. •  Cette présentation vous est fournie sous licence Creative Commons Attribution Share Alike •  Vous êtes libres : o  De reproduire, distribuer et communiquer cette création au public •  Selon les conditions suivantes : o  Paternité. Vous devez citer le nom des auteurs originaux mais pas d'une manière qui suggérerait qu'ils vous soutiennent ou approuvent votre utilisation de l'œuvre. o  A chaque réutilisation ou distribution de cette création, vous devez faire apparaître clairement au public les conditions contractuelles de sa mise à disposition sous licence identique Creative Commons Share Alike. o  Chacune de ces conditions peut e o  Rien dans ce contrat ne diminue ou ne restreint le droit moral de l'auteur ou des auteurs.
  • 3. Retour d'expérience •  Application comptable Carrefour o  Gestion de campagne marketing o  < 50 utilisateurs o  GWT basé sur GXT •  Application de vente FranceBillet / Fnac o  Guichet de vente du réseau de billetterie o  > 10000 utilisateurs / jour o  + de 1000 points de vente magasin o  Infrastructure hétérogène ≠ réseaux de commercialisation  navigateurs, tailles d'écran, écran guichet + écran client o  Réelles contraintes de performances o  Objectifs de charge de 100 000 réservations / heure o  GWT only •  Expérience utilisateur ... UI + Vitesse !
  • 4. And now ... :-) :-| :-( Points abordés •  Introduction / Performances / Architecture / Tests •  Compilation de bonnes pratiques Google IO + GTAC en // mises en oeuvre terrain •  Démos sur la base des samples du GWT SDK Google IO 2009 •  Measure in Milliseconds: Performance Tips for •  Google Web Toolkit Architecture: Best Practices For Architecting Your GWT App Google IO 2010 •  Measure in milliseconds redux: Meet Speed Tracer •  Architecting for performance with GWT •  Architecting GWT applications for production at Google Google Test Automation Conference 2009 •  Even better than the real thing : Lessons learned from testing GWT applications •  Selenium: to 2.0 and Beyond!
  • 5. Google Web Toolkit •  GWT Manifesto / les designs axioms (2006) o  L'expérience utilisateur est primordiale o  Simplifier le développement d'applications AJAX   Java debugging non-négociable, ... o  Les principaux composants doivent être utiles indépendamment   Widgets, RPC disponibles mais non obligatoires, ...   Le compilateur Java-to-Javascript est utile sans les libs gwt-user o  Interopère avec l'existant   Protocoles autres que RPC, pour coopérer les composants n'ont pas besoin d'un serveur spécifiquement GWT   Rendu avec CSS o  Faciliter la réutilisation de code AJAX   partage de composants et d'applications entières via JARs o  Optimiser de façon agressive les performances   Ne pas faire à l'exécution ce que l'on peut faire à la compilation o  Proposer la sécurité par défaut   Ne pas exposer les services automatiquement
  • 6. Des apps AJAX écrites en JAVA
  • 7. Exemples introductifs •  EntryPoint, Widgets, Module, GWT, Service RPC
  • 8. Exemples introductifs •  Handler, Event, ServiceAsync RPC
  • 9. Démos #1 •  Exemples du SDK o  Sample Hello o  Sample Mail (versions antérieures à GWT 2.0) o  Sample Mail (version 2.0 et au delà) •  InspectorWidget o  inspecter rapidement le nb de widget d'un état du DOM o  inspecter rapidement la nature des widgets
  • 11. #1 Concevoir pour les perfs •  La vitesse compte! •  Limites de temps de réponse o  0.1 secondes : impression d'instantanéité o  1 seconde : impression d'ininterruption o  10 secondes : maintient de l'attention •  Points de contention d'une application 1.  émarrage D 2.  écupération des données R 3.  alcul de rendu, Affichage C 4. nteractions utilisateur I
  • 14. #1 Récupération des données •  Pièges à éviter o  trop de requêtes HTTP o  récupérer des données dont on a pas besoin •  Principes o  concevoir des interfaces RPC avec précaution  interfaces côtés serveur adaptées à l'UI  les services génériques amènent à requêtes + données non nécessaires o  récupérer que ce dont on a besoin o  attention aux types qui sont sérialisés avec RPC o  grouper si possible les requêtes (batch requests)
  • 15. #1 Calcul de rendu, Affichage •  Pièges à éviter o  créer des composants trop tôt o  lorsque ce n'est pas nécessaire o  associer les données aux widgets •  Principes o  Utiliser le LazyPanel o  Savoir quand utiliser des widgets : events ? parent ? o  Comment éliminer des widgets  Utiliser UiBinder pour remplacer les widgets / HTML  Utiliser le pattern Flyweight pour listes, tables et tree o  UiBinder : templates d'HTML et de Widgets (+ simple)  utiliser HTML autant que possible  utiliser des CSS optimisées avec CssRessource  les règles CSS les + simples = + rapides
  • 16. #1 Interactions utilisateurs •  Une intéraction utilisateur doit être inférieure à 100 ms •  Handler trop long à répondre bloque le thread (unique) JS •  Evénements ne peuvent être intercepté si JS en exécution •  Deffered Command, Incremental Command •  Le Layout est plus rapide avec les LayoutPanels
  • 17. Démos #2 •  Exemples du SDK o  Sample Showcase (Chargement à la demande) o  Sample Simple RPC o  Sample Simple RPC modifié en deRPC •  Mesure des performances avec SpeedTracer o  Comparaison Simple RPC / deRPC o  à suivre en 2010 dans la version 2.1 :  SpeedTracer côté serveur et ...  SpeedTracer en Intégration Continue  identifier les regressions de perfs au commit
  • 18. #2 Architecture : Principes •  Le test logiciel ne consiste pas à écrire des tests mais ... des logiciels testables •  Quels sont les principes de structuration énoncés pour les applications GWT? •  Le principe fondamental : o  isolation / séparation des responsabilités
  • 19. #2 Bonne / mauvaise isolation
  • 20. #2 Mauvaise isolation + Code natif
  • 21. #2 Séparation des responsabilité
  • 22. #2 Model View Presenter
  • 23. #2 Model View Presenter Martin Fowler l'entomologiste du pattern énonce : o  Passive View : A screen and components with all application specific behavior extracted into a controller so that the widgets have their state controlled entirely by controller. ... A Passive View handles this by reducing the behavior of the UI components to the absolute minimum by using a controller that not just handles responses to user events, but also does all the updating of the view. This allows testing to be focused on the controller with little risk of problems in the view.” o  Presenter : The view of MVP is a structure of these widgets. It doesn't contain any behavior that describes how the widgets react to user interaction. The active reaction to user acts lives in a separate presenter object. The fundamental handlers for user gestures still exist in the widgets, but these handlers merely pass control to the presenter. The presenter then decides how to react to the event
  • 24. Démos #3 •  Exemples GWT Docs o  Sample Contacts 1 •  Webdriver / Selenium 2 •  Tests de charges serveur o  junit + contiperf + gwtrpc4j
  • 25. Future ... GWT 2.1 •  MVP refactorisation o  Model : RequestFactoryServlet, Record, SyncRequest o  Presenter : ActivityManager, Activity o  View : EditorSupport •  Améliorations Widget Library o  CellWidgets