¿Qué es GWT?

Después de un tiempo considerable sin escribir en el Blog, he vuelto para darle un poco mas vida a este espacio.
El tema que me trae a colación es GWT o también conocido como Google Web Toolkit.
GWT es un framework desarrollado por Google y con un gran aporte de la comunidad, nació por el año 2006 y hoy se encuentra muy estable y robusto en la versión 2.4.
Todo aquel que ha desarrollado sistemas web seguramente a lideado con un montón de tecnologías, por ejemplo: Javascript, HTML, CSS en la construcción de sus aplicaciones AJAX. Además, todos hemos sufrido el gran problema de lograr compatibilidad entre los navegadores.
GWT es un plataforma que tiene la capacidad de lograr aplicaciones AJAX compatibles con todos los navegadores del mercado incluyendo móviles y el lenguaje de programación que utilizaremos será JAVA.
Parece confuso, pero la premisa es sencilla, programamos en Java y el framework nos genera nuestra aplicación en javascript.

Para lograr esto, la plataforma en su arquitectura tiene que contemplar la emulación de la JRE, es obvio que no toda la JRE debe ser emulada porque nuestro target es restringido, recordemos que nuestra aplicación resultante se ejecutará en un navegador web.
A continuación les dejo un enlace con descripción de la referencia de la emulación de la JRE: http://code.google.com/intl/es-419/webtoolkit/doc/1.6/RefJreEmulation.html

Otro de los componentes importantes es el compilador, éste es el que hace realmente la magia, toma como entrada nuestro código escrito en Java y genera una salida ofuscada de javascript por cada navegador y si queremos soportar internacionalización se generará una salida por cada idioma soportado y por cada navegador. Cabe destacar que no todo el código es compilado, solo la parte de nuestra aplicación que pretendemos correr en el cliente. Esto es configurable a través de módulos en los proyectos de GWT.

GWT cuenta con un conjunto de APIs que nos permiten la creación de nuestras interfaces gráficas, comunicación con el servidor mediante JSON, XML y un protocolo propio de GWT denominado RPC, soporte de internacionalización, gestión del historial, implementación de patrones como Model View Presenter, soporte para lograr Data binding mediante un framework llamado Editor y mucho más.

La pregunta que ustedes se pueden hacer mientras están leyendo es: ¿Porqué tener que usar GWT, si yo con JavaScript lo puedo hacer? La respuesta viene de la mano de la optimización y de la productividad.
Optimización es porque el compilador de GWT generará una salida optimizada para cada navegador lo que nos permitirá lograr lo que se denomina perfect caching, además de que los recursos están totalmente optimizados, por ejemplo, empleando el uso de la técnica de sprites en las imágenes.

La productividad esta enfocada en el uso de un lenguaje fuertemente tipado. Cuando desarrollamos en javascript, un gran porcentaje de errores vienen de la mano de errores ortográficos y posiblemente de distracción. Estos errores solo son descubiertos en tiempo de ejecución por la misma naturaleza del lenguaje. En Java esto no pasa, todos nuestros errores serán descubiertos en tiempo de compilación, y al usar un IDE como eclipse o netbeans, el mismo IDE nos indica que estamos cometiendo un error, por ejemplo en alguna asignación de variable.

Como el tiempo de compilación en GWT es grande, la plataforma provee dos modos de ejecución: Development Mode y Production Mode.
El primero, será el modo en el que estaremos la mayor parte del tiempo, en este modo no necesitamos compilar, nuestra aplicación correrá sobre la JVM, eso quiere decir que el código a ejecutar será bytecode. Esto nos ahorra mucho tiempo, porque ante cada cambio en el código del cliente solo debemos precionar F5 en el navegador para visualizarlos.

En Development Mode la plataforma se comunica con los navegadores mediante una conexión TCP, lo único que se impone es que el navegador debe tener un plugin para lograr correr nuestra app en este modo.

La productividad también está garantizada por la velocidad de desarrollo; ¿Alguna vez imaginaron hacer un debug en javascript? Con gwt se puede hacer un debug de toda la aplicación, controlar las variables, sus estados, etc.
Otra ventaja sobre aplicaciones nativas en javascript, es la posibilidad de realizar unidades de test de nuestro código. Esto, sumado a lo anterior mencionado logra agilizar nuestro ciclo de desarrollo.

Production Mode es el modo en el cual correra nuestra aplicación en producción. Para esto es necesario compilarla, lo que generará los archivos necesarios para que esta pueda ser desplegada.

El mundo de GWT es muy grande para comentarlo solo en un post, pero la idea es que sepan que esta tecnología es impulsada por Google, tiene detrás una gran comunidad de usuarios y desarrolladores contribuyendo y que hoy en su versión 2.4 está capacitada para dar solución a desarrollos a gran escala y aplicaciones empresariales.


Hasta la próxima.

Comentarios

Unknown dijo…
muy buena esa explicacion del gwt

Entradas más populares de este blog