tutor: ing. juan e. talavera horn 2010 google web toolkit (gwt)

21
Tutor: Ing. Juan E. Talavera Horn 2010 Google Web Toolkit (GWT)

Upload: adolfo-roldan-farias

Post on 25-Jan-2016

216 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Tutor: Ing. Juan E. Talavera Horn 2010 Google Web Toolkit (GWT)

Tutor: Ing. Juan E. Talavera Horn

2010

Google Web Toolkit (GWT)

Page 2: Tutor: Ing. Juan E. Talavera Horn 2010 Google Web Toolkit (GWT)

Contenido

Introducción Ventajas Desventajas Arquitectura API GWT

Page 3: Tutor: Ing. Juan E. Talavera Horn 2010 Google Web Toolkit (GWT)

GWT. Manifiesto

Mejorar radicalmente la experiencia de los usuarios con la web permitiendo a los desarrolladores utilizar herramientas Java existentes para construir aplicaciones AJAX de manera sencilla e independientes del navegador utilizado.

Page 4: Tutor: Ing. Juan E. Talavera Horn 2010 Google Web Toolkit (GWT)

Introducción a GWT

Google Web Toolkit (GWT) es un framework de código abierto desarrollado por Google y lanzado en mayo del 2006 bajo la licencia Apache 2.0.

GWT permite crear aplicaciones AJAX utilizando el lenguaje de programación Java que son compiladas posteriormente por el compilador de GWT en código JavaScript optimizado para los principales navegadores.

Page 5: Tutor: Ing. Juan E. Talavera Horn 2010 Google Web Toolkit (GWT)

Ventajas de GWT (I)

No se necesita mucho conocimiento de otros lenguajes (JavaScript) Se utiliza el lenguaje de programación Java. Esto permite tener todas las ventajas de dicho

lenguaje y utilizar una gran cantidad de herramientas disponibles para el mismo.

Los errores comunes JavaScripts (typos, type mismatches) son capturados por el programador durante compilación en vez de por los usuarios durante la ejecución.

No se necesita trabajar con las incompatibilidades de los navegadores.

Page 6: Tutor: Ing. Juan E. Talavera Horn 2010 Google Web Toolkit (GWT)

Ventajas de GWT (II)

No se necesita mucho conocimiento del DOM API. Se utiliza Java API.

Compatible con varias herramientas para desarrollar/depurar/probar las aplicaciones.

Integración con JUnit.

Internacionalización.

Depuración en tiempo real

Page 7: Tutor: Ing. Juan E. Talavera Horn 2010 Google Web Toolkit (GWT)

Desventajas de GWT

No es un enfoque estándar de HTML y JavaScript La generación automática de HTML podría hacer más

difícil el uso de herramientas estándar de HTML y CSS. No se utiliza directamente código JavaScript en el HTML.

Sólo para desarrolladores Java. Muchos entornos Ajax permiten utilizar JavaScript en el

cliente y luego elegir el lenguaje en el servidor. GWT se encuentra basado enteramente en Java.

Enfoque Inusual. Lo cual hace que la evaluación y administración se más

díficil.

Page 8: Tutor: Ing. Juan E. Talavera Horn 2010 Google Web Toolkit (GWT)

Arquitectura de GWT

Page 9: Tutor: Ing. Juan E. Talavera Horn 2010 Google Web Toolkit (GWT)

Arquitectura de GWT (II) Compilador Java To JavaScript

Convierte código Java a código JavaScript.

Tiene tres modos en los que puede operar, los cuales determinan cómo se verá:

Obfuscate: por defecto. Genera código inentendible y altamente optimizado.

Pretty: genera código JavaScript entendible.

Detailed: produce código al igual que el modo pretty pero agregando el nombre completo de la clase como parte del nombre de las funciones.

El código JavaScript es generado en archivos para cada tipo de navegador e idioma. Al iniciar el navegador el mismo ejecuta código que permite obtener la versión correcta del archivo para la aplicación.

Page 10: Tutor: Ing. Juan E. Talavera Horn 2010 Google Web Toolkit (GWT)

Arquitectura de GWT (III)

Java Script Native Interface (JSNI)

A pesar de que se programe en Java en vez de JavaScript, en ocasiones se necesitará programar directamente en JavaScript, por ejemplo, para hacer referencia a partes del API del navegador que no esté soportado por GWT o para utilizar alguna librería JavaScript no muy común.

JSNI permite ejecutar JavaScript desde Java, como también Java desde JavaScript. Esto hace posible al compilador GWT que pueda mezclar código JavaScript nativo con el código que genera.

Page 11: Tutor: Ing. Juan E. Talavera Horn 2010 Google Web Toolkit (GWT)

Arquitectura de GWT (IV)

JRE Emulation Library

Esta librería da a GWT la habilidad de utilizar clases JRE en los proyectos y ser compilados luego a JavaScript.

Las clases pertenecen a un subconjunto de los paquetes java.lang y java.util, que incluyen clases para el manejo de números y fechas, operaciones matemáticas, excepciones, listas y colecciones, etc.

Page 12: Tutor: Ing. Juan E. Talavera Horn 2010 Google Web Toolkit (GWT)

GWT API (I)

Widgets y Paneles

