Gdd07 Gwt Dig

3,530 views
3,464 views

Published on

Google Developer Day Paris : Presentation of Google Web Toolkit

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
3,530
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
390
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide
  • Enter Title of Presentation Here Google Confidential
  • Gdd07 Gwt Dig

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

    ×