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.