GWT

GWT

Google Web Toolkit

Google Web Toolkit (GWT) est un ensemble d'outils logiciels développé par Google, permettant de créer et maintenir des applications web dynamiques mettant en oeuvre JavaScript, en utilisant le langage et les outils Java. C'est un logiciel libre distribué selon les termes de la licence Apache 2.0.

GWT met l'accent sur des solutions efficaces et réutilisables aux problèmes rencontrés habituellement par le développement AJAX : difficulté du débogage JavaScript, gestion des appels asynchrones, problèmes de compatibilité entre navigateurs, gestion de l'historique et des favoris, etc.

Sommaire

Principe

GWT est articulé autour d'un concept original : lors de la phase de développement, l'application est écrite en Java de façon classique, dans un IDE Java, et peut être déboguée avec les outils Java habituels. Une fois l'application prête à être déployée, le compilateur GWT la traduit en pur Javascript, avec support automatique et transparent pour les principaux navigateurs (Internet Explorer, Firefox, Mozilla, Safari, Opera). Le code JavaScript généré utilise des techniques d'HTML dynamique et de manipulation du DOM (Document Object Model) pour les aspects dynamiques de l'interface.

Ce principe est rendu possible par les différents composants de GWT:

  • le compilateur Java vers JavaScript
  • un navigateur spécialement modifié pour permettre l'exécution (et le débogage) de code Java natif sans nécessiter la compilation JavaScript
  • une bibliothèque d'émulation JRE : il s'agit d'une implémentation en JavaScript d'un sous-ensemble de la bibliothèque de classes Java standard (en particulier quasiment tout le package java.lang et une partie de java.util)
  • une bibliothèque de composants graphiques contenant des widgets de base permettant la construction d'une interface graphique

GWT est souvent appelé abusivement un framework, mais n'en est pas véritablement un car il impose peu de choses au développeur; comme son nom l'indique, il s'agit d'une boîte à outils qui offre des solutions permettant de développer plus facilement des solutions web/AJAX de dernière génération, en profitant des outils et compétences Java existants, et en faisant abstraction de la complexité habituellement liée à ce genre de technologies.

Fiche technique

  • Composants graphiques dynamiques et réutilisables
  • Mécanisme d'appels RPC simple
  • Gestion de l'historique de navigation (boutons précédent/suivant du navigateur)
  • Possibilité de déboguer l'application avec un débogueur Java
  • Gestion transparente des différences de comportement entre navigateurs
  • Intégration avec JUnit
  • Internationalisation simplifiée
  • Possibilité d'intégrer du JavaScript directement dans le code source grâce à une technique appelée JSNI (JavaScript Native Interface)
  • Support des bibliothèques Google API (notamment Google Gears)
  • Complètement Open Source
  • Le développement se fait en pur Java, ce qui permet les contrôles de cohérence à la compilation (contrairement à JavaScript qui est interprété), le refactoring automatisé, etc.
  • Disponibilité de nombreuses bibliothèques tierces qui étendent les fonctionnalités de GWT

Widgets disponibles

On trouve dans GWT un ensemble de widgets permettant de construire une interface utilisateur :

  • Panneaux
  • Boutons
  • Cases à cocher
  • Tables / Grilles
  • Boîtes de dialogues
  • Primitive HTML (dont les images et les hyperliens)
  • Menus et barres de menus
  • Fenêtres défilantes
  • Onglets
  • Arbres

Lorsque c'est possible et viable, les widgets GWT utilisent le contrôle natif HTML équivalent (par ex. Checkbox génère un élément INPUT de type checkbox), mais il est aussi possible de construire des widgets entièrement synthétiques.

Bien qu'offrant des fonctionnalités plus évoluées que les composants HTML, la bibliothèque de widgets GWT reste spartiate lorsqu'on veut créer une IHM avancée; c'est pourquoi des bibliothèques tierces ont vu le jour. On peut citer:

