C’est revêtu de mon magnifique polo Ippon Technologies (voir ci-contre, en haut à droite) que j’ai participé à cette première édition du JUG Summer Camp, le 10 septembre 2010, à l’espace ENCAM de La Rochelle.
Cette conférence, organisée grâce au Poitou-Charente JUG et au sponsoring de SERLI, reprend les grands principes d’une réunion de JUG (i.e.. ce que l’on peut trouver à Nantes, Tours, Paris) :
- gratuité pour les participants
- sujets plutôt techniques
- savant mélange de décontraction et de qualité
- financement par le sponsoring
La particularité de ce JUG Summer Camp, c’est le changement d’échelle : on passe du format “une ou deux sessions, un soir par mois” à “une douzaine de sessions, sur une journée”. Il y avait donc toujours 2 conférences en parallèle : autant dire que le choix était très (très) difficile.
Je vais donc vous faire un résumé des sessions que j’ai suivi (d’ailleurs, par le plus grand des hasards, j’ai suivi un “track” complètement différent du Touilleur Express). Mon objectif est de vous proposer 1 article par jour pour chacune des sessions suivantes :
- GWT2 par Nicolas de Loof (dans cet article)
- OpenSocial par Tugdual Grall
- Hibernate par Emmanuel Bernard
- La Forge Logicielle par Nicolas de Loof
- Le MDA en 2010 par Jérome Benois
Commençons dès maintenant, avec la première session :
Cette présentation démarre comme un gros troll fort : “le web 2.0, c’est un bidule commercial”. Nicolas souligne – avec raison – qu’il ne faut pas oublier la plateforme sous-jacente : le “Web 2.0” représente une dizaine de modules dans le navigateur (CSS+JS+DOM+SVG…), plusieurs milliers de lignes de code… et donc autant de bugs. Il est donc très difficile de développer une application qui fonctionne sur l’ensemble des navigateurs du marché.
Même en imaginant qu’on dispose d’une équipe très compétente en Javascript, il faut aussi prendre en compte que les outils de développement Javascript sont très hétérogènes et ne sont pas disponibles sur l’ensemble des navigateurs (ex: Firebug).
En fait, Nicolas explique que l’ensemble des intervenants d’un projet sont à la recherche d’une solution :
-
l’architecte pour ne pas traiter les problèmes de bas niveau
-
le chef de projet car il ne dispose pas d’assez de compétences Javascript dans l’équipe pour tenir le planning
-
le développeur car il aime utiliser son IDE favori et son outillage habituel
GWT répond à ces problématiques en utilisant Java comme le langage de programmation puis en faisant une compilation du code Java vers du Javascript. On reprend globalement les principes de développement de Swing (Listener, Actions, etc.…).
Leitmotiv : “Javascript doit être considéré comme le nouveau ‘langage machine’ (= non cross-platform)”
Il évoque ensuite quelques fonctionnalités de GWT :
-
fonctionnement hors-ligne via Google Gear ou HTML5
-
multi-navigateurs *automatique* (une simple re-compilation suffit)
-
support du bouton “back”
-
localisation (l10n) et internationalisation (i18n) facilitées
Nicolas a étudié le résultat ultra optimisé produit par le “compilateur” GWT. Il en ressort qu’il modifie énormément la structure du code : passage de fragments en inline, extraction du code statique. Le compilateur lance ensuite la génération des permutations (i.e.. autant de fichiers Javascript générés que de navigateurs cibles). D’autres optimisations sont mises en oeuvre : les fichiers JS finalisés sont compressés, seuls les styles CSS utilisés sont inclus et enfin les images sont fusionnées sous la forme de bundles (aussi appelés CSS**sprites).
Le speaker nous fait ensuite un rappel sur les nouveautés de la version 2.0 de GWT. Une des fonctions les plus pratique est sans aucun doute, le mode OOPHM : il s’agit de remplacer l’ancien “hosted mode” (un browser limité permettant de tester sans compilation) par l’utilisation d’un vrai navigateur web + plugin pour tester. Ce nouveau mode permet notamment des tests sur des configurations de type Opera sous Windows, ce qui était impossible avant. Il permet également d’utiliser des outils comme Firebug et du réaliser un véritable profiling du code. Il évoque également runAsync pour le découpage en modules ou encore UIBinder pour marier l’EntryPoint GWT (Java) avec la super maquette du designer (HTML).
Un slide est bien sûr dédié aux concurrents :
-
Flex qui nécessite un runtime récent, ne dispose pas de typage fort, est propriétaire et nécessite d’apprendre un nouveau langage (AS3)
-
Silverlight : déploiement limité : support sur les OS mobiles ? sur Linux ?
-
JavaFX : sans commentaires 🙂
Nicolas a ensuite sorti sa boule de cristal pour essayer de nous lister les nouveautés de la prochaine version. Autant le dire tout de suite, avec Google, les boules de cristal fonctionnent assez mal : par exemple, le framework MVP “officiel” attendu depuis longtemps n’est toujours pas disponible sur le SVN ?! Idem pour la solution de databinding “BikeSheed” : ajoutée au trunk, jugée trop complexe puis finalement presque entièrement supprimée… Cependant, tout n’est pas négatif : le rapprochement de GWT avec SpringSource semble porter ses fruits via le projet Spring Roo et une meilleure intégration avec Maven (les milestones sont disponibles dans un repository Maven dédié) est dans les tuyaux !
A suivre : présentation OpenSocial par Tugdual Grall