20 juin 2008

Atelier RIA : Gwt vs SilverLight vs Flex

Valtech organisait jeudi une journée atelier RIA, une formule originale permettant de comparer sur le terrain Gwt, Flex et SilverLight. Ces trois noms dominent en effet (pour l’instant ?) le monde très actif des Rich Internet Applications.

Petite mise au point pour commencer : une Application Internet Riche n’est pas juste une application web bourrée d'effets visuels. Ce n’est pas non plus une application utilisant Ajax pour en améliorer l’ergonomie ou la réactivité.

Une RIA c’est une application qui a été conçue pour déporter sur le client la couche présentation, tout en conservant sur le serveur des services métier de haut niveau, autant que possible sans état. C’est donc à mis chemin entre le client lourd + serveur de données et le client léger + serveur web de présentation. Le serveur devient alors un conteneur de services métier, ce qui permet de converger avec l'approche SOA.Un exemple parmis d'autres, parleys.com (en version Flex ou Gwt) : le serveur héberge les vidéos et les indexes, toutes la mise en page étant gérée sur le client.

Bien sur, cela s’accompagne souvent d’effets graphiques haut de gamme pour se démarquer des applications web devenues trop statiques. Il faut bien un moyen d'accrocher l'internaute !


Quelle est la difficulté sur ce type d'applications ?

  1. la mutliplicité des technologies qu'on doit couvrir pour une même application : HTML + CSS + DOM + JavaScript + HTTP/Ajax + JSP + Java + ...
  2. les exigences de multi-plateforme, en particulier si on vise le monde mobile
  3. le delta qui existe entre un "hello world" et une application de 100 écrans, en particulier pour venir ajouter de nouvelles fonctionnalités

SilverLight est la solution RIA proposée par Microsoft, nécessitant un runtime encore peu répandu, mais qui pourrait rapidement se généraliser via le meilleur outil de promotion : Windows Update ;-)

La présentation SilverLight était assez décevante, trop orientée design pour un public de purs programmeurs, et ne connaissant pas l'outil Blend la première heure a quasiment été perdue. Nous sommes nombreux à en avoir eu une image négative, sans doute fausse par rapport à cette technologie. J’en retiens trois points majeurs :

  • SilverLight et les outils qui l’accompagnent manquent encore de maturité (nous avons utilisé des versions beta, avec de nombreux bugs). Nous n’avons pas utilisé Visual Studio, aussi c’est donc peut-être une fausse impression.
  • Le choix de Microsoft de séparer les outils de Design (Expression) de ceux de développement est discutable. Même en confiant ces rôles à deux personnes, on peut être amené à jongler entre les deux.
  • SilverLight a l’avantage d’être très homogène, client et serveur se programmant en C#, notion que l’on retrouve dans Gwt.


Flex utilise le runtime Flash 9, déjà installé sur de très nombreux postes.

La présentation Flex était très démonstrative, mettant en avant les capacités graphiques du format Flash. L’environnement FlexBuilder est très appréciable (175€), même si de nombreuses fonctionnalités habituelles en Java manquent (formateur de code, refactoring…). Flex permet de laisser aux graphistes le soin de préparer les objets Flash avec toute la puissance de cet environnement. La programmation nécessite cependant de se familiariser avec ActiveScript, pas infaisable mais pas immédiat non plus. Se pose aussi la question du débogage sur des applications ambitieuses. Flexbuilder est très aboutit et probablement indispensable pour envisager ce type de développement.

Pour ces deux premiers candidats, se pose la question de la disponibilité d’un runtime sur toutes les plateformes, en particulier sur mobiles, marché d’avenir pour ces applications.


GWT est un peu l’intrus dans cette journée. Il se positionne fonctionnellement très en dessous de ses concurrents, sans support pour des effets 3D ou vidéo. Par contre, il est le seul à ne nécessiter aucune installation de runtime.

La présentation GWT était plus une visite guidée d’une application GWT, mettant en évidence les principes clé. Le très gros point fort est le développement 100% Java, qui permet ainsi de coder/tester/deboguer sous Eclipse, par simples « save + refresh », et de bénéficier de l’environnement JDT pour « découvrir » l’API GWT. La programmation GWT est donc assez naturelle pour des développeurs Swing.


Absent de cet atelier, JavaFX, pour lequel je me pose pas mal de questions. Ne se programmant pas en Java, on ne retrouve pas les avantages de Gwt ou Silverlight. Générant une application type Swing, quelle différence de fond par rapport à Java Web Start ?


J’ai été impressionné par la facilité de construction d’une IHM Flex, et surtout par le très bon niveau de FlexBuilder, qui malgré la filiation du langage ActiveScript avec JavaScript propose un éditeur riche et assez proche de celui d’Eclipse pour Java. Je n’ai pas accroché sur SilverLight, ne serait-ce qu’à cause du langage C# qui m’est peu familier, mais c’est clairement une plateforme avec laquelle il faudra compter. Enfin, GWT a été très bien vendu par Sami ;-). Il reste tout de même un besoin de compétence pour la mise au point des CSS, tout aussi peu homogène au niveau des navigateurs, point qui n'est pas abordé par Gwt - domage.

Mes conclusions ?

  • Spring MVC + Spring JS pour des applications web classiques avec un bonus ergonomique, comme expliqué dans mon précédent post, cela permet une migraiton "en douceur" depuis Struts.
  • GWT pour des applications RIA de type « gestion », manipulant plus des données que des vidéos ou des effets 3D. Il faut cependant développer une culture "layout" des IHM.
  • Flex pour les applications « flashy » (c’est le cas de le dire), avec l’aide inconditionnelle de FlexBuilder.

1 commentaires:

ozeebee a dit…

Salut, juste pour info, le lien vers le feed RSS de ton blog est incorrect (double slash)... http://blog.loof.fr//atom.xml

Sinon, merci pour le résumé de cet atelier.

Alain
(http://ozeebee.blogpsot.com)