# Google Web Toolkit

GWT o Google Web Toolkit és un entorn de treball creat per Google que permet ocultar la complexitat de diversos aspectes de la tecnologia AJAX. És compatible amb diversos navegadors, la qual cosa és notori, ja que cada navegador sol necessitar codi específic per a assolir un front-end correcte en una aplicació web. El concepte de Google Web Toolkit és bastant senzill, bàsicament el que s'ha de fer és crear el codi en Java usant qualsevol entorn de desenvolupament (IDE) de Java i el compilador ho traduirà a HTML i Javascript.

## Història

Google anuncià la biblioteca GWT en la conferència JavaOne de 2006 i llançà la versió 1.0 RC 1 (build 1.0.20) el 16 de maig del 2006.

### Historial de llançaments

* GWT 1.0 - 17 de maig de 2006
* GWT 1.1 - 11 d'agost de 2006
* GWT 1.2 - 16 de novembre de 2006
* GWT 1.3 - 5 de febrer de 2007
* GWT 1.4 - 28 d'agost de 2007
* GWT 1.5 - 27 d'agost de 2008
* GWT 1.6 - 4 d'abril de 2009
* GWT 1.7 - 13 de juliol de 2009
* GWT 2.0 - 8 de desembre de 2009
* GWT 2.0.1 - 8 de desembre de 2009
* GWT 2.0.2 - 2 de febrer de 2010
* GWT 2.0.3 - 12 de febrer de 2010
* GWT 2.0.4 - 2 de juliol de 2010
* GWT 2.1.0 - 19 d'octubre de 2010
* GWT 2.1.1 - 16 de desembre de 2010
* GWT 2.2.0 - 11 de febrer de 2011
* GWT 2.3.0 - 3 de maig de 2011
* GWT 2.4.0 - 8 de setembre de 2011
* GWT 2.5.0 - 27 de juny de 2012
* GWT 2.5.1 - 15 de gener de 2013 actual
La versió actual és la 2.5.1.

## Desenvolupament

Amb la biblioteca GWT, els desenvolupadors poden crear i depurar aplicacions AJAX en llenguatge Java usant l'entorn de desenvolupament que preferisquen. Quan una aplicació és desplegada, el compilador GWT tradueix l'aplicació Java a un arxiu Javascript, que pot ser ofuscat per a optimitzar el rendiment.
GWT no és només una interfície de programació; proporciona un conjunt d'eines que permeten desenvolupar funcionalitats Javascript d'alt rendiment en el navegador del client.
Una aplicació GWT pot ser executada en dos modes. en mode host (Hosted mode), l'aplicació s'executa com codi bytecode de Java dins de la Màquina Virtual de Java (JVM). Aquesta manera és el més usat per a desenvolupament, suportant el canvie de codi en calent i el depurat. En mode web (Web mode) l'aplicació s'executa com codi Javascript i HTML pur, compilat a partir del codi Java. Aquesta manera se sol usar per al desplegament de l'aplicació.
La utilitat de línia de comandos applicationCreator genera automàticament tots els arxius necessaris per a iniciar un projecte GWT, fins i tot permet crear un projecte per a Eclipse. Existeixen diversos plugins de codi obert per ajudar a desenvolupar en diferents entorns de desenvolupament, com GWT4NB per a NetBeans, Cypal Studio for GWT per a Eclipse o gwtDeveloper per a JDeveloper.

## Arquitectura GWT

GWT conté els següents components:
* GWT Java-to-Javascript Compiler: la funció d'aquest component és traduir el codi desenvolupat en Java al llenguatge Javascript. Ho emprem quan usem al GWT en mode web.
* Hosted Web Browser: aquest component executa l'aplicació Java sense traduir-la a Javascript, en mode host usant la màquina virtual de Java.
* JRE Emulation Library: conté les biblioteques més importants de les classes de Java: java.lang on es troben les classes fonamentals per a poder programar en Java i un subconjunt de les classes del paquet java.util. Java.lang inclou, entre d'altres, la classe java.lang.object que és la classe fonamental de la qual hereten o estenen totes les classes en Java. La resta dels paquets no estan suportats per GWT.
* GWT Web UI Class Library: conté un conjunt d'elements d'interfície d'usuari que permet la creació d'objectes tals com textos, caixes de text, imatges i botons.

## Característiques

* Components gràfics dinàmics i reusables: els programadors poden usar classes predissenyades per a implementar comportaments que d'altra manera consumirien molt temps, com arrossegar i soltar o menús en arbre.
* Simple mecanisme RPC.
* Gestió de l'historial del navegador web.
* Suport per a depurat de Java.
* Control de diferents característiques del navegador.
* Integració amb JUnit.
* Internacionalització.
* Els desenvolupadors poden barrejar codi escrit en Javascript dins del codi Java usant la Interfície Nadiva Javascript (*JSNI).
* Suport per a les API's de Google (inicialment, suport per a Google Gears).
* És de codi obert.
* Els desenvolupadors poden dissenyar i desenvolupar les seues aplicacions orientades a objectes. Errors comuns en Javascript, com la discrepància de tipus de dades, són controlats en temps de compilació.
* El codi Javascript generat pot ser ofuscat per a optimitzar el rendiment.
* Existeixen un nombrós conjunt de biblioteques desenvolupades per Google i tercers que amplien les funcionalitats de GWT.

## Complements disponibles

Des de la versió 1.4 (agost del 2007), GWT ofereix diversos complements:
* Elements HTML nadius, com botons, radio buttons, checkbox, caixes de text, etc.
* PushButton, ToggleButton.
* Barra de menú
* Menú en arbre.
* Pestanyes.

## Referències

* ↑ «Arxiu del llançament de Google Web Toolkit Release». Google. [Consulta: 25 setembre 2007].
* ↑ Olson, Steven Douglas. Ajax on Java. O'Reilly, 2007, p. 183. ISBN 978-0596101879.
* ↑ «Galeria de components». Google. Arxivat de l'original el 2007-09-05. [Consulta: 25 setembre 2007].

## Enllaços externs

* IT Entrevista amb el coautor de GWT (anglès)
* www.ongwt.com : Lloc web de notícies en GWT (anglès)
* Creació de solucions modulars amb Google Web Toolkit i Apache Maven Arxivat 2009-03-21 a Wayback Machine.