Présentation à Codedarmor le 7 février 2012 par Gregory Le Bonniec de la société Zenika sponsor officiel de la soirée.
Il y a plus de 5 ans, GWT amena une approche singulière dans le développement Web : développer des applications javascript en java !? GWT permet de développer en Java aussi bien la couche serveur (ce qui est classique) que la couche cliente (ça l'est beaucoup moins). En effet, à l'aide d'un compilateur Java/Javascript, GWT permet de développer rapidement des applications web riches en simplifiant la construction IHM ainsi que les échanges client/serveur... les futurs développement HTML5 auront certainement besoin de GWT ...
2. Moi en bref
• Grégory Le Bonniec
• Directeur Zenika Ouest
• Ancien IUT & ENSSAT Lannion
• Depuis plus de 10 dans le monde Java
de Swing à GWT en passant par les MOM et WS …
3. Zenika en bref
• Cabinet d’architecture technique
• Développement
• Conseil
• Formation
• Java mais pas que
Scala, AMQP, Scrum …
• Sponsor JUGs / Conférence What’s
Next / Conférence BreizhCamp
6. Javascript
Javascript est un langage puissant mais …
• Respect des standards à géométrie variable
• Langage difficile à maîtriser :
typage, débogage …
• Fuite mémoire difficile à éviter
14. Mode compilé
• Pay for what you use
• Compatibilité inter-navigateurs
• Optimisations multiples
• Taille
• Performances
Mais compilation relativement longue …
15. Mode développ.
• Mode interprété
• Communication IDE / Navigateur (via un
plugin)
• Permet de tester les développement « en
live »
Mais performances dégradées …
18. UIBinder
• Java n’est pas un langage idéal pour la
description d’IHM
• UIBinder a permis de pallier ce problème
• Principes d’UIBinder
• Description XML du look d’un coté
• Comportement de l’IHM via du code Java
• Liaison différée entre description et comportement
24. Mise en œuvre
• Coté client
• Définition d’une interface synchrone
• Définition d’une interface asynchrone
• Coté serveur
• Implémentation de l’interface synchrone
25. Asynchrone ?
• GWT force le développeur a implémenté des
appels serveur asynchrones
• Plus complexe
• Plus verbeux
• Alors pourquoi ?
Les navigateurs sont « mono-threadés » toute
action est bloquante coté client
29. Oui mais …
qu’on aime JS ou pas…HTML5 n’a d’intérêt que
couplé à Javascript !
Il faudra des outils pour mettre en œuvre
HTML5 (non ça n’est pas plus magique que
HTML4 !)
GWT est un des candidats
30. Local Storage
• Stockage de données persistantes coté client
• Local Storage vs. Cookie
• Plusieurs Mo vs. Quelques Ko
• Non transmis au serveur vs. Transmis à chaque
requête
• Pourquoi ?
• Performances
• Offline
31. Canvas
• Canvas = Zone graphique de dessin
• Graphique 2D supporté par l’ensemble des
navigateurs
• Graphique 3D à venir …
32. Draggable
• DnD Pas vraiment une nouveauté dans le
monde Web
• HTML5 apporte une solution native (enfin !)
34. Boite à outils
• GWT n’est pas un framework
• GWT est une plateforme de développement
• GWT fournit de nombreux outils
• Optimisation des ressources (RessourceBundle)
• Chargement de données volumineuses
(IncrementalCommand)
• Modularité de l’application (Code Splitting)
• …
35. IncrementalCommand
• Afficher des données volumineuses dans un
navigateur se conclut le plus souvent par une
page blanche
• GWT fournit la classe IncrementalCommand
pour afficher « proprement » ce type de
données
37. Resources Web
• Une application Web (GWT ou autre) fournit
et manipule un ensemble de ressources
• Problématiques liées à la gestion de
ressources
• Overhead réseau
• Gestion du cache (ie. code 304 ("Not Modified"))
• Pool de connexions
• Inadéquation entre référence et emplacement physique
lors des développements
38. GWT à la rescousse
• ClientBundle a pour objectif d'assurer la
gestion des ressources statiques
• ClientBundle gère plusieurs types de
ressources
• ImageResource : Images (ie. PNG, GIF, JPEG …)
• CssResource : CSS
• DataResource : Données binaires (ie. PDF, Doc …)
• TextResource/ExternalTextResource : Ressources
texte interne (ie. XML, properties …)
40. Et Javascript ?
• Il est possible d’appeler du Javascript depuis
GWT
• JSNI = bridge Java/Javascript
• Peut être utile mais
• Fuite mémoire
• Compatibilité inter-navigateurs
• …
44. GWT et idées reçues
• Un développeur GWT n’est pas un
développeur Web
• On développe une application GWT
comme une application client lourd
45. GWT ou pas ?
Idéal pour une application web
• Application riche
• Simple…après quelques semaines !
• Rapide
Mais
• API minimaliste
• Verbeux comparé à JS