J’ai fait un site web en GWT

Celles et ceux qui ont eu l’occasion de travailler sur la conception d’ applications web le savent, le développement des IHM est coûteux. Depuis plusieurs années, différents cadriciels ont fleuris et ont tentés de réduire avec plus ou moins de succès ce coût, GWT est de ceux là. Les développeurs sont quasi unanimes à sont sujet, c’est probablement l’un des frameworks IHM avec lequel on a le plus de plaisir à développer. Il faut dire qu’il a beaucoup d’avantages :
-Il permet un développement d’ IHM fortement typé (à la SWING) avec un seul et même langage de programmation : Java (l’un des plus populaire).
-Il est réellement multi-navigateurs.
-Il est gratuit.
Etc…

J’entends pourtant beaucoup de critiques sur GWT :
les temps de compilations trop longs
le peu de composants graphiques disponibles
la quasi impossibilité de faire autre chose que des applications de gestion
le manque de customisation des styles CSS associés à des applications faites avec GWT etc…

Concernant les temps de compilation, si vous avez l’occasion d’utiliser des SDK récents (bah oui, il faut vivre avec son temps), vous vous rendrez compte qu’ils sont très corrects. Et pour ceux qui veulent que ça aille encore plus vite, les plugins GWT pour navigateurs web, permettent de prendre en compte les modifications de code source à chaque rafraîchissement de page web (exactement comme en PHP…), dans le pire des cas, un redémarrage serveur est nécessaire, mais bon si ce serveur est un Apache Tomcat, il y en a pour moins de 10 secondes.

Concernant le peu de composants disponibles, est-ce vraiment nécessaire d’avoir plus de composants que ceux livrés par défaut avec le SDK GWT ? Je ne crois pas. Bien souvent, un jeu réduit de composants graphiques permet de répondre parfaitement au besoin fonctionnel du client ; ça a peut-être des impacts sur l’ergonomie, mais rien de bien méchant. Je ne suis pas persuadé que produire des applications truffés de composants graphiques tous plus sophistiqués les uns que les autres apporte réellement de la valeur métier au client. Et puis de toute manière, pour ceux qui veulent un choix pléthorique de composants, SmartGWT devrait vous satisfaire, jetez un Å“il au showcase de cette librairie, sincèrement si vous ne trouvez pas votre bonheur, c’est que vous le faite exprès :-p .

Pour ce qui concerne les deux derniers points, je me suis proposé d’utiliser GWT de manière originale. J’ai réalisé un « proof of concept », il s’agit donc d’un petit site web (oui, vous avez bien lu, un site web) réalisé entièrement en GWT, plus précisément il s’agit d’un blog. Le but étant de prouver qu’il est tout à fait possible de réaliser un site web en GWT (et donc autre chose que de simples applications de gestion) et d’y appliquer une charte graphique quelconque. Je suis donc allé sur internet, j’ai cherché une charte graphique de blog (un template) gratuite, et j’ai tenté de refaire la même en GWT. Alors évidemment, j’ai repris la feuille de CSS et les images (.jpg et .png) associées.
J’ai donc crée un projet GWT avec Eclipse en utilisant la version 2.6.1 (la dernière version stable à ce jour). En utilisant les facets d’ Eclipse, j’ai fait en sorte (par pure fantaisie) à ce que ce soit à la fois projet Java 1.8 et un projet web dynamique 3.1. J’ai utilisé la librairie SmartGWT en version 4.1 afin d’avoir deux composants supplémentaires :
– un éditeur de texte riche (pour éditer les articles de blog)
– un composant qui permet d’afficher du code HTML à l’écran (pour afficher les articles du blog)

Évidement, je n’ai pas écrit une seule ligne de JavaScript, et ma page HTML contient juste assez de balises pour faire tourner mon code GWT. Mais, je ne me suis pas arrêté là, j’ai donnée vie au blog, en réalité, j’ai produit un tout petit moteur de blog. A l’issu de ce travail, je me suis rendu compte qu’il était tout à fait possible de travailler main dans la main avec un web designer pour produire un site en GWT. Le web designer fournirait comme d’habitude des pages HTML (truffées de lorem ipsum) ainsi que les CSS et les images associées et le développeur adapterait tout ça à la sauce GWT. Ce n’est effectivement pas simple, mais c’est loin d’être aussi compliqué qu’on veut bien le faire croire, et, bien que je ne sois pas un cador du CSS, je n’ai pas trouvé pas ça beaucoup plus compliqué qu’appliquer une charte graphique sur un application classique (JSP,PHP, ASP etc.).

J’ai quand même dû faire quelques modifications dans la feuille CSS. Dans le template initial, des DIV sont référencées par leur « id », le problème en GWT, c’est que je ne sais pas forcément quel « id » auront les DIV qui seront générées. Pour résoudre ce problème, j’ai remplacé dans la feuille CSS les sélecteur « id » par des  sélecteurs de classes. Et ce sont ces mêmes classes CSS que j’ai attribué à certains composant GWT (qui sont au final des DIV).
Pour bien comprendre, je vous conseille d’analyser le code source et de voir les différences (à l’aide d’un Winmerge par exemple) qu’il y a entre le CSS original et celui que j’ai modifié.

S’agissant d’un « proof of concept » le code qui en découle n’est pas exempt de défaut, il contient probablement des failles de sécurité (XSS), il va peut-être à l’encontre de telle ou telle « bonne » pratique. Je n’ai pas pris la peine de reproduire tout ce qui avait dans le template de base (catégorie, archives,commentaires récents, article populaires,galerie etc.) , bien que ce soit possible. D’ailleurs le code GWT ne fait pas appel à du code serveur (services), et il ne persiste rien en base données, tout est gardé en mémoire.
Néanmoins, on constate avec bonheur la présence d’un code orienté objet (avec de l’héritage, des design patterns etc.) maintenable par n’importe quel développeur Java (même des stagiaires). Ce site comporte pas moins de 14 fichier Java (classes et interfaces) et la classe la plus volumineuse atteint les 168 lignes de code… Je vous conseille de comparer ça avec les ignobles fichiers JSP, ASP, PHP, JS etc. qui dépassent les 1000 lignes de code (sans forcer…) que l’on retrouve dans tout un tas d’horribles applications web soit disant maintenables…

Petite note : si vous tentez d’afficher le site web en GWT vous apercevrez un menu « Connexion », si vous cliquez dessus un login et un mot de passe vous seront demandé, peut importe ce que vous mettrez, cliquez sur le bouton « Connect » et vous serez connecté !

Je ne dis pas que GWT est LA solution à tout, et bien-sûr que ce cadriciel, n’est pas le plus pertinent dans certains cas, mais j’ai prouvé que son « look and feel » était aussi customisable que ceux des applications web classiques (JSP,JSF,PHP,ASP etc.). Si on arrive à faire sans trop de difficulté un site web en GWT, c’est que la plupart des application web peuvent êtres faites en GWT sans soucis particulier. Et oui, je pense que GWT n’a pas la place qu’il mérite, ce framework devrait être beaucoup plus utilisé dans les applications web, car il est plus facile de produire du code maintenable avec GWT que sans, et du code plus maintenable, c’est des coûts de production plus réduits, donc des marges à la hausse et/ou des prix de vente plus bas. Il y a des euros qui se perdent…

C'est ce que j'ai fait entièrement avec GWT

C’est ce que j’ai fait entièrement avec GWT

C'est ce "site web" qui m'a servi de modele

C’est ce « site web » qui m’a servi de modele

Code source du template de base
Code source du blog en GWT

Laisser un commentaire