Notez que si les wrappers GWT de librairies javascript sont souvent riches en composants, ils ne respectent pas la philosophie de GWT (Le code javascript n'est pas entièrement compilé par GWT et des bugs de ces librairies sont toujours présents, ...)

Historique des versions

La version 2.0 est en cours de finalisation et devrait être publiée avant la fin de 2009. Le premier milestone (GWT 2.0 milestone 1) a été mis à disposition le 5 octobre 2009.

Environnements de développement

De par sa conception, GWT est indépendant de tout IDE et peut s'intégrer très facilement dans n'importe lequel d'entre eux. Cependant, il existe des plugins qui facilitent le développement d'une application GWT :

  • GWT Designer est un plugin payant pour Eclipse dérivé de WindowsBuilder Pro, qui offre des outils de design graphique.
  • gwtDeveloper est un éditeur WYSIWYG pour JDeveloper.
  • GWT Studio plugin est un plugin pour IntelliJ IDEA qui prend en charge les aspects de création d'artefacts spécifiques à GWT, les contrôles de validité (inspectors), les actions de refactoring, de lancement, etc.
  • Cypal Studio est un plugin pour Eclipse qui offre des fonctionnalités similaires. Il est limité à la version 1.5 de GWT
  • GWT4NB est un plugin GWT pour NetBeans.

Enfin, en même temps que GWT 1.6, Google a sorti un plugin pour Eclipse qui intègre à la fois les aspects GWT et Google App Engine.

Avantages et inconvénients

  • En mode hosted, l'application s'exécute sous forme de bytecode Java tout comme une application normale; par conséquent toutes les possibilités de débogage natif de Java sont utilisables.
  • L'utilisation du mécanisme de RPC propre à GWT ne permet de communiquer qu'avec un service développé à cet effet. Néanmoins, l'accès à toutes sortes de services est possible via HTTP, en particulier aux Web Services utilisant SOAP et autres services encodant les données avec JSON.
  • Le code JavaScript généré est d'une taille conséquente. Néanmoins, les mécanisme de cache côté client permettent d'éviter le rechargement si le code n'a pas changé.
  • Le code Javascript généré est difficilement lisible. Cependant, dans l'esprit des concepteurs de GWT ce code n'est pas destiné à être lu ou optimisé par un humain, mais uniquement par le navigateur; selon ce point de vue on peut considérer JavaScript comme l'équivalent de ce qu'est l'assembleur aux langages de haut niveau. Il existe tout de même des options permettant de générer du code moins dense et plus lisible, au détriment de la taille des fichiers générés et de la performance.
  • La phase de compilation GWT est relativement longue, et croît avec le nombre de classes et le nombre de permutations (combinaisons navigateur+langue). Ceci s'explique par les nombreuses optimisations statiques effectuées par le compilateur GWT. Il est toutefois possible de restreindre le nombre de permutations générées.
  • L'utilisation de GWT ne doit pas faire oublier les aspects sécurité [1].
  • Comme tous les frameworks RIA, GWT peut poser des problèmes d'accessibilité [2].

Future version 2.0

La nouvelle version 2.0 de GWT offrira plusieurs nouveautés, parmi lesquelles:

  • In-Browser Development Mode (appelé encore Out Of Process Hosted Mode, OOPHM): avant la version 2.0, le hosted mode embarquait une version modifiée d'un navigateur pour permettre d'exécuter et déboguer la version bytecode de l'application durant le développement. Avec la version 2.0, le hosted mode, rebaptisé "development mode", permet l'utilisation de n'importe quel navigateur (supporté), au travers d'un plugin. Le plugin communique avec le shell du development mode via TCP/IP, ce qui autorise le débogage croisé (par exemple, déboguer une application dans Internet Explorer sous Windows depuis un shell de development mode tournant sous Linux)
  • Code splitting: en s'appuyant sur des indications du développeur dans le code source, le compilateur GWT est capable de diviser le code JavaScript généré en plusieurs parties de plus petite taille, au lieu d'un unique bloc. Ceci permettra de réduire le temps de démarrage de l'application en diminuant la taille du téléchargement initial.
  • construction d'interface déclarative: au moyen d'un format XML, la nouvelle fonctionnalité nommée "UiBinder" offrira la possibilité de créer les interfaces utilisateur de façon déclarative, par opposition à la création au travers de code Java. Ceci permet une séparation propre de la construction de l'interface et de l'implémentation du comportement dynamique de celle-ci.
  • Groupement de ressources: l'interface ClientBundle permettra de grouper de façon transparente des ressources de toute nature (images, CSS, texte, binaire) qui seront transférées ensemble en une seule opération, réduisant ainsi le nombre d'allers-retours entre le client et le serveur, et diminuant du même coup la latence.

Comme le nouveau "development mode" a supprimé la plupart du code écrit spécifiquement pour une plateforme cible, la nouvelle version sera distribuée sous forme d'un unique fichier (contre un par plateforme comme c'était le cas avec les versions précédentes).

