Après avoir présenté Google Web Toolkit, la librairie Ext-GWT (ou GXT) et la librairie GWT-Ext, je souhaite vous parler des essais que j’ai fait cette semaine. Le choix n’est pas si simple…
La semaine dernière, à l’occasion de la journée Client Riche organisée par Valtech, je vous ai reparlé un petit peu de Google Web Toolkit. En quelques mots, GWT permet d’écrire en Java du code qui sera transformé en Javascript pour fonctionner du côté du navigateur du client. L’intérêt de GWT est son mode hébergé. Lorsque vous développez, ce qui est bluffant c’est la rapidité à laquelle vous pouvez construire votre interface. En effet, nul besoin de compiler quoique ce soit. Vous éditez simplement votre code Java, vous sauvez votre fichier, un rechargement dans l’outil GWT et votre modification apparaît immédiatement dans un navigateur utilisant la DLL d’internet explorer.
GWT ne dispose pas d’une librairie de composants très riche. Il existe dans le monde Javascript des librairies très puissantes. La librairie Ext-JS est l’une de mes favorites. Le problème de cette librairie est qu’il faut une bonne maitrise du langage Javascript et pas mal d’énergie pour développer une interface complète. Croyez-moi, je sais de quoi je parle.
Pour rejoindre le meilleur de ces 2 mondes, Sanji Jivan a développé GWT-Ext, une librairie qui se repose sur GWT, Ext-JS 2.0.2 ainsi que quelques composants supplémentaires comme les courbes en 2D (YUI) et le module Pagebus destiné à s’interfacer avec Tibco. Cette librairie est distribuée sous licence LGPL v3.
Je vous conseille de regarder la page d’exemple pour vous faire une idée de ce qu’il est possible d’écrire en Java, et qui se transformera en Javascript au final pour le client.
Le souci et le débat est que Jack Soclum, qui travaille sur la librairie Ext-JS a effectué un changement de licence en avril dernier. La librairie Javascript est passée d’une licence LGPL à une licence GPL v3. La conséquence pour les logiciels développés sur cette librairie, est qu’ils doivent soit adopter une licence virale comme la GPL, soit acheter une licence commerciale à l’entreprise de Jack. Cela a provoqué pas mal de remous dans la communauté des utilisateurs de la librairie Ext-JS. A priori les choses sont entrain de changer et on parle de mettre en place des exceptions pour les produits open-source quant à l’utilisation de la librairie Ext-JS. Voir ce post sur Ajaxian. En tout les cas Jack Solum s’est fait largement critiquer pour le passage d’une licence LGPL à une licence GPLv3, comme il l’explique sur son blog (note: il y a un post de Ludovic Dubost, OSSGTP, XWiki dans les comments). Quelque part c’est très informatif sur le côté épidermique des licences et de ce que les gens en font… On entre dans le débat LGPL/GPL…
Toujours est-il que le problème pour GWT-Ext est que ce projet reste à la version 2.0.2 de la librairie Ext-JS et ne pourra pas passer à la version 2.1 d’Ext-JS distribué en GPL. Dans le même temps, le groupe Ext-JS a lancé sa propre version du portage vers GWT de la librairie Ext-JS (honnêtement si vous suivez et vous êtes encore entrain de me lire, chapeau…). Actuellement la couverture fonctionnelle n’est pas encore très complete. Voici les deux liens pour comparer la première librairie (GWT-Ext) et donc la deuxième que j’appelle GXT mais dont le nom officiel est Ext-GWT… Comment embrouiller le développeur lambda…
- Démo GWT-Ext http://www.gwt-ext.com/demo/
- Démo Ext-GWT dit « GXT » http://extjs.com/products/gxt/
Je travaille sur un projet pour le mois de septembre pour lequel, après avoir fait un prototype avec JBoss Seam et IceFaces, j’ai eu envie de tester un rendu basé sur GWT. J’ai donc développé 2 prototypes avec chacune de ces librairies (GWT-Ext et GXT) afin de me faire une idée précise des lacunes et des points forts de chacune d’elle.
La librairie GWT-Ext est sortie en juillet 2007. La documentation est assez complète et la prise en main assez rapide. Complètement basée sur Ext-JS, on retrouve donc la manière de programmer cette librairie. Simplement, le fait de travailler en Java me permet de travailler plus rapidement qu’en pur Javascript. De plus, Sanji le développeur derrière cette librairie a intégré aussi des composants de Charts (de YUI) ce qui m’évite d’utiliser une librairie propriétaire.
La librairie GXT est encore en phase de béta. La documentation et les exemples sont moins fournis. Elle apporte un modèle léger événementielle qui fait que le code écrit me semble plus clair. La javadoc est plus complète, et lors des phases de debug, une partie de cette librairie étant écrit en Java, il est plus facile de travailler qu’avec GWT-Ext.
GWT-Ext est un wrapper complet qui utilise JSNI pour effectuer des appels Javascripts vers la librairie Ext-JS directement. Au contraire, GXT dispose de sa propre implémentation en Java. Au final c’est bien du javascript qui est généré.
Le post suivant de Didier Girard propose un petit tableau pour comparer les 2 librairies.
http://www.ongwt.com/post/2008/04/22/MyGWT-is-dead-Long-live-Ext-GWT
Au final je vais m’arrêter là… J’ai un prototype développé avec les 2 librairies. Je me suis cassé la tête sur GWT-Ext en particulier lors de la mise en place de la partie dynamique. Ext-GWT par contre me permet d’écrire du code avec une architecture plus propre. Donc c’est fait.
Fin du débat
Salut,
chez SCUB, on travaille également en GWT depuis environ un an, voir plus, et on s’est intéressé depuis quelques mois aux différentes librairies graphiques que sont GWT-Ext et Ext-GWT. On a finalement choisir de partir sur GWT-Ext, quelques jours avant ce fameux changement de licence 🙁
Seulement, une fois utilisée, cette librairie nous a pas mal déçu, par rapport à ce qu’on en attendait. Le code généré n’est vraiment pas propre et plutot tordu pour des trucs qui pourrait être très simple, la création d’IHM full-GWT-Ext n’est vraiment pas maintenable à notre gout, et nous avons également eu pas mal de soucis (bugs) lors de la création d’IHM mélangeant GWT-Ext et des composants GWT natifs.
L’interet principal de GWT-Ext pour nous était son avance par rapport à Ext-GWT, mais on aurait du plus se pencher surement sur la propreté du code et la facilité de débuggage offerte par GXT. Reste maintenant que la licence commercial de GXT est aussi un sacré frein à son adoption dans nos produits.
Au moins ça fait plaisir de voir que l’on est pas les seuls à penser de cette façon, si j’ai bien compris ton raisonnement et ton avis final…
Bonjour,
Nous avons également eu à étudier ces produits pour réaliser un prototype à livrer au client. J’avais au départ 2 branches, une pour chacun des 2 produits. J’ai eu un peu plus de difficultés avec GWT-Ext, mais c’est surtout le côté 100% Java/GWT de Ext GWT et le blocage de version de GWT-Ext qui nous a poussé à partir sur Ext GWT.
Au final, nous en sommes très satisfaits, la bibliothèque est robuste (le développement est donc plutôt confortable), le résultat visuel est très sympa et le support est très réactif. En bonus, la possibilité de développer en se basant sur des événements haut niveau permet de conserver facilement une architecture propre.
Question licence, comme nous avons utilisé un framework maison propriétaire, nous avons acheté une licence commerciale (le prix étant négligeable par rapport au coût total du projet), sinon nous aurions livré en GPL (puisque nous avons de toute façon livré les sources – sauf pour le framework maison).