La bête est lancée :-). GWT 2.0 est une avancée majeure pour le développement d'applications Web AJAX. Cette version en gestation depuis plus d'un an arbore un nombre impressionnant de nouveautés et d'améliorations.
Quasiment toutes les API subissent des évolutions (avec une compatibilité ascendante avec GWT 1.7 évidemment). Pour faire court, on peut les résumer par :
- Dev Mode : On peut maintenant utiliser directement n'importe quel navigateur du marché pour débogguer des applications GWT en live. L'ancien mode "hosté" disparait. C'est la gold feature de GWT 2 et les démos sont impressionnantes.
- Production Mode : Ce mode est l'équivalent du mode compilé JavaScript
- ClientBundle : une API très riche pour gérer les ressources textuelles, images, en mode synchrone et asynchrone. Les CSS sont manipulés et optimisés entièrement en Java via des API. Un must absolu.
- L'architecture RPC : Grosses nouveautés en perspective, la plupart des interfaces (RemoteService, RemoteServiceServlet, etc . . .) sont remplacées par de nouvelles, plus extensibles en terme de sérialisation. Une préparation pour AppEgine, DTO, JDO & Co.
- UIBinder : Si vous aimez Flex ou XAML pour développer des applications clients riches. Vous aimerez UIBinder. L'idée ici n'est bien évidemment pas d'écrire à la main des IHM GWT mais plutôt de préparer le terrain au prochain outil WYSIWYG de GWT.
- Le chargement différé (fragmentation) : Très fort, plus de limitation de taille pour les applications GWT. On peut écrire un progiciel de centaines de milliers de lignes, la fragmentation permettra de charger à la demande les fichiers JavaScript.
- Le nouveau système de Layout : Vous aimez les layout manager à la Swing qui s'adaptent automatiquement lorsqu'on retaille une fenêtre ? Vous aimerez le nouveau système de Layout, tous les panels ont été réécrits sur cette nouvelle API.
- La gestion des tests : Vu que le mode hosté n'existe plus et que les tests simulaient le lancement d'un mode hosté, il a fallu trouver un remplaçant. GWT en a trouvé cinq. Il est possible désormais de simuler les tests manuellement, en mode distant, via selenium ou avec HtmlUnit. Le tout en conditionnant le defferred binding (c'est à dire l'environnement dans lequel les tests s'exécutent)
- JSNI et le SingleJSOImpl : un concept très technique mais qui permettra de simplifier l'utilisation des JSO (JavaScriptObject). Les puristes apprécieront.
- L'émulation JavaScript du stacktrace : Il n'existe aujourd'hui aucun moyen de simuler un stackTrace à la Java de manière unifiée avec IE, Firefox, Safari, Chrome et Opera. L'émulation tire partie des spécificités de chaque navigateur et génère une pile d'exécution en production pointant vers les méthodes et les lignes incriminées. Un must (mais je me répète ;-))
- Améliorations du Defferred Binding : les propriétés conditionnelles permettent de paramétrer finement et limiter le nombre de permutations (fichiers javascript) générées.
- Dépréciation : Toutes les API dépréciées jusqu'à GWT 1.6 seront supprimées. D'où l'intérêt de régulièrement mettre à jour sa version (au moins une fois par an)
- Support des librairies tierces : GXT 2.0.2 disponible dans le SVN (pour les heureux propriétaires d'une licence) est déjà compatible GWT 2.
Avec GWT 2, des années lumières séparent GWT de ses concurrents. Les fondations sont désormais en place pour voir venir des outils de plus haut niveau (atelier de conception graphique, plugins Eclipse, etc .). Par ailleurs, la lenteur de la compilation n'est plus un problème avec le nouveau mode de développement hébergé au sein du navigateur.
Cela fait bientôt un an que je suis toutes ces évolutions de près, encore un peu de patience et vous découvrirez tout cela dans un livre très complet. En attendant, il est toujours possible d'en savoir un peu plus en suivant la formation GWT de DNG Consulting.
Le modèle évènementiel GWT 1.6 a été remis à jour et on dispose d'un aperçu de GWT 2. Cerise sur le gateau, tous les exercices sont réalisés avec le trunk GWT en mode OOPHM.
On t'attend à la prochaine session ? ;-)
Et qu'en est-il de la compatibilité avec appengine ?
2) Pour AppEngine, c'est en cours...
Je suis tombé sur ce site récemment et même si on ne peut pas comparer avec GWT avec JSF mais c'est quand même très beau : http://97.107.138.40:8080/prime-showcase/ui/home.jsf
Alors c'est vrai que pour nous informaticiens, nous voyons la beauté du moteur mais les utilisateurs eux c'est la beauté de la voiture qui les intéresses.
Pour l'instant GWT continue toujours à renforcer le fond (runAsync, UiBinder) par rapport à la forme. Mais (une petite info au passage) dès Q2 2010, c'est à dire très bientôt, ils vont s'attaquer sérieusement au ScrollTable d'Incubator pour l'intégrer au Framework et surtout fournir des fonctionnalités de Databinding et validation.
Mais je comprends qu'en attendant (et sans faire de GXT) la partie UI fasse moins rêver que d'autres (encore que Wave est en 100% GWT et l'IHM est un régal, moyennant quelques enrichissement CSS)
Sami
Dois-je comprendre qu'un outil WYSIWYG "officiel" basé sur UIBinder est en projet ?