GWT
GWT 2.0 : les nouvelles fonctionnalités
14/01/10
La version 2.0 de GWT (Google Web Toolkit) est sortie (j’ai un peu de retard à cause du boulot
) et avec elle de nombreuses améliorations, principalement pour améliorer le développement des applications. Cette nouvelle version est accompagnée d’un outil d’analyse des performances des sites : Speed Tracer, qui donne des pistes d’amélioration de l’application.
Development Mode
Dans les versions précédentes de GWT, pour tester une application en cours de développement, il y avait le Hosted Mode. C’est une application que l’on lançait depuis son IDE, qui démarrait un serveur Tomcat et qui permettait de tester “rapidement” sont application Web.
En GWT 2.0 le Hosted Mode est remplacé par le In-Browser Development Mode. On installe un plugin (le GWT Developer Plugin) dans son navigateur pour lui permettre de communiquer avec la JVM. Cela permet de bénéficier des différents plugins de son navigateur (Firebug, …) tout en permettant de modifier le code Java en live en rafraichissant la page Web.
UI Binder
Un des problèmes majeurs de GWT dans ses versions précédentes est la gestion de l’interface graphique depuis le code Java. La manipulation des Widgets (composants graphiques dans GWT) depuis le code Java pour leurs appliquer des styles CSS ou gérer des événements finit par donner du code difficile à maintenir.
GWT 2.0 apporte une solution plutôt élégante avec l’UI Binder, ça permet de lier un template XML à une classe Java. Au passage, les fichiers CSS et JavaScripts (librairies externes) référençaient depuis le template sont compressées par le compilateur GWT afin d’en réduire la taille finale.
Ainsi, on sépare l’interface graphique (dans les template .ui.xml) et la logique de l’application dans le code Java.
Code Splitting
Voilà une fonctionnalité attendue par beaucoup de développeurs GWT. Lorsque l’on développe une application GWT, on se rend vite compte que le fichier JavaScript généré prend vite du poids. Cette fonctionnalité découpe l’application en plusieurs fichiers JavaScript qui seront chargés uniquement lorsque c’est nécessaire en rajoutant quelques lignes de codes.
Layout par contraintes
Beaucoup d’applications Web qui se basent sur JavaScript utilisent des widgets qui sont positionnées dans la page grâce à des calculs qui peuvent ralentir l’affichage de l’application.
À l’inverse, GWT 2.0 génère le rendu final en utilisant le CSS de la page, celui-ci est généré à la compilation et non plus pendant l’affichage de la page ce qui réduit considérablement le temps de chargement.
ClientBundle
Je présentais dans mon billet : Guide d’optimisation de vos applications Web une méthode pour réduire le temps de chargement d’une page en utilisant des images sprites.
GWT est capable depuis la version 1.4 de faire tout cela automatiquement grâce aux ImageBundle. Toutes les images référencées sur disque étaient réunies en une seule est GWT utilisé la technique des sprites pour afficher les images convenablement. Avec GWT 1.5/1.6, un projet de l’incubateur permettait de faire la même chose avec à peu près n’importe quels fichiers.
GWT 2.0 introduit cette notion avec les ClientBundle. Par exemple, vous pouvez références tous vos fichiers CSS, GWT va alors les regrouper en un seul fichier, le minimiser et le rendre disponible pour être mis en cache. GWT gère aussi l’internationalisation ainsi vous pouvez gérer vos ClientBundle pour chaque locale.
Speed Tracer
Cette nouvelle version sort avec une extension pour Google Chrome : Speed Tracer. Cette extension analyse l’exécution de l’application Web en cours. Plutôt que de longues explications, voilà la vidéo de présentation de Speed Tracer.
Présentation de Speed Tracer
Story of Your Compile
SOYC fournit de nombreux détails sur la compilation de chaque partie de l’application GWT : la taille, les dépendances, temps de compilation… Cela permet d’orienter ses efforts pour diviser le code grâce Code Splitting
Traces dans IE 6
Internet Explorer ne fournit pas les traces lorsqu’une exception JavaScript est levée, ce qui peut être très embêtant lors d’une phase de debug sur ce navigateur…
Avec GWT 2.0 vous obtenez maintenant la trace obfusquée (ou non en fonction de la compilation choisie) JavaScript qui peut être convertie en trace Java avec nom de classe et numéro de ligne.
Conclusion
Ce billet ne présente que les améliorations les plus importantes, mais il y à de très nombreuses évolutions : optimisation du compilateur, évaluation directe des réponses RPC (réduction du temps de déserialisation), propriété de deffered binding conditionnelles, …
GWT devient de plus en plus un framework “productif” : la plupart des problèmes qu’un développeur rencontre lors du développement d’une application Web qui utilise JavaScript, sont résolus très simplement.
Pensez-vous que cette version 2.0 de GWT va permettre au framework de gagner des parts de marché face à ses concurrents comme Flex?
GWT 2.0 : le grand nettoyage
3/08/09
À chaque version de GWT (sauf la 1.7) des classes et des méthodes sont marquées comme dépréciées. Avec la prochaine version GWT 2.0, Google souhaite partir avec du code “propre” pour le développement des nouvelles fonctionnalités (hosted mode, drag&drop natif, widget Canvas et d’autres) en supprimant toutes ces classes et méthodes dépréciées.
Pensez donc à vérifier que vos applications ne contiennent pas des appels à du code dépréciés, car bientôt vous aurez une erreur à la place d’un warning. Sinon vous pouvez envoyer un message sur la discussion qui a annoncé la nouvelle.
Première utilisation du plugin Eclipse GWT
10/04/09
Suite à mon premier billet qui présentait Google Web Toolkit, je vais maintenant vous présenter la nouvelle version de GWT et comment créer un premier projet en utilisant le plugin Eclipse. Lire la suite de l’article »
Flex Builder 3 gratuit pour les chômeurs
10/04/09
Si vous êtes développeur, chômeurs et que vous souhaitez vous mettre au développement Flex, Adobe vous propose de télécharger Flex Builder 3 gratuitement.
Selon le site, cette offre a pour but de lutter contre la crise et est limitée dans le temps. L’objectif ne serait-il pas de convertir tous les développeurs ayant perdu leur travail à cause de la crise en disciples Adobe?
Après le coup de pub de Google avec la sortie de GWT 1.6, du support de Java dans GAE et d’un plugin Eclipse pour gérer le tout, c’est au tour de Adobe de pousser sa technologie Flex. On peut s’attendre à une réaction du même genre du côté Microsoft avec Silverlight.
Google : GWT version 1.6 et consorts
8/04/09
Ça y est, la version 1.6 officielle de GWT est enfin disponible après deux releases candidates (RC). Les nouveautés annoncées sont bien présentes. Parmi les nouveautés les plus importantes :
- Une refonte de l’architecture d’une application GWT pour qu’elle corresponde à celle d’un WAR. Cette nouvelle architecture est plus intuitive pour développer une application complète (testée avec le plugin Eclipse Cypal Studio).
- Une parallélisation du compilateur permet sur une machine multi-coeurs de diminuer sensiblement la durée de compilation. Maintenant, la compilation peut aussi être distribuée entre plusieurs machines.
- Une nouvelle approche de la gestion de événements par Handler. Pour avoir testé cette nouvelle implémentation, on se rapproche beaucoup plus de la gestion des événements Swing.
En marge de GWT, Google App Engine, la plateforme de déploiement des applications Web de Google, accepte désormais les applications Java dans un environnement Java 6. Cet environnement comprend les API suivantes : Java Data Objects (JDO), Java Persistence API (JPA) et JavaMail API.
Par ailleurs, Google a aussi développé un plugin Eclipse pour les développeurs GWT et Google App Engine. Ce plugin contient :
- Un assistant de création d’applications Web spécifique pour GWT ou Google App Engine.
- Un assistant de déploiement de votre application dans le cloud de Google.
- Une coloration syntaxique de votre code JSNI (JavaScript Native Interface). Très utile, surtout lorsqu’on à pris l’habitude de coder avec une coloration de commentaire…
Divers autres fonctionnalités sont disponibles avec ce plugin, mais je ne les ai pas encore testé.
Source : Introducing GWT 1.6 and friends.
GWT 1.6 : quoi de neuf ?
11/12/08
Ça y est la roadmap pour la version 1.6 de GWT a été publiée sur le blog officiel de GWT. Aucune date précise quand à la sortie de cette version, mais elle est annoncée pour le premier trimestre 2009.
Voilà les nouvelles fonctionnalités pour cette version :
- Nouvelle structure de déploiement : l’objectif étant de permettre un déploiement plus simple des WARs sur un serveur d’applications. Il s’agit surtout d’une restructuration dont voici la spécification.
- Jetty sera utilisé à la place de Tomcat (j’en parlais d’en un billet précédent). Une architecture plus modulable du hosted mode permettra de changer le serveur utilisé.
- Uniformisation des événements : les listeners actuels seront dépréciés et les nouveaux seront uniformisés pour tous les widgets.
- Intégration du DatePicker et du LazyPanel depuis l’incubateur GWT. Le DatePicker est comme son nom l’indique un widget permettant de sélectionner des dates (démo du DatePicker). Le LazyPanel permet de charger un composant uniquement lorsqu’on en a besoin (appel à la méthode setVisible (true)), ça permet de gagner du temps lors de l’initialisation de l’application.
- Optimisation des String : les StringBuilder seront optimisés pour chaque navigateurs grâce au deferred binding (optimisation à la compilation).
- Optimisation du compilateur GWT : réduction du temps de compilation.
Et celles qui sont prévues pour la suite :
- Découpage du code JavaScript généré en plusieurs fichiers. Le développeur pourra spécifier des points de césures qui permettront au compilateur de découper le code généré en plusieurs fichiers. Cela permettra évidemment d’éviter au client de télécharger toute l’application GWT en un seul fichier. Ceci lié au LazyPanel, les applications GWT devraient gagner en rapidité de chargement.
- Analyse du code compilé, appelée Story Of Your Compile (SOYC) : rapport permettant aux développeurs de savoir quelle classe génère le plus de code JavaScript.
- Sélection du navigateur à utiliser pour le hosted mode.
- Ui Binder : création des composants par déclaration, permet de séparer le layouting des composants (géré dans un fichier XML) de leur lien avec le modèle (géré dans le code Java).
- Client Bundle : généralisation du deferred binding (utilisé actuellement dans les Image Bundle) aux autres ressources statiques (css : CSSRessource, texte : TextRessource, image : ImageRessource).
- Optimisation du protocole RPC.
GWT : le futur hosted mode
9/12/08
Architecture : Out Of Process Hosted Mode (OOPHM)
La future version 2.0 de GWT nous annonce une grande amélioration du hosted mode. Pour rappel le hosted mode permet aux développeurs d’application GWT de pouvoir débugger leur code dans un navigateur embarqué sans avoir à passer par la compilation du Java en JavaScript.
La version actuelle du hosted mode ne permet pas de sélectionner le navigateur à utiliser (par défaut : IE sur Windows, Mozilla sur Linux et WebKit sur Mac). Cette nouvelle mouture permettra donc, à l’aide de plugins, de s’intégrer dans « tous » les navigateurs.
Ces plugins communiqueront par TCP avec la JVM de GWT et comme maintenant le code JavaScript ne sera pas généré ce qui permettra de débugger le code Java.
Source : DNG Consulting (regardez la vidéo ça donne envie).
GWT : librairie Open Flash Chart
23/10/08
La version 1.0 de la librairie Open Flash Chart GWT (OFCGWT) est disponible au téléchargement.
Cette librairie permet de simplement créer des Widgets contenant des graphes. Elle est basée sur la librairie Open Flash Chart 2 (affichage en Flash des graphes) et les données sont récupérées grâce à des requêtes GWT.
Pour voir ce qu’il est possible de faire grâce à cette librairie, voici une petite démonstration.
GWT 1.5.3 : améliore le support d’Android
22/10/08
Récemment la version 1.5.3 de GWT a été diffusée. Cette version améliore et corrige des problèmes avec le navigateur de Android, le système libre de Google pour les smartphones.
Voilà la liste des problèmes corrigés :
- Les requêtes RPC n’échouent plus sur le navigateur embarqué avec Android.
- Les TreeItem feuilles sont maintenant alignés avec les éléments frères non feuilles.
- Supprimer le dernier fils d’un TreeItem ne crée plus de marge sur la gauche.
- HTTPRequest n’utilise plus la méthode POST plutôt que GET sur certaines installations d’IE à cause d’une mauvaise sélection de XHR (XMLHttpRequest).
- Le compilateur empêche l’utilisation de variables locales dans des méthodes inline.
- getAbsoluteTop () / Left () ne retourne plus que des entiers.
- Time.valueOf () n’échoue plus sur l’analyse de « 08:00:00″ et n’accepte plus « 0xC:0xB:0xA ».
GWT 1.6 : Tomcat ou Jetty ?
21/10/08
Après la sortie de la version 1.5 de GWT, la roadmap de GWT 1.6 est en cours de préparation. Bruce Johnson, développeur en chef du projet GWT, demande à la communauté de développeurs de donner son avis sur le choix du prochain serveur du hosted mode : Tomcat (serveur actuel) ou Jetty.
Ayant plus travaillé avec Tomcat que Jetty je suis favorable au maintien du serveur actuel. Je reconnais cependant que Jetty est beaucoup plus rapide que Tomcat.
Si vous souhaitez participer au débat en donnant votre avis : http://groups.google.com/group/Google-Web-Toolkit/browse_thread/thread/604aec6b7460c133?hl=en&pli=1
Et vous qu’en pensez vous?
Commentaires récents