Qué hace diferente a Google Web Toolkit?
abril 15th, 2008
Google Web Toolkit es una herramienta para desarrollar interfaces web que lanzó Google hace un tiempo atrás como una de sus iniciativas open source. Para entender GWT se debe tener bien en claro un simple hecho:
Una vez comprendido este hecho se mitigan muchos de los mitos que ha creado la incursión de esta tecnología. No se puede comparar a GWT con ninguna de las librerías AJAX existentes actualmente. Existen varios tipos de librerías ajax cada una permitiendo una manera de programar en particular y a un nivel de abstracción determinado.
Tipos de Librerías AJAX
Nivel 1
Un primer tipo de librerías las llamaré librerías de nivel 1. Este tipo por lo general implementa un fácil acceso a las funcionalidades dom, encapsulación para el objeto xmlHttpRequest, soportes para orientación a objetos en javascript, abstracción con respecto a los distintos browsers.
Entre estas por ejemplo por ejemplo:
jQuery
Mootools
Prototype
YUI
Nivel 2
En un segundo nivel están aquellas que además de implementar lo anterior, ya sea porque de verdad lo implementan o porque usan librerías de nivel 1, implementan widgets o controles listos para usarse como campos autocompletables, editores de texto in-place, editores de texto enriquecido, sliders, controles drag n drop, paneles de diálogo, entre otros. Otra característica es que aún es necesario programar en javascript/html.
Entre estas:
Dojo
Scriptaculous
jQueryUI
YUI
ExtJS
Una versión de Echo 2 también está a este nivel.
Aquí también por justicia con Dojo incluiré a la librería Backbase aunque debo decir que bien podría incluirla en un nivel 2.5 porque provee un nivel de abstracción superior puesto que la interfaz se escribe en un tipo especial de XML que ellos han llamado BXML, sinembargo la codificación del BXML, el parsing del BXML y la interpretación es completamente del lado del cliente.
Nivel 3
En las librerías de nivel 3 están aquellas que generan javascript mediante código en el servidor. Aquí es difícil ponerlas en un solo grupo sinembargo si las catalogo estrictamente en el criterio mencionado anteriormente aquí estarían:
La librería ZK
Mediante un lenguaje de marcas ZUL se escribe la interfaz en el lado servidor y el ZK engine en el lado servidor interpreta el ZUL y genera el javascript necesario para construir la interfaz.
El framework Echo 2
Se escribe Java del lado del servidor al estilo Swing y lo transforma en Javascript que se envía al navegador. Requiere el uso de la plataforma Java en el servidor.
Seguro habrán otras librerías más por mencionar en este post, no he pretendido ser extensivo pero si existen otras que no he mencionado o creen que alguna debería ponerla en otro nivel pueden postear un comentario.
GWT
GWT no cae en ninguna de las categorías anteriores porque como dije anteriormente:
Por tanto:
GWT puede usarse conjuntamente con cualquier tecnología del lado servidor (PHP, JavaEE, Python, etc).
GWT nos provee un compilador.
Cuáles son las ventajas de GWT?
Escribir el código cliente en Java que de otra forma hubiera tenido que escribirlo en Javascript me permite llevar un mejor control de los cambios que hago en mi interfaz puesto que además del compilador, el toolkit provee un browser especial que ejecuta el código cliente en modo Java y permite observar los errores a manera de excepciones Java. Solo cuando el código está totalmente listo y probado entonces es compilado (compilar = generar el javascript a partir del código java).
Es una ventaja en rendimiento porque el código javascript generado por el compilador además de usar las técnicas habituales de compresión y ofuscación de código javascript, además permite hacer inlining. Inlining quiere decir que donde antes había la llamada a un método javascript, el compilador puede decidir en colocar el cuerpo del método en la porción generada para evitar la llamada a función. En este sentido GWT incorpora muchas mejoras al rendimiento.
En sí aún me falta mucho por comentar acerca de las ventajas y las funcionalidades que provee GWT sinembargo considero que en este post he descrito la base para trabajar con él, puesto que considero que esta herramienta aún no es bien comprendida por la mayoría de desarrolladores que no se han atrevido a probarla, una de las principales confusiones surge del hecho de que las aplicaciones se escriben en el lenguaje de programación Java.
Categorías: software