Google Web Toolkit Facile, Efficace et Beau Didier Girard – Directeur Technique SFEIR 31 mai 2007
Sommaire Démonstrations Pourquoi GWT ? Comment GWT fonctionne ? Les fonctionnalités
DÉMONSTRATION
Démonstrations
Démonstrations http://www.gwt-keyboard-warrior.com/ http://code.google.com/webtoolkit/documentation/examples/desktopclone/demo.html http://www.gwtwindowmanager.org/demo/GwmDemo.html http://www.contactoffice.com/ http://www.ongwt.com/?q=demo
POURQUOI GWT ?
Les limites du web
Pas MDI
... ne simplifie pas le développement
... ne réduit pas les coûts
... ne s'intègre pas à la bureautique
... ne fonctionne pas en absence de réseau
... ne sait pas communiquer
... ne propose pas une bonne ergonomie
n’est pas très efficace
 
La solution ?
Ajax
Mise à jour partiel de l’écran Plus de clignotement « Page blanche »
Mise à jour des données asynchrones Pas besoin de rafraichir pour avoir des données fraiches.
Composants graphiques plus évolués Des composants tous plus beaux les uns que les autres
Serveur sans état Client avec état Meilleure scalability Base de données Données Application IHM+Métier + Session
Au début, Ajax c’est cool C’est beau Efficace Les clients en redemandent
Les difficultés Cross-navigateur Fuite mémoire Lourdeur du chargement Peu de « Docteur es Javascript » Pas de bons IDE Bug (javascript est un langage interprété) Pas de debug Sécurité …
La solution Développer le prototype de l’application Vous vous faites plaisir Tout le monde vous admire
La solution Lorsque le client signe, changer de projet :-)
Ou…
Passer à GWT
COMMENT GWT FONCTIONNE ?
L’objectif Permettre de développer simplement, des applications  Cross navigateurs Efficaces Stables Dans un environnement amical pour les développeurs Support des IDE, Debugging, refactoring, typage fort,… Avec une philosophie : « L’utilisateur en premier, le développeur en deuxième » - Bruce Johnson
L’approche Développer en Java Compiler le Java en Javascript/CSS
Hello World Démonstration
Architecture Browser IE, Firefox, Safari, Opera RWA in Java Java Runtime Library java.lang java.util Java.io GWT GUI Library GWT Compiler Code de l’application Panels Popup Stack Absolute Vertical … Widgets Button  MenuBar Radio  Tree Check  Table TextArea  … . Javascript Application GWT Runtime 100Ko
TOUR D’HORIZON
Des widgets « 100% java » Démonstration (Kitchen Sink)
Support de l’historique « Single Page Interface », mais gestion de l’historique ! Démonstration (Kitchen Sink) Le code History. addHistoryListener(myCommand);
Support de RPC  (JSON/XML-RPC) AJAX est d’abord une histoire de requêtes asynchrones Avec GWT, c’est simple !
Support de I18N/L10N Puissant et original
Absolute Panel Permet de développer efficacement Un vrai bonheur ! Il y a bien d’autres Panel : Grid, Row, Flex, Vertical, Tab,…
Support multi-navigateur et multi-plateforme Et ça marche…
Support des CSS Tous les composants GWT supportent nativement les CSS
Support du debug Démonstration
Support de javascript JSNI, une API astucieuse Beaucoup de bibliothèques de javascript populaires sont déjà « wrappées » : scriptaculous, yui, timeline,… Démonstration public static native void alert(String msg) /*-{  $wnd.alert(msg);  }-*/;
Optimisation du code Le javascript est optimisé durant la compilation Seul le javascript nécessaire est téléchargé par le navigateur Javascript pour la plateforme cible Seule l’API effectivement utilisée est téléchargée
Très bonne scalabilité Avec GWT les serveurs sont stateless Il est donc très facile d’augmenter la puissance CPU des serveurs Plus de « session affinity »
Des outils GWT est supporté par tous les grands IDE Java : Eclipse, NetBeans, IntelliJ IDEA, Jdeveloper,… Publicité : Mon outil préféré est GWT Designer
La communauté GWT Plus de 1000000 téléchargements Plus de 9000 inscrits sur le forum Des ouvrages De nombreux articles/tutoriaux Des formations Des blogs
GWT 1.4 GWT 1.4 arrive avec son lot de nouveautés Par exemple : ImageBundle (téléchargement optimisé d’images), une espèce de base d’images Passage de 12 requêtes HTTP à une seule… ClippedImage timeIcon = new ClippedImage("icons.png", 22, 0, 22, 22);  http://roberthanson.blogspot.com/2007/02/gwt-clippedimage-optimizing-image.html
GWT Gears Gears permet d’accéder à une base local depuis javascript. Il existe une API pour GWT : http://code.google.com/p/gwt-google-apis/ Demo  Google Confidential
GWT est efficace Il est couramment admis que développer avec GWT permet d’être 5 fois plus efficace Refactoring Debugging Serveur Stateless Cross-navigateurs I18N Hosted mode JSNI
LES IDEES REÇUES
Java est nécessaire sur le serveur Non, GWT n’impose pas de technologie sur le serveur GWT est simplement plus pratique à utiliser avec Java sur le serveur
Le code Javascript généré est difficile à débugger Il est possible, via les options du compilateur, d’avoir un code javascript lisible.
Les applications GWT sont lourdes Le code généré est optimisé et gzippable KitchenSink pèse autour de 60Ko !
GWT ne supporte pas l’existant Faux Il est tout à fait possible d’intégrer des composants GWT dans une page HTML classique.
GWT c’est des applets Des applets, non merci :-) Le code java est compilé en javascript durant la phase de développement !
GWT est propriétaire Mais non GWT est sous licence opensource Apache depuis la version 1.3 (12/2006)
MISC Version de JDK ? Intégration avec Spring ? Intégration avec Hibernate ?
Ressources GWT : http://code.google.com/webtoolkit/ Forum pour les développeurs : http://groups.google.com/group/Google-Web-Toolkit Blog officiel :  http://googlewebtoolkit.blogspot.com/ onGWT, Tracking news on GWT :  http://www.ongwt.com/ GWT 1.4: http://code.google.com/p/google-web-toolkit/wiki/DevPlan_1_4
Conclusion GWT, c’est facile, efficace et beau ! Merci Bruce, Merci Google !
Didier Girard Directeur Technique de SFEIR (200 développeurs) Membre de l’OSSGTP (OpenSourceur Parisien) Activités diverses Code en java depuis 1995 et en java coté serveur depuis 1997 Créateur de  http://abu.cnam.fr  (1994) : bibliothèque numérique collaborative Créateur de  www.application-servers.com  (2000) : site d’actualités sur Java/J2EE Créateur de Struts-Layout (2001) : projet opensource java Créateur de blog.application-servers.com (2003) : plateforme de blogs Créateur de Rialto (2005) : projets opensource Ajax Créateur de  www.onGWT.com  (2007) : blog sur GWT Google Confidential
 

