GWT, Quoi de neuf Doc' ?

Les 12 et 13 Décembre 2013 se tenait à San Fransisco une conférence sur GWT, “GWT.create”. Une seconde conférence s’est déroulée les 17 et 18 Décembre à Francfort avec peu ou prou les mêmes interventions. C’est l’occasion de savoir ce que réserve le committee GWT pour le futur du framework.

Avant de rentrer dans le vif du sujet, rappelons un peu où en est rendu GWT.

Etat des lieux

Google s’est désisté officiellement du projet et en a donné la responsabilité à un comité (The GWT Steering Committee) dans le but de continuer de promouvoir le framework de Google.

On y trouve Vaadin (qui a construit tout le rendu de ses applications sur GWT), Sencha (Ext JS, GXT), RedHat (Errai) mais aussi Google par la présence de Ray Cromwell et Daniel Kurka.  Ces sociétés ont toutes bâti certaines de leurs applications autour du framework. Il est d’ailleurs précisé : “Affiliations are listed for identification purposes only; steering committee members do not represent their employers or academic institutions”. Quand on voit ce qu’elles ont pu investir dans GWT, on peut se douter qu’ils ne sont pas là par hasard.  On remarquera aussi la présence de Thomas Broyer qui a dû aider un paquet de développeurs GWT sur tous les forums de discussion du monde 😉 Une RoadMap a même été définie et que l’on pourra retrouver ici. Je vais résumer les objectifs majeurs :

  • Plus de rapidité dans la compilation, développement…
  • Support Java 7, 8
  • Découpage du projet pour une meilleure intégration Maven
  • Amélioration du rendu sur Mobile
  • Correction des TOP 100 bugs GWT
  • Déprécation de IE6, 7 et 8

Ça tombe bien, Ray Cromwell est un spécialiste de l’optimisation JS. Daniel Kurka (fraîchement embauché par Google) est l’auteur de mgwt (GWT pour mobile) et gwt-phonegap. Et Thomas Broyer a énormément travaillé sur le découpage de GWT pour une meilleure intégration Maven. On peut penser à juste titre que la roadmap établie n’est pas un simple écran de fumée et que les choses vont encore évoluer du côté du framework front-end Java.

Côté version, on peut trouver la 2.6.0 en RC-1 avec notamment le support Java 7, la dépréciation de IE6/7, la fin du Dev Mode sur Chrome (au profit du Super Dev Mode) et autres modifications. GWT 3.0 est quand à lui annoncé courant printemps 2014, autour du prochain Google I/O.

GWT.create

Revenons maintenant sur la conférence. Elle est accueillie par Vaadin et s’est tenu sur deux jours. Le premier jour des conférences est essentiellement constitué de talks par des développeurs de Google et le deuxième, de talks présentés par les autres sponsors de GWT tels que Vaadin, Sencha et RedHat.

Après un rapide coup d’oeil à l’agenda de la conférence (que l’on trouvera ici), je trouve les talks du premier jour bien plus intéressants pour l’avenir de GWT. Les plus chanceux auront donc pu suivre des conférences sur le mobile avec la très bonne (indispensable ?) libraire mgwt, un talk sur le compilateur avec optimisation, avenir… ou encore l’intégration complète de CSS3 dans GWT. Le deuxième jour quant à lui ressemble plus à la présentation des frameworks bâtis autour de GWT propulsés par Vaadin et Sencha. Ainsi se sont enchaînés une introduction à Vaadin, une introduction à GXT ou encore les applications mobiles réalisées avec Vaadin.

Ce deuxième jour montre bien que ces sociétés ne veulent surtout pas que GWT s’arrête dans son élan et leur business avec. On pourra rappeler que les conférences sont accueillies par Vaadin et qu’on peut aussi lire sur leur site que le support de GWT fait partie de leur support commercial  pour finir d’être convaincu qu’ils ne font pas ça que pour la beauté de l’open source.

Du Web toolkit dans mon mobile

Le début d’année sera mobile pour GWT ou ne sera pas ! Après l’embauche de Daniel Kurka chez Google, le créateur de la libraire mgwt participe à l’évènement et compte bien envoyer GWT dans le monde du mobile. Ce n’est pas très surprenant, si on regarde le trafic qui passe par un mobile, il est plus que nécessaire d’améliorer la vitesse, le développement et le rendu des applications GWT sur mobile. Et pour cela, on s’intéressera bien sûr au talk de Daniel Kurka sur mgwt et gwt-phonegap. On peut trouver ses slides ici.

mgwt est une libraire qui permet de développer une application GWT entièrement compatible avec un rendu sur mobile et gwt-phonegap quant à lui est une librairie qui permet de transformer une application GWT en application mobile native déployable depuis un app store. Elle est bien sûr issue du projet phonegap d’Apache. Le duo mgwt et gwt-phonegap permet de développer une application web compatible mobile et déployable sur n’importe quel app store.

