- ç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 : 

widget-demo.mov

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).