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

PDF
Nouveau look pour une nouvelle vie : HTML5, Spring, NoSQL et Mobile
PDF
Seminaire Portail Open Source
PDF
Presentation Rex Methodes Agiles
PDF
Formation Spring Avancé gratuite par Ippon 2014
PDF
Web API & Cache, the HTTP way - Ippevent 10 Juin 2014
PDF
Scrum et forfait
PDF
Formation Usine Logicielle gratuite par Ippon 2014
PDF
JPA avec Cassandra, grâce à Achilles
Nouveau look pour une nouvelle vie : HTML5, Spring, NoSQL et Mobile
Seminaire Portail Open Source
Presentation Rex Methodes Agiles
Formation Spring Avancé gratuite par Ippon 2014
Web API & Cache, the HTTP way - Ippevent 10 Juin 2014
Scrum et forfait
Formation Usine Logicielle gratuite par Ippon 2014
JPA avec Cassandra, grâce à Achilles

Tendances (20)

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

En vedette (17)

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

Similaire à Présentation Rex GWT 2.0 (20)

PDF
Gwt oxiane-novae-lr
PPT
Présentation GWT et HTML 5 pour l'Offline
PPT
Gwt final
PPT
GWT Principes & Techniques
PDF
Gwt fast overview_v1
PPT
Cours du soir_gwt
PDF
Gwt intro-101
PDF
GWT, quoi de neuf? Présentation au GDG/GTUG Montréal - 26 juin 2013
PPT
Google Web Toolkit 1.5 Presentation Web Creative Common
PDF
TP GWT JDEV 2015
PPT
Google Web Toolkit - GWT
PDF
Uni.sherbrooke 2015 créez la meilleur application grâce à gwt, gwtp et j...
PPS
Client riche et nouvelles technologies
PDF
Presentation de gwt maven
PDF
Formation gwt
PPT
Gdd07 Gwt Dig
PPT
Dev Drink II (Flex by Navx)
KEY
Introduction aux RIA (Rich Internet Applications)
PPT
GtugDakar AppEngine, Gwt
PDF
Flex, une techno RIA incontournable pour les futures app web ?
Gwt oxiane-novae-lr
Présentation GWT et HTML 5 pour l'Offline
Gwt final
GWT Principes & Techniques
Gwt fast overview_v1
Cours du soir_gwt
Gwt intro-101
GWT, quoi de neuf? Présentation au GDG/GTUG Montréal - 26 juin 2013
Google Web Toolkit 1.5 Presentation Web Creative Common
TP GWT JDEV 2015
Google Web Toolkit - GWT
Uni.sherbrooke 2015 créez la meilleur application grâce à gwt, gwtp et j...
Client riche et nouvelles technologies
Presentation de gwt maven
Formation gwt
Gdd07 Gwt Dig
Dev Drink II (Flex by Navx)
Introduction aux RIA (Rich Internet Applications)
GtugDakar AppEngine, Gwt
Flex, une techno RIA incontournable pour les futures app web ?

Dernier (9)

PDF
Gestion des stocks et inventaire, SCM510 Col15
PPTX
Pourquoi j'ai arrêté Magento : neuf ans de transitions technologiques
PPTX
843555943-Introduction-a-l-Intelligence-Artificielle.pptx
PDF
SHAKA 2025 - Création d'Images en IA : Mode Expert Activé
PDF
Personnalisation de rubriques supplémentaires dans SAP Extended Warehouse Man...
PDF
Cours du langage HTML depuis initiation à la maîtrise
PDF
1.3.4-Handling-and-Safety-Instructions-FR-2024.pdf
PDF
Utilisation de la gestion des ressources dans SAP Extended Warehouse Manageme...
PDF
Gestion de la main-d’œuvre dans SAP Extended Warehouse Management, EWM125 Col26
Gestion des stocks et inventaire, SCM510 Col15
Pourquoi j'ai arrêté Magento : neuf ans de transitions technologiques
843555943-Introduction-a-l-Intelligence-Artificielle.pptx
SHAKA 2025 - Création d'Images en IA : Mode Expert Activé
Personnalisation de rubriques supplémentaires dans SAP Extended Warehouse Man...
Cours du langage HTML depuis initiation à la maîtrise
1.3.4-Handling-and-Safety-Instructions-FR-2024.pdf
Utilisation de la gestion des ressources dans SAP Extended Warehouse Manageme...
Gestion de la main-d’œuvre dans SAP Extended Warehouse Management, EWM125 Col26

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