Il note que la conception initiale de l’application est importante. Pour l’utilisateur, les principales différences entre une application web et une application mobile va se trouver dans la densité d’information affiché sur le mobile, la taille des composants (pour être sélectionnable avec le doigt) et la navigation de l’application. Il met en avant l’utilisation du pattern MVP (Model View Presenter) où seule la View sera différente entre un développement mobile et WEB. Mais aussi de développer des presenter de petite taille et réutilisables. Ainsi dans une barre de navigation chaque sous-navigation pourra avoir son propre presenter qui permettra un découpage complet de la barre et un affichage réduit sur mobile.

Il termine son talk sur ce qui, pour lui, manque à GWT et vers quoi il doit se tourner. On pourra ainsi trouver:

  • L’optimisation de la compilation notamment en arrêtant d’avoir comme objectif un rendu fonctionnant sur tous les navigateurs mais en visant les navigateurs qui fonctionnent aujourd’hui (en retirant notamment IE6/7/8).
  • Amélioration du development mode en allant vers l’utilisation du super dev mode et du débugage de l’application dans le Chrome dev tools.
  • Intégrer CSS3 dans GWT, actuellement le CSS de GWT est basé sur CSS2.
  • Améliorer les performances au runtime et nettoyer GWT du code legacy.

Je trouve ça très ambitieux mais quand on voit la qualité de travail qui a permis de développer mgwt, on peut croire que le Mr ne lance pas des paroles en l’air.

CSS3 dans GWT, enfin !

Un autre projet parallèle à GWT est sur le point d’intégrer GWT avec GSS, le potentiel futur CSS3 de GWT, développé et présenté par Julien Dramaix, son auteur, avec Daniel kurka et Matthew Dempsky : The GWT open source project CSS3 meets GWT with GSS

GSS permet l’intégration des closure-stylesheets et du support de CSS3 dans GWT. Closures-stylesheets permet d’ajouter aux feuilles CSS des  variables, fonctions, conditions, et mixins. GWT se chargera de compiler le tout en CSS. Chose très intéressante, GSS permettra de détecter les erreurs de CSS, de planter la compilation et de remonter tout ça sous forme d’erreur au développeur. Pour se rendre compte des possibilités de closure-stylesheets, je vous laisse aller découvrir le projet ici.

GSS fonctionnera comme CSSRessources actuel de GWT et supportera donc les @sprite, @eval… de CSSResources. On peut découvrir sur la fin que la librairie est déjà bien avancée et qu’il ne manque plus que les conditions basées sur les permutations (user agent, locale…). Si tout se passe bien, on trouvera tout ça dans GWT 3.0. On peut trouver les démos du talk ici et .

Tester, c’est douter

Testing GWT Apps, présenté par Erik Kuefler auteur de GWTMockito.

Les tests sont toujours compliqués dans GWT et vous connaissez sûrement l’erreur classique “ERROR: GWT.create() is only usable in client code!”. Pour résoudre ce problème, GWTTestCase a été mis en place et permet de tester tous les composants graphique de votre application. Le petit problème, c’est que les tests de GWTTestCase sont horriblement longs à exécuter et qu’arrivé au centième test de votre énième page, vous allez très vite les désactiver.

Mais avec son framework GWTMockito, il règle ce problème en adaptant le très célèbre framework de mock, Mockito, et le rendant utilisable avec GWT. Je vous laisse aller voir sa présentation ici et vous rendre compte que vous auriez aimé le connaître beaucoup plus tôt. Et pour finir sur une note positive, le Mr travaille sur un framework pour remplacer l’eventBus de GWT, SuperEventBus. Ça donne envie !

Vous reprendrez bien un petit café après tout ça

Beaucoup d’autres talks très intéressants ont eu lieu. Notamment un talk sur la sécurité avec “RIA security based on OWASP Top 10”, c’est très souvent quelque chose que l’on minimise. Turducken – A method to ‘divide-and-conquer’ large GWT apps with multiple teams, talk sur des méthodes de développement pour de larges applications multi équipes. Ou encore la comparaison des mécanismes de transport “Comparing GWT Transport Mechanisms”. Vous pouvez retrouver l’ensemble des slides des talks ici et en suivant le twitter de gwt.create, vous serez avertis de la mise en ligne des formats animés en couleurs sur YouTube.

La conférence est pour moi assez positive, GWT est un framework mature et on n’attend plus de grosses nouveautés de sa part. Mais l’intégration CSS3, la gestion mobile tablette et l’amélioration du cycle de vie de l’application (développement, compilation, test…) sont clairement des choses qui peuvent et doivent continuer d’évoluer. GWTMockito ou encore SuperEventBus sont deux librairies qui vont améliorer le framework et rendre notre vie plus agréable.