GWT, ExtJS, SmartClient, le JavaScript au services des RIA

#client riche#gwt#javascript

Afin d’apporter de la richesse côté client, de nombreux frameworks font le choix du JavaScript. Le monde des RIA (Rich Internet Applications) s’enrichit donc de nouveaux frameworks tels que GWT (Google Web Toolkit), Ext JS et SmartClient pour ne citer qu’eux.

GWT

GWT se distingue grâce à son approche de développement. En effet, plus question d’écrire du JavaScript. Il suffit d’écrire des classes Java qui seront ensuite optimisées et retranscrites en JavaScript à l’aide du compilateur GWT (Java -> JavaScript). Cette nouvelle approche simplifie grandement la vie du développeur en offrant la possibilité de débuguer et de tester directement le code Java. Dans sa version 1.5, GWT introduit les types overlays, ce qui permet d’intégrer les objets JavaScript dans un projet GWT. Ceci apporte de nombreux avantages, avec notamment la possibilité d’utiliser les capacités d’un IDE Java tels que la complétion de code ou encore le refactoring et ce même sur des objets JavaScript non typés. De plus, la nouvelle implémentation de la classe DOM de GWT (com.google.gwt.user.client.DOM) permet une manipulation aisée du DOM, simplifiant ainsi l’accessibilité et la recherche d’éléments du DOM directement dans les classes Java.

En revanche, GWT ne fournit pas une palette très riche de composants graphiques. De plus, aucun système n’est prévu nativement pour intégrer GWT avec d’autres frameworks de développement. Pour palier ces manques, de nombreuses librairies ont vu le jour telles que GWT-SL, GWT-Ext, Gwittir… Le seul problème réside dans le fait que ces librairies ne sont pas intégrées à GWT par Google. Le développement d’une application à l’aide de GWT s’avère donc périlleux. En effet, il faut soit assembler les librairies à GWT tel un puzzle ou alors se tourner vers un développement coûteux de ses propres librairies.

Ext JS / SmartClient

Ext JS et SmartClient sont assez similaires. Il s’agit de librairies graphiques en JavaScript. Ce sont des librairies très riches fonctionnellement offrant une palette très large de composants graphiques. La différence entre ces deux frameworks se trouve au niveau de leurs licences. En effet, Ext JS a subi un revirement de situation de la part de Jack Slocum (initiateur du projet). Ce dernier a changé la licence initialement LGPL en GPL depuis la version 2.0. Cette action a été très mal perçue par la communauté soutenant le projet et risque de restreindre l’adoption d’Ext JS sur de nouveaux projets. C’est là que SmartClient prend toute son importance, ses fonctionnalités comparables et sa licence LGPL en faisant un concurrent redoutable à Ext JS.

D’un point de vue fonctionnel, les composants graphiques fournis par Ext JS et SmartClient sont très bien pensés et offrent de nombreuses possibilités. Ceux-ci apportent une richesse à l’application côté client pour un coût de développement réduit. Prenons l’exemple des Grid qui permettent de réaliser simplement des tableaux du plus basique au plus complexe. Des fonctionnalités telles que la pagination, le tri sur les colonnes ou encore le mapping d’un fichier XML pour charger automatiquement le contenu des cellules sont disponibles. D’autres composants tels que les Tree, les TabPanel, les Button ou encore les Layout Managers viennent apporter de l’interactivité et de la richesse visuelle à l’application. Cependant, ces composants restent en JavaScript et même si leur utilisation est simple, la documentation de l’API est indispensable pour connaître les paramètres attendus par les fonctions. Des IDE tel que Aptana existent pour simplifier le développement en JavaScript. Mais malgré tout, le JavaScript reste difficile à débuguer et représente toujours un investissement en terme de développement.

Conclusion

GWT a su s’abstraire des faiblesses du JavaScript et de la lourdeur des appels AJAX en se focalisant sur un développement en Java. C’est donc de cette manière qu’il se distingue d’Ext JS et de SmartClient. Cependant, d’un point de vue graphique, ces derniers ont de l’avance sur GWT. Ce n’est donc pas étonnant de voir des librairies faisant le lien entre GWT et Ext JS ou SmartClient. De cette façon, la puissance de GWT avec son développement en Java est allié à la richesse graphique d’Ext JS et de SmartClient. On peut seulement regretter que cette richesse graphique ne soit pas directement intégrée à GWT.

Par ailleurs, chez les concurrents, la stratégie est différente. C’est le cas chez Adobe avec son framework Flex qui propose une solution plus complète au niveau graphique, s’appuyant sur la technologie Flash, tout en offrant des frameworks de développement respectant le modèle MVC. Certes, GWT le permet également mais Adobe a choisi d’intégrer ces frameworks à son offre garantissant ainsi l’avenir de ces derniers. L’offre d’Adobe est donc plus claire est plus complète mais souffre d’une image trop orientée vers le design. A l’inverse, Google propose aujourd’hui une solution pleine d’avenir mais pas encore suffisamment packagée.