Gdd07 Gwt Dig

  • 1.
    Google Web ToolkitFacile, Efficace et Beau Didier Girard – Directeur Technique SFEIR 31 mai 2007
  • 2.
    Sommaire Démonstrations PourquoiGWT ? Comment GWT fonctionne ? Les fonctionnalités
  • 3.
  • 4.
  • 5.
    Démonstrations http://www.gwt-keyboard-warrior.com/ http://code.google.com/webtoolkit/documentation/examples/desktopclone/demo.htmlhttp://www.gwtwindowmanager.org/demo/GwmDemo.html http://www.contactoffice.com/ http://www.ongwt.com/?q=demo
  • 6.
  • 7.
  • 8.
  • 9.
    ... ne simplifiepas le développement
  • 10.
    ... ne réduitpas les coûts
  • 11.
    ... ne s'intègrepas à la bureautique
  • 12.
    ... ne fonctionnepas en absence de réseau
  • 13.
    ... ne saitpas communiquer
  • 14.
    ... ne proposepas une bonne ergonomie
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
    Mise à jourpartiel de l’écran Plus de clignotement « Page blanche »
  • 20.
    Mise à jourdes données asynchrones Pas besoin de rafraichir pour avoir des données fraiches.
  • 21.
    Composants graphiques plusévolués Des composants tous plus beaux les uns que les autres
  • 22.
    Serveur sans étatClient avec état Meilleure scalability Base de données Données Application IHM+Métier + Session
  • 23.
    Au début, Ajaxc’est cool C’est beau Efficace Les clients en redemandent
  • 24.
    Les difficultés Cross-navigateurFuite mémoire Lourdeur du chargement Peu de « Docteur es Javascript » Pas de bons IDE Bug (javascript est un langage interprété) Pas de debug Sécurité …
  • 25.
    La solution Développerle prototype de l’application Vous vous faites plaisir Tout le monde vous admire
  • 26.
    La solution Lorsquele client signe, changer de projet :-)
  • 27.
  • 28.
  • 29.
  • 30.
    L’objectif Permettre dedévelopper simplement, des applications Cross navigateurs Efficaces Stables Dans un environnement amical pour les développeurs Support des IDE, Debugging, refactoring, typage fort,… Avec une philosophie : « L’utilisateur en premier, le développeur en deuxième » - Bruce Johnson
  • 31.
    L’approche Développer enJava Compiler le Java en Javascript/CSS
  • 32.
  • 33.
    Architecture Browser IE,Firefox, Safari, Opera RWA in Java Java Runtime Library java.lang java.util Java.io GWT GUI Library GWT Compiler Code de l’application Panels Popup Stack Absolute Vertical … Widgets Button MenuBar Radio Tree Check Table TextArea … . Javascript Application GWT Runtime 100Ko
  • 34.
  • 35.
    Des widgets « 100%java » Démonstration (Kitchen Sink)
  • 36.
    Support de l’historique« Single Page Interface », mais gestion de l’historique ! Démonstration (Kitchen Sink) Le code History. addHistoryListener(myCommand);
  • 37.
    Support de RPC (JSON/XML-RPC) AJAX est d’abord une histoire de requêtes asynchrones Avec GWT, c’est simple !
  • 38.
    Support de I18N/L10NPuissant et original
  • 39.
    Absolute Panel Permetde développer efficacement Un vrai bonheur ! Il y a bien d’autres Panel : Grid, Row, Flex, Vertical, Tab,…
  • 40.
    Support multi-navigateur etmulti-plateforme Et ça marche…
  • 41.
    Support des CSSTous les composants GWT supportent nativement les CSS
  • 42.
    Support du debugDémonstration
  • 43.
    Support de javascriptJSNI, une API astucieuse Beaucoup de bibliothèques de javascript populaires sont déjà « wrappées » : scriptaculous, yui, timeline,… Démonstration public static native void alert(String msg) /*-{ $wnd.alert(msg); }-*/;
  • 44.
    Optimisation du codeLe javascript est optimisé durant la compilation Seul le javascript nécessaire est téléchargé par le navigateur Javascript pour la plateforme cible Seule l’API effectivement utilisée est téléchargée
  • 45.
    Très bonne scalabilitéAvec GWT les serveurs sont stateless Il est donc très facile d’augmenter la puissance CPU des serveurs Plus de « session affinity »
  • 46.
    Des outils GWTest supporté par tous les grands IDE Java : Eclipse, NetBeans, IntelliJ IDEA, Jdeveloper,… Publicité : Mon outil préféré est GWT Designer
  • 47.
    La communauté GWTPlus de 1000000 téléchargements Plus de 9000 inscrits sur le forum Des ouvrages De nombreux articles/tutoriaux Des formations Des blogs
  • 48.
    GWT 1.4 GWT1.4 arrive avec son lot de nouveautés Par exemple : ImageBundle (téléchargement optimisé d’images), une espèce de base d’images Passage de 12 requêtes HTTP à une seule… ClippedImage timeIcon = new ClippedImage("icons.png", 22, 0, 22, 22); http://roberthanson.blogspot.com/2007/02/gwt-clippedimage-optimizing-image.html
  • 49.
    GWT Gears Gearspermet d’accéder à une base local depuis javascript. Il existe une API pour GWT : http://code.google.com/p/gwt-google-apis/ Demo Google Confidential
  • 50.
    GWT est efficaceIl est couramment admis que développer avec GWT permet d’être 5 fois plus efficace Refactoring Debugging Serveur Stateless Cross-navigateurs I18N Hosted mode JSNI
  • 51.
  • 52.
    Java est nécessairesur le serveur Non, GWT n’impose pas de technologie sur le serveur GWT est simplement plus pratique à utiliser avec Java sur le serveur
  • 53.
    Le code Javascriptgénéré est difficile à débugger Il est possible, via les options du compilateur, d’avoir un code javascript lisible.
  • 54.
    Les applications GWTsont lourdes Le code généré est optimisé et gzippable KitchenSink pèse autour de 60Ko !
  • 55.
    GWT ne supportepas l’existant Faux Il est tout à fait possible d’intégrer des composants GWT dans une page HTML classique.
  • 56.
    GWT c’est desapplets Des applets, non merci :-) Le code java est compilé en javascript durant la phase de développement !
  • 57.
    GWT est propriétaireMais non GWT est sous licence opensource Apache depuis la version 1.3 (12/2006)
  • 58.
    MISC Version deJDK ? Intégration avec Spring ? Intégration avec Hibernate ?
  • 59.
    Ressources GWT :http://code.google.com/webtoolkit/ Forum pour les développeurs : http://groups.google.com/group/Google-Web-Toolkit Blog officiel : http://googlewebtoolkit.blogspot.com/ onGWT, Tracking news on GWT : http://www.ongwt.com/ GWT 1.4: http://code.google.com/p/google-web-toolkit/wiki/DevPlan_1_4
  • 60.
    Conclusion GWT, c’estfacile, efficace et beau ! Merci Bruce, Merci Google !
  • 61.
    Didier Girard DirecteurTechnique de SFEIR (200 développeurs) Membre de l’OSSGTP (OpenSourceur Parisien) Activités diverses Code en java depuis 1995 et en java coté serveur depuis 1997 Créateur de http://abu.cnam.fr (1994) : bibliothèque numérique collaborative Créateur de www.application-servers.com (2000) : site d’actualités sur Java/J2EE Créateur de Struts-Layout (2001) : projet opensource java Créateur de blog.application-servers.com (2003) : plateforme de blogs Créateur de Rialto (2005) : projets opensource Ajax Créateur de www.onGWT.com (2007) : blog sur GWT Google Confidential
  • 62.

Notes de l'éditeur

  • #2 Enter Title of Presentation Here Google Confidential