GWT trae una gran cantidad de widgets y paneles. La diferencia entre ambos es que un widget es una especie de control utilizado por el usuario y un panel es un contenedor en el que pueden ser colocados los widgets.

Las clases GWT para la interfaz de usuario son similares a Swing o SWT.

A pesar de que existen más de 30 widgets y paneles, posiblemente no cubran todas las necesidades, por lo que se permite utilizar widgets y paneles de proyectos de código abierto, los que proveen calendarios, tablas ordenables, calculadoras, paneles para dibujo, etc.

Page 13: Tutor: Ing. Juan E. Talavera Horn 2010 Google Web Toolkit (GWT)

GWT API (II)

Page 14: Tutor: Ing. Juan E. Talavera Horn 2010 Google Web Toolkit (GWT)

GWT API (II)

Page 15: Tutor: Ing. Juan E. Talavera Horn 2010 Google Web Toolkit (GWT)

GWT API (III) Remote Procedure Call (RPC)

El mecanismo para interactuar con el servidor, de manera a hacer actualizaciones en la interfaz de usuario, es llamado Remote Procedure Call (RPC), también conocido como llamada al servidor (server call).

Los navegadores de hoy en día tienen un objeto JavaScript llamado XMLHttpRequest que permite este tipo de comunicación entre el navegador y el servidor sin que se refresque toda la página HTML.

GWT provee dos herramientas que utilizan el objeto XMLHttpRequest. La primera es la clase RequestBuilder que es esencialmente una envoltura para este objeto. La segunda herramienta es llamada GWT-RPC, y es más elaborada, permitiendo que puedan ser enviados y recibidos objetos Java entre el cliente y el servidor.

Page 16: Tutor: Ing. Juan E. Talavera Horn 2010 Google Web Toolkit (GWT)

GWT API (IV) Historial del Navegador

Cuando se reemplaza un pedazo de contenido en una página web de manera dinámica con JavaScript, el navegador no lo considera como un cambio de página, por lo que no registra en su historial. Esto causa que los botones Retroceder y Avanzar del navegador no se comporten como el usuario esperaría

GWT provee un mecanismo para administrar el historial del navegador que funciona con este tipo de aplicaciones. Para acceder al mismo, es necesario escribir un manejador de eventos que implemente la interfaz HistoryListener y luego éste debe ser registrado en el objeto History:

History.addHistoryListener(new MyHistoryListener());History.newItem("overview");History.newItem("reports");

Page 17: Tutor: Ing. Juan E. Talavera Horn 2010 Google Web Toolkit (GWT)

GWT API (V) Testeo

Development Mode (hosted mode en GWT 1.x): Modo de depuración donde se puede interactuar y probar al aplicación GWT sin ser traducida a javascript. Al correr en este modo la JVM esta ejecutando el código de la aplicación como un archivo ByteCode compilado.

Production Mode (web mode en GWT 1.x): Modo en que la aplicación es traducida a javascript, y ejecutada solamente por el explorador, sin uso de la JVM.

Page 18: Tutor: Ing. Juan E. Talavera Horn 2010 Google Web Toolkit (GWT)

GWT API (VI) Testeo

GWT incluye la clase base GWTTestCase que hereda de la clase base TestCase de Junit y de esta forma permite la integración con el mismo.

Para implementar la clase de prueba, GWT provee una herramienta llamada junitCreator que genera una clase de prueba más scripts para probar en los modos development mode y production mode.

También se puede utilizar otras herramientas como Selenium o WebDriver para realizar los test de la interfaz de usuario.

Page 19: Tutor: Ing. Juan E. Talavera Horn 2010 Google Web Toolkit (GWT)

GWT - Herramientas Herramientas de Línea de Comandos

projectCreator: Genera el esqueleto de un proyecto básico y un archivo Ant opcional y/o proyecto para Eclipse.

aplicationCreator: Genera el lanzador de una aplicación.

junitCreator: Genera un test Junit.

i18nCreator: Genera un archivo de propiedades i18n y un script de sincronización.

benchmarkViewer: Muestra resultados benchmark

Page 20: Tutor: Ing. Juan E. Talavera Horn 2010 Google Web Toolkit (GWT)

Plataforma de desarrollo

Eclipse Plugin de GWT para eclipse Development Kit y Runtime de GWT Browser (Firefox, IE, Chrome) Plugin para browser específico

Page 21: Tutor: Ing. Juan E. Talavera Horn 2010 Google Web Toolkit (GWT)

MemoryProxy<List<Ciudad>> ciudadProxy = new MemoryProxy<List<Ciudad>>(ciudades);

BeanModelReader ciudadReader = new BeanModelReader(); final BaseListLoader ciudadLoader = new BaseListLoader(ciudadProxy, ciudadReader);

final ListStore<BeanModel> ciudadStore = new ListStore<BeanModel>(ciudadLoader); final ComboBox<BeanModel> ciudadCombo = new ComboBox<BeanModel>();

ciudadCombo.setEmptyText(cons.comboSeleccionar()); ciudadCombo.setFieldLabel(cons.empleadoCiudad()); ciudadCombo.setDisplayField("nombre"); ciudadCombo.setStore(ciudadStore);

(Ciudad)ciudadCombo.getValue().getBean()