Evaluation de GWT : Google Web Toolkit
Par david le jeudi 17 avril 2008, 17:47 - technique - Lien permanent

J'ai évalué GWT durant quelques heures et voici un petit feedback sur ce framework.
Le périmètre:
- Framework pour réaliser des éléments graphiques "riches" (donc comprenants pas mal d'AJAX) au sein de pages d'une application web (toutes technos confondues)
- Ce framework peut remplacer le flash dans une certaine mesure (s'il n'y a pas besoin de "sprite" ou qu'on ne fait pas une appli type "jeu du pingouin").
- Quand dans un cahier des charges il y a sur une page un "bloc" ou l'utilisateur doit faire pas mal d'actions dynamiques sans reload de la page entière
(drag'n drop puis click sur un bouton qui provoque un refresh de tel ou tel élément, etc...) ça peut convenir.
- ça convient aussi lorsqu'il faut réaliser un éditeur de texte riche (c'est meme un des exemples de base).

L'idée de base :
Permettre de développer en JAVA des widgets intégrables dans tous sites (cad pour toutes technos) et cross browser.
Le framework viens donc avec une API, un compilateur JAVA vers JavaScript et des outils de debug / tests.
Autre outil fourni : le JSNI(pour JavaScript Native Interface).
Une techno inspirée de la JNI et qui permet de prendre la main directement sur le JavaScript,
et aussi d'appeler depuis du JavaScript une méthode d'un objet JAVA (au niveau code bien sur, car au final tout est 100% javascript).
Pour étudier un peu ce framework j'ai évidemment réalisé un "Hello World !".
Ce Hello World est donc un widget qui récupére une liste de catégories d'un Alfresco et affiche l'arbre des catégories.
Pour ce faire j'ai a disposition sur mon alfresco (http://www.davidrobin.net:8080/alfresco) un web script disponible sur
http://www.davidrobin.net:8080/alfresco/s/liste/categories?guest=true
qui renvoie la chaine suivante :
myFunction({"categories" :
[{"name" : "sport" },{"name" : "sante" },{"name" : "people" },{"name" :
"politique" },{"name" : "écologie" },{"name" : "biologie"
}]})
Bref du JSON emballé dans une fonction callback.
Cette chaine au format JSON est construite a partir de l'arborescence des catégories (cf screen ci-dessous)
Mais mieux vaut une vidéo qu’un long discours :
Cet exemple montre qu'il suffit de très peu de code (cf le zip des sources ci-après) pour réaliser un widget résolvant le problème des appels AJAX cross-domaines, avec un composant (l'arbre) codé en quelques lignes JAVA alors que de nombreuses lignes de JavaScript / HTML sont d'habitude nécessaires.
Il utilise aussi la JSNI (Java Script Native Interface) pour les curieux qui manquent d'un peu de motivation pour aller regarder le code source ;-)
Niveau performance c'est aussi tout bon car il n'y a que très peu d'appel client/serveur, et le code javascript généré est très performant.
Pour ceux souhaitant étudier un peu plus ces exemples vous devrez télécharger et installer GWT (voir http://code.google.com/webtoolkit/).
et vous pourrez télécharger ensuite le projet éclipse via les liens ci-dessous :
- www.zip => zip contenant le widget sous sa forme statique (cad full javascript / html) le fichier a ouvrir dans le navigateur est AlfrescoWidget.html
- AlfrescoWidget.zip => le zip du projet éclipse contenant les sources.
Autres ressources : un bon bouquin => http://www.gwtapps.com/
Conclusion : Un bon outil à condition de bien respecter son périmètre (il faut résister à la tentation de vouloir coder toute une application avec :p).
Commentaires
franchement j'ai bcp aim� ce blog :)
franchement j'ai bcp aim� ce blog :)
bonne continuation :)
chapeau :) to be or not...