Produits concurrents

Approche « à la GWT » (le client est prégénéré) :

  • Flex/Air
  • Silverlight
  • JavaFX dans une certaine mesure
  • Pyjamas (pour python)

Approche RIA classique (HTML et JavaScript générés à partir du serveur) :

Voir aussi

Article connexe

Liens externes

  • Portail de l’informatique Portail de l’informatique
  • Portail des logiciels libres Portail des logiciels libres
Ce document provient de « Google Web Toolkit ».

Wikimedia Foundation. 2010.

Contenu soumis à la licence CC-BY-SA. Source : Article GWT de Wikipédia en français (auteurs)

Игры ⚽ Нужно решить контрольную?

Regardez d'autres dictionnaires:

  • GWT — may refer to: * Google Web Toolkit * IATA airport code for Sylt Airport * Google Wireless Transcoder, a Google proxy service for retrieving pages as it would appear on mobile phones * God s Word (bible translation), or God s Word Translation *… …   Wikipedia

  • Gwt — Google Web Toolkit Google Web Toolkit (GWT) est un ensemble d outils logiciels développé par Google, permettant de créer et maintenir des applications web dynamiques mettant en oeuvre JavaScript, en utilisant le langage et les outils Java. C est… …   Wikipédia en Français

  • GWT — Die Abkürzung GWT steht für: Flughafen Sylt (IATA Code) Gesellschaft für Wissens und Technologietransfer Google Web Toolkit Great Wall Technology Diese Seite ist eine Begriffsklär …   Deutsch Wikipedia

  • GWT — …   Википедия

  • GWT — Westerland, Germany internationale Flughafen Kennung …   Acronyms

  • gwt — ISO 639 3 Code of Language ISO 639 2/B Code : ISO 639 2/T Code : ISO 639 1 Code : Scope : Individual Language Type : Living Language Name : Gawar Bati …   Names of Languages ISO 639-3

  • GWT — Westerland, Germany internationale Fughafen Kennung …   Acronyms von A bis Z

  • GWT — abbr. Ground Water Table …   Dictionary of abbreviations

  • Stellwerk Gwt in Recklinghausen — Das Stellwerk Grullbad West (kurz: Gwt) war eine Übergabestation für Kohle, Koks und andere Nebenprodukte aus der Zeche König Ludwig 1/2 an die Bundesbahn. Im Jahre 1988 wurde es weitgehend außer Betrieb gesetzt und war danach annähernd 20 Jahre… …   Deutsch Wikipedia

  • Google Web Toolkit — Infobox Software name = Google Web Toolkit caption = author = Google developer = released = May 16, 2006 latest release version = 1.5.2 latest release date = August 27, 2008 latest preview version = latest preview date = programming language =… …   Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”