SlideShare una empresa de Scribd logo
1 de 81
Desarrollo de Aplicaciones Web 2.0 con Google Web Toolkit Emilio Bravo Garcia
En esta presentación se va a realizar una introducción a Google Web Toolkit (en adelante GWT). GWT es una tecnología desarrollada por  Google para acelerar el desarrollo de Aplicaciones Ricas de Internet (RIA) y mejorar la experiencia del usuario. Google Web Toolkit
Introduccion a GWT El framework Google Web Toolkit
Introducción WEB 2.0 (http://es.wikipedia.org/wiki/Web_2.0) El término Web 2.0 es asociado usualmente con Tim O'Reilly debido a la referencia hecha en la conferencia O'Reilly Media Web 2.0 en 2004. El término fue utilizado para referirse a una segunda generación en la historia del desarrollo de tecnología Web basada en comunidades de usuarios y una gama especial de servicios, como las redes sociales, los blogs, los wikis o las folcsonomías, que fomentan la colaboración y el intercambio ágil y eficaz de información entre los usuarios. La Web 2.0 es también llamada web social.
Introducción WEB 2.0 Componente Social. Los sitios web 2.0 permiten a los usuario interactuar con la aplicacion aportando información y enriquecer el sitio con su uso. Estas webs suelen tener una "Arquitectura de Participación" que anima a los usuario a añadir valor conforme usan la aplicacion. Componente Tecnológico. La tecnologia normalmente usada en el desarrollo de aplicaciones web 2.0 es AJAX. Ajax utiliza JavaScript intercambiar datos del servidor web de forma asincrona sin tener que realizar una recarga completa de la pagina.
Introducción En esta presentación nos vamos a centrar en la parte tecnológica de la Web 2.0.  Veremos como Google Web Toolkit nos facilita el desarrollo de aplicaciones Web 2.0
Introducción AJAX (http://es.wikipedia.org/wiki/AJAX) AJAX, acrónimo de Asynchronous JavaScript And XML, es una técnica de desarrollo web para crear aplicaciones interactivas o RIA (Rich Internet Applications). Estas aplicaciones se ejecutan en el navegador de los usuarios mientras se mantiene la comunicación asíncrona con el servidor en segundo plano. De esta forma es posible realizar cambios sobre las páginas sin necesidad de recargarlas, lo que significa aumentar la interactividad, velocidad y usabilidad en las aplicaciones.
Introducción AJAX no constituye una tecnología en sí, sino que es un término que engloba a un grupo de éstas que trabajan conjuntamente, XTML, CSS, JavaScript, XMLHttpRequest, XML o JSON para la transferencia de datos con el servidor.
Introducción RIA (http://en.wikipedia.org/wiki/Rich_internet_applications) La aplicaciones RIA son aplicaciones web con muchas de las características de las aplicaciones de escritorio, normalmente entregadas ya sea por medio de webs basadas en los estándares de los navegadores, vía plugins del navegador, o independientemente vía sandboxes o maquinas virtuales.
Introducción Desarrollar aplicaciones RIA utilizando JavaScript tiene una serie de inconvenientes: Conseguir que nuestro código JavaScript sea cross-browser (funcione sin problemas en la mayoría de navegadores). Modularizacion del código cuando las aplicaciones crecen. Falta de herramientas avanzadas para el desarrollo con JavaScript. Necesidad de tener un conocimiento avanzado en JavaScript para obtener aplicaciones optimizadas.
Introducción Una primera solución a los problemas anteriores son los Frameworks JavaScript.
Introducción Aunque los frameworks JavaScript solucionan alguno de los problemas anteriores y pueden ser una buena solución en muchos casos, no solucionan todos los problemas. En Google decidieron realizar una nueva caja de herramientas para acelerar el desarrollado de aplicaciones RIA basadas en AJAX mejorando la experiencia del usuario.
Introducción Manifiesto GWT La misión de GWT es mejorar radicalmente la experiencia de los usuarios con la web permitiendo a los desarrolladores utilizar las herramientas Java existentes para construir aplicaciones Ajax  independientes del navegador.
Introducción Google Web Toolkit (GWT) permite crear aplicaciones AJAX en el lenguaje de programación Java que son compiladas en código JavaScript optimizado para los principales navegadores.  Código disponible bajo la licencia Apache 2.0
Introducción Programas en Java Depuras en Java Pruebas en Java GWT compila de Java a JavaScript Despliegas en JavaScript
Introducción Porque Java? Google eligió Java sobre todo por las herramientas existentes, además de por las librerías, libros, artículos y la amplia comunidad de desarrolladores. También necesitaban un lenguaje fuertemente tipado para la fase de compilación y java cumplía con este requerimiento.
Introducción Mejora la experiencia de usuario. Al ejecutarse la interfaz de usuario en el navegador, la interacción del usuario con la aplicación es mas fluida. Al no ser necesario llamar al servidor para renderizar las paginas ya no tendremos el efecto de pagina en blanco.
Introducción Obtenemos un mayor rendimiento y  una mejor escalabilidad que con las aplicaciones web tradicionales.
Arquitectura GWT El framework Google Web Toolkit
Arquitectura GWT GWT tiene cuatro componentes principales Java-to-JavaScript Compiler. Hosted Web Browser. JRE Emulation Library. GWT Web UI Class Library
Arquitectura GWT GWT Java-to-JavaScript Compiler: la función del componente es traducir el código desarrollado en Java al lenguaje JavaScript compatible con los navegadores mas utilizados.
Arquitectura GWT Hosted Web Browser: este componente ejecuta la aplicación Java sin traducirla a JavaScript, en modo host usando la máquina virtual de Java. Utiliza Jetty como servidor embebido.
Arquitectura GWT JRE Emulation Library: contiene las bibliotecas más importantes de las clases de Java. GWT emula parte de la API de Java. http://code.google.com/intl/es-ES/webtoolkit/doc/1.6/RefJreEmulation.html java.lang java.lang.annotation java.util java.io java.sql
Arquitectura GWT GWT Web UI Class Library: contiene un conjunto de elementos de interfaz de usuario que permite la creación de objetos tales como textos, cajas de texto, imágenes , botones y otros widgets.
Arquitectura GWT
Construyendo la interfaz El framework Google Web Toolkit
Construyendo la interfaz de Usuario Las  clases de GWT para la interfaz de usuario son similares a Swing o SWT.  Componentes, contendores y eventos. Podemos dar estilo a los widgets utilizando CSS.
Construyendo la interfaz de Usuario Al desarrollar en Java, podemos utilizar los entornos de desarrollo mas populares para Java (Eclipse,NetBeans, IntelliJ).  Podemos realizar abstracciones y utilizar patrones de diseño orientados a objetos (OO) basados en Java. Empaquetando las clases en archivos jar podemos crear módulos reutilizables fáciles de utilizar en otros proyectos.
Construyendo la interfaz de Usuario Patrón MVP en vez de MVC
Construyendo la interfaz de Usuario Ficheros de configuración para una aplicación GWT Fichero gwt.xml donde definimos la aplicación y sus dependencias. Fichero Html desde el que iniciamos el código JavaScript Fichero CSS con los estilos. Clase Java que implementa el EntryPoint (el main para GWT).
Construyendo la interfaz de Usuario Modulo BarCampValencia.gwt.xml <module > 	<inherits name="com.google.gwt.user.User"/> 	<inherits name="com.google.gwt.xml.XML"/> 	<inherits name="com.google.gwt.json.JSON"/> 	<inherits name='com.google.gwt.gears.Gears'/> 	<inherits name="com.google.gwt.i18n.I18N"/> 	<entry-point class="es.i2e.barcampvalencia.web.client. BarCampValencia"/> </module>
Construyendo la interfaz de Usuario Html de inicio (BarCampValencia.html) <html>     <head>         <title>Wrapper HTML for BarCampValencia</title>         <meta name='gwt:module' content='es.i2e.barcampvalencia.web. BarCampValencia'/>         <link type="text/css" rel='stylesheet' href='BarCampValencia.css'/>         <script type="text/javascript"  language="javascript" src="barCampValencia/barCampValencia.nocache.js"></script>     </head>     <body>         <!-- OPTIONAL: include this if you want history support -->         <iframe id="__gwt_historyFrame" style="width:0;height:0;border:0"></iframe>     </body> </html>
Construyendo la interfaz de Usuario BarCampValencia.css .gwt-Label { 	font-size: 12px; 	font-family: Verdana, Arial, sans-serif; } .gwt-RadioButton{ 	font-size: 12px; 	font-family: Verdana, Arial, sans-serif; } .gwt-PasswordTextBox{ 	font-family:  Verdana, Arial, sans-serif; 	font-size: 12px;  	color: #FFFFFF;  	background-color: #C89191;  	border: #990000 1px solid;  }
Construyendo la interfaz de Usuario EntryPoint (BarCampValencia.java) package es.i2e.barcampvalencia.web.client; import com.google.gwt.core.client.EntryPoint; import com.google.gwt.core.client.GWT; public class Principal implements EntryPoint, HistoryListener  { 	public void onModuleLoad() { //controlamos la navegacion por la aplicacion History.addHistoryListener(this); 		final RootPanel rootPanel = RootPanel.get(); 		rootPanel.setSize("100%", "100%"); 		private DockPanel panel = new DockPanel(); 		panel.setSize("100%", "100%"); 		rootPanel.add(panel); 	} 	public void onHistoryChanged(String historyToken) { 	} }
Construyendo la interfaz de Usuario Si la biblioteca de clases de GWT no satisface tus necesidades, puedes mezclar JavaScript manualmente en el código fuente Java mediante la interfaz JSNI o JSO.  Si ya tienes código JavaScript puedes envolverlo usando JSNI y crear un paquete jar para que el resto del equipo pueda reutilizarlo fácilmente. var first_name = “Frank”; public native String getFirstName()/*-{ return $wnd.first_name; }-*/;
Construyendo la interfaz de Usuario JSO Nos permite utilizar código externo JavaScript como si fueran tipos de java. public class Customer extends JavaScriptObject {    public final native String getFirstName() /*-{ return this.first_name; }-*/;     public final native String getLastName() /*-{ return this.last_name; }-*/;    public final native int computeAge() /*-{ return this.getComputedAge(); }-*/;     final native String getArea();}
Internacionalización y Accesibilidad Puedes crear fácilmente bibliotecas y aplicaciones internacionalizadas con las potentes técnicas de vinculación aplazada de GWT.  ARIA es la especificación del W3C para hacer las aplicaciones RIA  accesibles a través de propiedades estándar del DOM.
Librerías de Widgets GWT GWT Incubator Smart GWT GWT-Ext IT Mill Toolkit GWT mosaic
Herramientas de Desarrollo GWT Designer ,[object Object]
Cypal Studio for GWT, IntelliJ IDEA, gwt4nb (NetBeans),[object Object]
Construyendo la interfaz de Usuario Mejoras introducidas en GWT 2.0 Interfaces de usuario declarativas con UiBinder. Inyección de CSS en función del navegador (StyleInjector). Construcción de recursos via ClientBundle. Particiones de código guiadas por el desarrollador. El código JavaScript se descargar bajo peticion del programador  (GWT.runAsync() )
Construyendo la interfaz de Usuario UIBinder Permite definir la interfaz mediante xml, lo que hace mas sencillo definir la estructura de la interfaz de usuario. http://code.google.com/p/google-web-toolkit-incubator/wiki/UiBinder <ui:UiBinder xmlns:ui='urn:ui.com.google.gwt.uibinder'> <div> Hello, <span ui:field='nameSpan'/>. </div> </ui:UiBinder>
Construyendo la interfaz de Usuario La CSS no se interpreta igual en todos los navegadores. GWT Abstrae de la implementacion de JavaScript para los diferentes navegadores pero no de la CSS. En la versión 2.0 han introducido StyleInjector + CssResource. Diferentes Css para diferentes navegadores. Modularización de Css, solo se descarga cuando se necesita. http://code.google.com/p/google-web-toolkit/wiki/CssResource @if user.agent safari { webkit-border-radius: 5px; }
Construyendo la interfaz de Usuario ImageBundle y ClientBundle public interface BarCampValenciaImageBundle extends ImageBundle {    @Resource("es/i2e/barcampvalencia/icons/btn_cancel_icon.png")    public AbstractImagePrototype cancelButtonIcon();  }
Construyendo la interfaz de Usuario GWT.runAsync() señala un punto de corte al compilador de GWT. Descarga lo que necesites, cuando lo necesites, lo recursos (CSS, imágenes, msgs) vienen con el código que los utilice. Automáticamente manejado por el compilador de GWT http://code.google.com/p/google-web-toolkit/wiki/CodeSplitting public void onNewWaveClicked() {     GWT.runAsync(new RunAsyncCallback() {         public void onSuccess() {             WaveCreator.createNewWave();         }    }); }
Comunicación con el servidor El framework Google Web Toolkit
Comunicación con el servidor GWT puede comunicarse con cualquier tecnología de servidor, realizando llamadas AJAX desde el cliente y transportando la información utilizando JSON o XML.
Comunicación con el servidor GWT proporciona por defecto el mecanismo GWT RPC el cual nos permite realizar llamadas remotas a Servlets, GWT se encarga de la serializacion entre Java <-> JSON para realizar las llamada. Es un mecanismo similar a RMI en Java. En la parte cliente implementamos las siguiente clases: BarCampValenciaService.java BarCampValenciaServiceAsyn.java En la parte servidor implementamos: BarCampValenciaServiceImpl.java
Comunicación con el servidor Código en el cliente para realizar una llamada asíncrona a un servicio GWT RPC. AsyncCallback asyncCallback = new AsyncCallback() 	public void onFailure (Throwable caught) { 		System.err.println("Fallo en la carga de la configuracion"); 	} 	public void onSuccess (Object result) { 		System.out.println("Cargada la configuracion"); 	} }; BarCampValenciaService.Util.getInstance().obtenerAsistentes(asyncCallback);
Comunicación con el servidor Código en el servidor que recibe las llamas del cliente JavaScript. package es.i2e.barcampvalencia.web.server.servicios.inicio; import com.google.gwt.user.server.rpc.RemoteServiceServlet; import es.i2e.barcampvalencia.web.client.servicios.inicio. BarCampValencia; import es.i2e.barcampvalencia.web.client.util.GwtServiceException; public class BarCampValenciampl extends RemoteServiceServlet implements BarCampValenciaService { 	public void obtenerAsistentes()  throws GwtServiceException{ 	} }
Comunicación con el servidor Podemos realizar llamadas remotas a servicios en cualquier tecnología de servidor, en este caso deberemos manejar directamente en XML o JSON los datos enviados entre cliente y servidor.
Depuración y TEST El framework Google Web Toolkit
Depuración  Durante el desarrollo de una aplicación, se pueden ver inmediatamente los cambios realizados en el código mediante el navegador de modo alojado (hosted mode) de GWT. No es necesario volver a compilar el código en JavaScript.  El código se ejecutará en la maquina virtual de Java como bytecode. Todo lo que pueda hacer el depurador de Java se aplicará también al código GWT.
Depuración  La comprobación de tipo estático en lenguaje Java permite detectar una clase de errores (errores ortográficos, tipos no coincidentes) en el momento de la creación del código, no durante la ejecución del programa, lo que aumenta la productividad y reduce los errores..
Depuración  A partir de GWT 2.0 se puede depurar desde el navegador (Out-of-process Hosted Mode (OOPHM), Podemos ejecutar la aplicación en el navegador de nuestra elección y utilizar herramientas como firebug mientras depuramos desde Eclipse.
Testeo GWT incluye la clase base GWTTestCase que proporciona la integración con Junit.  GWT lanza una instancia del hosted mode para ejecutar los test. Mediante la herramienta junitCreator genera todo lo necesario para poder ejecutar los test. También podemos utilizar herramientas como Selenium o WebDriver para realizar los test de la interfaz de usuario.
Testeo En  GWT 2.0 se ha introducido HtmlUnit para ejecutar los test basado en GWTTestCase, antes de la versión 2.0 GWTTestCase estaba basado en SWT y código nativo de los navegadores para ejecutar los tets.  Al estar HtmlUnit escrito enteramente en Java no necesitaremos ejecutar el navegador. También podemos depurar los test desde el depurador de Java.
Compilacion El framework Google Web Toolkit
GWT compila el código Java en archivos JavaScript independientes que estarán disponibles a través de cualquier servidor web. Las aplicaciones GWT admiten automáticamente los navegadores IE, Firefox, Mozilla, Safari y Opera. Escribe el código una vez y GWT lo convertirá al formato JavaScript más adecuado para el navegador de cada usuario. Compilación
Compilación
Compilación
Compilación Los  desarrolladores de gwt creen firmemente que GWT genera mejor codigo javaScript que el que podemos obtener desarrollandolo manualmente. El compilador tambien realiza una optimizacion del tamaño de los archivos GWT para que el envio al cliente sea lo mas rapido posible
Despliegue El framework Google Web Toolkit
Despliegue Las aplicaciones de GWT se empaquetan en un war y se pueden desplegar en cualquier contenedor de Servlets estándar. Si no hemos utilizado Java para los servicios remotos podemos desplegar en cualquier  servidor web http  como Apache. Se puede utilizar ant o maven para automatizar el proceso de compilación, empaquetamiento y despliegue.
Despliegue GWT genera un archivo optimizado para cada navegador soportado por el compilador . Cuando un navegador se conecta a GWT el archivo nocache.js detecta el navegador del cliente y le envía el código JavaScript generado para ese navegador.
Aplicaciones de ejemplo El framework Google Web Toolkit
Google Wave
Google Health
Seesmic Web
Lombardi Blueprint
Trabber
scenechronize
Wwwar.net
gwt-commerce
Realizada por I2EGestión Recobro de Deudas
Realizada por I2E Gestión Recobro de Deudas
Realizada por I2E Donderepostar.com
Realizada por I2E Extranet Asesoría Profesional Jucarpe
Referencias http://code.google.com/intl/es-ES/webtoolkit/ http://code.google.com/intl/es-ES/webtoolkit/doc/1.6/DevGuide.html http://gwtgallery.appspot.com/ http://code.google.com/intl/es-ES/events/io/sessions.html#gwt http://groups.google.com/group/Google-Web-Toolkit
¿Preguntas?
Gracias Por su atención http://www.i2e.com.es Twitter: i2e_es emilio@i2e.com.es  i2e@i2e.com.es

Más contenido relacionado

La actualidad más candente

Gwt seminario java_hispano_manolocarrasco
Gwt seminario java_hispano_manolocarrascoGwt seminario java_hispano_manolocarrasco
Gwt seminario java_hispano_manolocarrascoManuel Carrasco Moñino
 
J query el framework de la web luc van lancker-1504
J query el framework de la web    luc van lancker-1504J query el framework de la web    luc van lancker-1504
J query el framework de la web luc van lancker-1504Vanessa Carlos
 
Manual de jquery en pdf desarrollowebcom
Manual de jquery en pdf desarrollowebcomManual de jquery en pdf desarrollowebcom
Manual de jquery en pdf desarrollowebcomjo_ram
 
OpenVidu Commitconf 2018
OpenVidu Commitconf 2018 OpenVidu Commitconf 2018
OpenVidu Commitconf 2018 Micael Gallego
 
Google Web Toolkit (GWT) en entornos empresariales
Google Web Toolkit (GWT) en entornos empresarialesGoogle Web Toolkit (GWT) en entornos empresariales
Google Web Toolkit (GWT) en entornos empresarialesTecsisa
 
TEMA Nº 1: INTRODUCCIÓN A J2EE
TEMA Nº 1: INTRODUCCIÓN A J2EETEMA Nº 1: INTRODUCCIÓN A J2EE
TEMA Nº 1: INTRODUCCIÓN A J2EEAnyeni Garay
 
Software libre para videoconferencias
Software libre para videoconferenciasSoftware libre para videoconferencias
Software libre para videoconferenciasMicael Gallego
 
Programacion de una tienda virtual en Grails
Programacion de una tienda virtual en GrailsProgramacion de una tienda virtual en Grails
Programacion de una tienda virtual en GrailsGabriel Bermudez
 
Definición y función de lenguaje java script
Definición y  función de lenguaje java scriptDefinición y  función de lenguaje java script
Definición y función de lenguaje java scriptAndres Rodriguez
 

La actualidad más candente (17)

Gwt seminario java_hispano_manolocarrasco
Gwt seminario java_hispano_manolocarrascoGwt seminario java_hispano_manolocarrasco
Gwt seminario java_hispano_manolocarrasco
 
Exposicion GWT
Exposicion GWTExposicion GWT
Exposicion GWT
 
Net Beans
Net BeansNet Beans
Net Beans
 
Manual jquery
Manual jqueryManual jquery
Manual jquery
 
J query el framework de la web luc van lancker-1504
J query el framework de la web    luc van lancker-1504J query el framework de la web    luc van lancker-1504
J query el framework de la web luc van lancker-1504
 
Manual de jquery en pdf desarrollowebcom
Manual de jquery en pdf desarrollowebcomManual de jquery en pdf desarrollowebcom
Manual de jquery en pdf desarrollowebcom
 
Análisis del Whitepaper DB4O
Análisis del Whitepaper DB4OAnálisis del Whitepaper DB4O
Análisis del Whitepaper DB4O
 
OpenVidu Commitconf 2018
OpenVidu Commitconf 2018 OpenVidu Commitconf 2018
OpenVidu Commitconf 2018
 
Dreamweaver
DreamweaverDreamweaver
Dreamweaver
 
ATIX21
ATIX21ATIX21
ATIX21
 
Google Web Toolkit (GWT) en entornos empresariales
Google Web Toolkit (GWT) en entornos empresarialesGoogle Web Toolkit (GWT) en entornos empresariales
Google Web Toolkit (GWT) en entornos empresariales
 
Gwt II - trabajando con gwt
Gwt II - trabajando con gwtGwt II - trabajando con gwt
Gwt II - trabajando con gwt
 
TEMA Nº 1: INTRODUCCIÓN A J2EE
TEMA Nº 1: INTRODUCCIÓN A J2EETEMA Nº 1: INTRODUCCIÓN A J2EE
TEMA Nº 1: INTRODUCCIÓN A J2EE
 
Software libre para videoconferencias
Software libre para videoconferenciasSoftware libre para videoconferencias
Software libre para videoconferencias
 
Unidad 1
Unidad 1Unidad 1
Unidad 1
 
Programacion de una tienda virtual en Grails
Programacion de una tienda virtual en GrailsProgramacion de una tienda virtual en Grails
Programacion de una tienda virtual en Grails
 
Definición y función de lenguaje java script
Definición y  función de lenguaje java scriptDefinición y  función de lenguaje java script
Definición y función de lenguaje java script
 

Destacado

Gwt manual de instalacion
Gwt   manual de instalacionGwt   manual de instalacion
Gwt manual de instalacionVLASLOV
 
Ajax: Un nuevo enfoque - flisol2008
Ajax: Un nuevo enfoque - flisol2008Ajax: Un nuevo enfoque - flisol2008
Ajax: Un nuevo enfoque - flisol2008Juan Carbajal
 
Implementación de un sistema para el control de las ventas en la empresa CON...
Implementación de un sistema  para el control de las ventas en la empresa CON...Implementación de un sistema  para el control de las ventas en la empresa CON...
Implementación de un sistema para el control de las ventas en la empresa CON...Rafael Marcos Vásquez Felipe
 
Requerimientos de un Sistema (usando criterios del swebok)
Requerimientos de un Sistema (usando criterios del swebok)Requerimientos de un Sistema (usando criterios del swebok)
Requerimientos de un Sistema (usando criterios del swebok)Miguel Miranda
 
Javascript Módulo 7 - PROFUNDIZACIÓN EN ARRAYS, OBJETOS, PROPIEDADES, MÉTODOS...
Javascript Módulo 7 - PROFUNDIZACIÓN EN ARRAYS, OBJETOS, PROPIEDADES, MÉTODOS...Javascript Módulo 7 - PROFUNDIZACIÓN EN ARRAYS, OBJETOS, PROPIEDADES, MÉTODOS...
Javascript Módulo 7 - PROFUNDIZACIÓN EN ARRAYS, OBJETOS, PROPIEDADES, MÉTODOS...David Zapateria Besteiro
 
Javascript Módulo 5 - javascript sentencia, expresión, variable, función - Un...
Javascript Módulo 5 - javascript sentencia, expresión, variable, función - Un...Javascript Módulo 5 - javascript sentencia, expresión, variable, función - Un...
Javascript Módulo 5 - javascript sentencia, expresión, variable, función - Un...David Zapateria Besteiro
 
Javascript - Módulo 4: Booleano, if/else, string, número, DOM, eventos e inte...
Javascript - Módulo 4: Booleano, if/else, string, número, DOM, eventos e inte...Javascript - Módulo 4: Booleano, if/else, string, número, DOM, eventos e inte...
Javascript - Módulo 4: Booleano, if/else, string, número, DOM, eventos e inte...David Zapateria Besteiro
 
Javascript Módulo 5 - Bucles, Arrays. Funciones como objectos. Ámbitos. Cierr...
Javascript Módulo 5 - Bucles, Arrays. Funciones como objectos. Ámbitos. Cierr...Javascript Módulo 5 - Bucles, Arrays. Funciones como objectos. Ámbitos. Cierr...
Javascript Módulo 5 - Bucles, Arrays. Funciones como objectos. Ámbitos. Cierr...David Zapateria Besteiro
 
Javascript - Módulo 9: Geolocalización en HTML5, Google maps, y SVG
Javascript - Módulo 9: Geolocalización en HTML5, Google maps, y SVGJavascript - Módulo 9: Geolocalización en HTML5, Google maps, y SVG
Javascript - Módulo 9: Geolocalización en HTML5, Google maps, y SVGDavid Zapateria Besteiro
 
Javascript - Módulo 8: LocalStorage, iFrames, Origin policy y JSON
Javascript - Módulo 8: LocalStorage, iFrames, Origin policy y JSONJavascript - Módulo 8: LocalStorage, iFrames, Origin policy y JSON
Javascript - Módulo 8: LocalStorage, iFrames, Origin policy y JSONDavid Zapateria Besteiro
 

Destacado (11)

Gwt manual de instalacion
Gwt   manual de instalacionGwt   manual de instalacion
Gwt manual de instalacion
 
Ajax: Un nuevo enfoque - flisol2008
Ajax: Un nuevo enfoque - flisol2008Ajax: Un nuevo enfoque - flisol2008
Ajax: Un nuevo enfoque - flisol2008
 
Implementación de un sistema para el control de las ventas en la empresa CON...
Implementación de un sistema  para el control de las ventas en la empresa CON...Implementación de un sistema  para el control de las ventas en la empresa CON...
Implementación de un sistema para el control de las ventas en la empresa CON...
 
Sistema de ventas monografia
Sistema de ventas   monografiaSistema de ventas   monografia
Sistema de ventas monografia
 
Requerimientos de un Sistema (usando criterios del swebok)
Requerimientos de un Sistema (usando criterios del swebok)Requerimientos de un Sistema (usando criterios del swebok)
Requerimientos de un Sistema (usando criterios del swebok)
 
Javascript Módulo 7 - PROFUNDIZACIÓN EN ARRAYS, OBJETOS, PROPIEDADES, MÉTODOS...
Javascript Módulo 7 - PROFUNDIZACIÓN EN ARRAYS, OBJETOS, PROPIEDADES, MÉTODOS...Javascript Módulo 7 - PROFUNDIZACIÓN EN ARRAYS, OBJETOS, PROPIEDADES, MÉTODOS...
Javascript Módulo 7 - PROFUNDIZACIÓN EN ARRAYS, OBJETOS, PROPIEDADES, MÉTODOS...
 
Javascript Módulo 5 - javascript sentencia, expresión, variable, función - Un...
Javascript Módulo 5 - javascript sentencia, expresión, variable, función - Un...Javascript Módulo 5 - javascript sentencia, expresión, variable, función - Un...
Javascript Módulo 5 - javascript sentencia, expresión, variable, función - Un...
 
Javascript - Módulo 4: Booleano, if/else, string, número, DOM, eventos e inte...
Javascript - Módulo 4: Booleano, if/else, string, número, DOM, eventos e inte...Javascript - Módulo 4: Booleano, if/else, string, número, DOM, eventos e inte...
Javascript - Módulo 4: Booleano, if/else, string, número, DOM, eventos e inte...
 
Javascript Módulo 5 - Bucles, Arrays. Funciones como objectos. Ámbitos. Cierr...
Javascript Módulo 5 - Bucles, Arrays. Funciones como objectos. Ámbitos. Cierr...Javascript Módulo 5 - Bucles, Arrays. Funciones como objectos. Ámbitos. Cierr...
Javascript Módulo 5 - Bucles, Arrays. Funciones como objectos. Ámbitos. Cierr...
 
Javascript - Módulo 9: Geolocalización en HTML5, Google maps, y SVG
Javascript - Módulo 9: Geolocalización en HTML5, Google maps, y SVGJavascript - Módulo 9: Geolocalización en HTML5, Google maps, y SVG
Javascript - Módulo 9: Geolocalización en HTML5, Google maps, y SVG
 
Javascript - Módulo 8: LocalStorage, iFrames, Origin policy y JSON
Javascript - Módulo 8: LocalStorage, iFrames, Origin policy y JSONJavascript - Módulo 8: LocalStorage, iFrames, Origin policy y JSON
Javascript - Módulo 8: LocalStorage, iFrames, Origin policy y JSON
 

Similar a Desarrollo de Aplicaciones Web 2.0 con GWT

Aprendiendo a Programas en 4 horas JavaScript
Aprendiendo a Programas en 4 horas JavaScriptAprendiendo a Programas en 4 horas JavaScript
Aprendiendo a Programas en 4 horas JavaScriptKarsarmi
 
Web20
Web20Web20
Web20UJAP
 
Jc Web20 Open Source Why Floss2007
Jc Web20 Open Source Why Floss2007Jc Web20 Open Source Why Floss2007
Jc Web20 Open Source Why Floss2007guest976d083
 
Linea del tiempo de los frameworks
Linea del tiempo de los frameworksLinea del tiempo de los frameworks
Linea del tiempo de los frameworksJose Alejandro
 
Jc Web20 Open Source Why Floss2007
Jc Web20 Open Source Why Floss2007Jc Web20 Open Source Why Floss2007
Jc Web20 Open Source Why Floss2007guestd24c393
 
[ES] Introducción a las Aplicaciones Web con Java
[ES] Introducción a las Aplicaciones Web con Java[ES] Introducción a las Aplicaciones Web con Java
[ES] Introducción a las Aplicaciones Web con JavaEudris Cabrera
 
EQUIPO 2,2A PARTE DE REVISION DE TECNOLOGIAS WEB
EQUIPO 2,2A PARTE DE REVISION DE TECNOLOGIAS WEBEQUIPO 2,2A PARTE DE REVISION DE TECNOLOGIAS WEB
EQUIPO 2,2A PARTE DE REVISION DE TECNOLOGIAS WEBUNIV DE CIENCIAS Y ARTES
 
EQUIPO 2,2A PARTE DE REVISION DE TECNOLOGIAS WEB
EQUIPO 2,2A PARTE DE REVISION DE TECNOLOGIAS WEBEQUIPO 2,2A PARTE DE REVISION DE TECNOLOGIAS WEB
EQUIPO 2,2A PARTE DE REVISION DE TECNOLOGIAS WEBUNIV DE CIENCIAS Y ARTES
 
Barcelona Workshop 2008
Barcelona Workshop 2008Barcelona Workshop 2008
Barcelona Workshop 2008Mitusin
 
Building Ria Applications With Silverlight 2
Building Ria Applications With Silverlight 2Building Ria Applications With Silverlight 2
Building Ria Applications With Silverlight 2Tonymx
 

Similar a Desarrollo de Aplicaciones Web 2.0 con GWT (20)

Aprendiendo a Programas en 4 horas JavaScript
Aprendiendo a Programas en 4 horas JavaScriptAprendiendo a Programas en 4 horas JavaScript
Aprendiendo a Programas en 4 horas JavaScript
 
Web20
Web20Web20
Web20
 
Jc Web20 Open Source Why Floss2007
Jc Web20 Open Source Why Floss2007Jc Web20 Open Source Why Floss2007
Jc Web20 Open Source Why Floss2007
 
Web20 With Ajax
Web20 With AjaxWeb20 With Ajax
Web20 With Ajax
 
Linea del tiempo de los frameworks
Linea del tiempo de los frameworksLinea del tiempo de los frameworks
Linea del tiempo de los frameworks
 
Jc Web20 Open Source Why Floss2007
Jc Web20 Open Source Why Floss2007Jc Web20 Open Source Why Floss2007
Jc Web20 Open Source Why Floss2007
 
[ES] Introducción a las Aplicaciones Web con Java
[ES] Introducción a las Aplicaciones Web con Java[ES] Introducción a las Aplicaciones Web con Java
[ES] Introducción a las Aplicaciones Web con Java
 
Javascript
JavascriptJavascript
Javascript
 
javascript
javascriptjavascript
javascript
 
ProjectZero
ProjectZeroProjectZero
ProjectZero
 
Servicio web.lauraivettecolinvillarreal
Servicio web.lauraivettecolinvillarrealServicio web.lauraivettecolinvillarreal
Servicio web.lauraivettecolinvillarreal
 
EQUIPO 2,2A PARTE DE REVISION DE TECNOLOGIAS WEB
EQUIPO 2,2A PARTE DE REVISION DE TECNOLOGIAS WEBEQUIPO 2,2A PARTE DE REVISION DE TECNOLOGIAS WEB
EQUIPO 2,2A PARTE DE REVISION DE TECNOLOGIAS WEB
 
Ajax tsis
Ajax tsisAjax tsis
Ajax tsis
 
EQUIPO 2,2A PARTE DE REVISION DE TECNOLOGIAS WEB
EQUIPO 2,2A PARTE DE REVISION DE TECNOLOGIAS WEBEQUIPO 2,2A PARTE DE REVISION DE TECNOLOGIAS WEB
EQUIPO 2,2A PARTE DE REVISION DE TECNOLOGIAS WEB
 
Jquery
JqueryJquery
Jquery
 
Google Web Toolkit
Google Web ToolkitGoogle Web Toolkit
Google Web Toolkit
 
Dreamweaver
DreamweaverDreamweaver
Dreamweaver
 
Java Scripts
Java ScriptsJava Scripts
Java Scripts
 
Barcelona Workshop 2008
Barcelona Workshop 2008Barcelona Workshop 2008
Barcelona Workshop 2008
 
Building Ria Applications With Silverlight 2
Building Ria Applications With Silverlight 2Building Ria Applications With Silverlight 2
Building Ria Applications With Silverlight 2
 

Más de Ingenieria Informatica Empresarial (7)

Presentacion practicas externas I2E
Presentacion practicas externas I2EPresentacion practicas externas I2E
Presentacion practicas externas I2E
 
Nuestra experiencia Emprendiendo
Nuestra experiencia EmprendiendoNuestra experiencia Emprendiendo
Nuestra experiencia Emprendiendo
 
Scrum y ecosistema software en i2e
Scrum y ecosistema software en i2eScrum y ecosistema software en i2e
Scrum y ecosistema software en i2e
 
Proceso MDA y Scrum v2
Proceso MDA y Scrum v2Proceso MDA y Scrum v2
Proceso MDA y Scrum v2
 
Proceso MDA y Scrum
Proceso MDA y ScrumProceso MDA y Scrum
Proceso MDA y Scrum
 
Presentación Tecnológica del ERP-I2E
Presentación Tecnológica del ERP-I2EPresentación Tecnológica del ERP-I2E
Presentación Tecnológica del ERP-I2E
 
Web 2.0 y Redes Sociales
Web 2.0 y Redes SocialesWeb 2.0 y Redes Sociales
Web 2.0 y Redes Sociales
 

Último

Desarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfDesarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfJulian Lamprea
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITMaricarmen Sánchez Ruiz
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan JosephBRAYANJOSEPHPEREZGOM
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveFagnerLisboa3
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxLolaBunny11
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricKeyla Dolores Méndez
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...silviayucra2
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx241521559
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíassuserf18419
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)GDGSucre
 

Último (10)

Desarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfDesarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdf
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptx
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 

Desarrollo de Aplicaciones Web 2.0 con GWT

  • 1. Desarrollo de Aplicaciones Web 2.0 con Google Web Toolkit Emilio Bravo Garcia
  • 2. En esta presentación se va a realizar una introducción a Google Web Toolkit (en adelante GWT). GWT es una tecnología desarrollada por Google para acelerar el desarrollo de Aplicaciones Ricas de Internet (RIA) y mejorar la experiencia del usuario. Google Web Toolkit
  • 3. Introduccion a GWT El framework Google Web Toolkit
  • 4. Introducción WEB 2.0 (http://es.wikipedia.org/wiki/Web_2.0) El término Web 2.0 es asociado usualmente con Tim O'Reilly debido a la referencia hecha en la conferencia O'Reilly Media Web 2.0 en 2004. El término fue utilizado para referirse a una segunda generación en la historia del desarrollo de tecnología Web basada en comunidades de usuarios y una gama especial de servicios, como las redes sociales, los blogs, los wikis o las folcsonomías, que fomentan la colaboración y el intercambio ágil y eficaz de información entre los usuarios. La Web 2.0 es también llamada web social.
  • 5. Introducción WEB 2.0 Componente Social. Los sitios web 2.0 permiten a los usuario interactuar con la aplicacion aportando información y enriquecer el sitio con su uso. Estas webs suelen tener una "Arquitectura de Participación" que anima a los usuario a añadir valor conforme usan la aplicacion. Componente Tecnológico. La tecnologia normalmente usada en el desarrollo de aplicaciones web 2.0 es AJAX. Ajax utiliza JavaScript intercambiar datos del servidor web de forma asincrona sin tener que realizar una recarga completa de la pagina.
  • 6. Introducción En esta presentación nos vamos a centrar en la parte tecnológica de la Web 2.0. Veremos como Google Web Toolkit nos facilita el desarrollo de aplicaciones Web 2.0
  • 7. Introducción AJAX (http://es.wikipedia.org/wiki/AJAX) AJAX, acrónimo de Asynchronous JavaScript And XML, es una técnica de desarrollo web para crear aplicaciones interactivas o RIA (Rich Internet Applications). Estas aplicaciones se ejecutan en el navegador de los usuarios mientras se mantiene la comunicación asíncrona con el servidor en segundo plano. De esta forma es posible realizar cambios sobre las páginas sin necesidad de recargarlas, lo que significa aumentar la interactividad, velocidad y usabilidad en las aplicaciones.
  • 8. Introducción AJAX no constituye una tecnología en sí, sino que es un término que engloba a un grupo de éstas que trabajan conjuntamente, XTML, CSS, JavaScript, XMLHttpRequest, XML o JSON para la transferencia de datos con el servidor.
  • 9. Introducción RIA (http://en.wikipedia.org/wiki/Rich_internet_applications) La aplicaciones RIA son aplicaciones web con muchas de las características de las aplicaciones de escritorio, normalmente entregadas ya sea por medio de webs basadas en los estándares de los navegadores, vía plugins del navegador, o independientemente vía sandboxes o maquinas virtuales.
  • 10. Introducción Desarrollar aplicaciones RIA utilizando JavaScript tiene una serie de inconvenientes: Conseguir que nuestro código JavaScript sea cross-browser (funcione sin problemas en la mayoría de navegadores). Modularizacion del código cuando las aplicaciones crecen. Falta de herramientas avanzadas para el desarrollo con JavaScript. Necesidad de tener un conocimiento avanzado en JavaScript para obtener aplicaciones optimizadas.
  • 11. Introducción Una primera solución a los problemas anteriores son los Frameworks JavaScript.
  • 12. Introducción Aunque los frameworks JavaScript solucionan alguno de los problemas anteriores y pueden ser una buena solución en muchos casos, no solucionan todos los problemas. En Google decidieron realizar una nueva caja de herramientas para acelerar el desarrollado de aplicaciones RIA basadas en AJAX mejorando la experiencia del usuario.
  • 13. Introducción Manifiesto GWT La misión de GWT es mejorar radicalmente la experiencia de los usuarios con la web permitiendo a los desarrolladores utilizar las herramientas Java existentes para construir aplicaciones Ajax independientes del navegador.
  • 14. Introducción Google Web Toolkit (GWT) permite crear aplicaciones AJAX en el lenguaje de programación Java que son compiladas en código JavaScript optimizado para los principales navegadores. Código disponible bajo la licencia Apache 2.0
  • 15. Introducción Programas en Java Depuras en Java Pruebas en Java GWT compila de Java a JavaScript Despliegas en JavaScript
  • 16. Introducción Porque Java? Google eligió Java sobre todo por las herramientas existentes, además de por las librerías, libros, artículos y la amplia comunidad de desarrolladores. También necesitaban un lenguaje fuertemente tipado para la fase de compilación y java cumplía con este requerimiento.
  • 17. Introducción Mejora la experiencia de usuario. Al ejecutarse la interfaz de usuario en el navegador, la interacción del usuario con la aplicación es mas fluida. Al no ser necesario llamar al servidor para renderizar las paginas ya no tendremos el efecto de pagina en blanco.
  • 18. Introducción Obtenemos un mayor rendimiento y una mejor escalabilidad que con las aplicaciones web tradicionales.
  • 19. Arquitectura GWT El framework Google Web Toolkit
  • 20. Arquitectura GWT GWT tiene cuatro componentes principales Java-to-JavaScript Compiler. Hosted Web Browser. JRE Emulation Library. GWT Web UI Class Library
  • 21. Arquitectura GWT GWT Java-to-JavaScript Compiler: la función del componente es traducir el código desarrollado en Java al lenguaje JavaScript compatible con los navegadores mas utilizados.
  • 22. Arquitectura GWT Hosted Web Browser: este componente ejecuta la aplicación Java sin traducirla a JavaScript, en modo host usando la máquina virtual de Java. Utiliza Jetty como servidor embebido.
  • 23. Arquitectura GWT JRE Emulation Library: contiene las bibliotecas más importantes de las clases de Java. GWT emula parte de la API de Java. http://code.google.com/intl/es-ES/webtoolkit/doc/1.6/RefJreEmulation.html java.lang java.lang.annotation java.util java.io java.sql
  • 24. Arquitectura GWT GWT Web UI Class Library: contiene un conjunto de elementos de interfaz de usuario que permite la creación de objetos tales como textos, cajas de texto, imágenes , botones y otros widgets.
  • 26. Construyendo la interfaz El framework Google Web Toolkit
  • 27. Construyendo la interfaz de Usuario Las clases de GWT para la interfaz de usuario son similares a Swing o SWT. Componentes, contendores y eventos. Podemos dar estilo a los widgets utilizando CSS.
  • 28. Construyendo la interfaz de Usuario Al desarrollar en Java, podemos utilizar los entornos de desarrollo mas populares para Java (Eclipse,NetBeans, IntelliJ). Podemos realizar abstracciones y utilizar patrones de diseño orientados a objetos (OO) basados en Java. Empaquetando las clases en archivos jar podemos crear módulos reutilizables fáciles de utilizar en otros proyectos.
  • 29. Construyendo la interfaz de Usuario Patrón MVP en vez de MVC
  • 30. Construyendo la interfaz de Usuario Ficheros de configuración para una aplicación GWT Fichero gwt.xml donde definimos la aplicación y sus dependencias. Fichero Html desde el que iniciamos el código JavaScript Fichero CSS con los estilos. Clase Java que implementa el EntryPoint (el main para GWT).
  • 31. Construyendo la interfaz de Usuario Modulo BarCampValencia.gwt.xml <module > <inherits name="com.google.gwt.user.User"/> <inherits name="com.google.gwt.xml.XML"/> <inherits name="com.google.gwt.json.JSON"/> <inherits name='com.google.gwt.gears.Gears'/> <inherits name="com.google.gwt.i18n.I18N"/> <entry-point class="es.i2e.barcampvalencia.web.client. BarCampValencia"/> </module>
  • 32. Construyendo la interfaz de Usuario Html de inicio (BarCampValencia.html) <html> <head> <title>Wrapper HTML for BarCampValencia</title> <meta name='gwt:module' content='es.i2e.barcampvalencia.web. BarCampValencia'/> <link type="text/css" rel='stylesheet' href='BarCampValencia.css'/> <script type="text/javascript" language="javascript" src="barCampValencia/barCampValencia.nocache.js"></script> </head> <body> <!-- OPTIONAL: include this if you want history support --> <iframe id="__gwt_historyFrame" style="width:0;height:0;border:0"></iframe> </body> </html>
  • 33. Construyendo la interfaz de Usuario BarCampValencia.css .gwt-Label { font-size: 12px; font-family: Verdana, Arial, sans-serif; } .gwt-RadioButton{ font-size: 12px; font-family: Verdana, Arial, sans-serif; } .gwt-PasswordTextBox{ font-family: Verdana, Arial, sans-serif; font-size: 12px; color: #FFFFFF; background-color: #C89191; border: #990000 1px solid; }
  • 34. Construyendo la interfaz de Usuario EntryPoint (BarCampValencia.java) package es.i2e.barcampvalencia.web.client; import com.google.gwt.core.client.EntryPoint; import com.google.gwt.core.client.GWT; public class Principal implements EntryPoint, HistoryListener { public void onModuleLoad() { //controlamos la navegacion por la aplicacion History.addHistoryListener(this); final RootPanel rootPanel = RootPanel.get(); rootPanel.setSize("100%", "100%"); private DockPanel panel = new DockPanel(); panel.setSize("100%", "100%"); rootPanel.add(panel); } public void onHistoryChanged(String historyToken) { } }
  • 35. Construyendo la interfaz de Usuario Si la biblioteca de clases de GWT no satisface tus necesidades, puedes mezclar JavaScript manualmente en el código fuente Java mediante la interfaz JSNI o JSO. Si ya tienes código JavaScript puedes envolverlo usando JSNI y crear un paquete jar para que el resto del equipo pueda reutilizarlo fácilmente. var first_name = “Frank”; public native String getFirstName()/*-{ return $wnd.first_name; }-*/;
  • 36. Construyendo la interfaz de Usuario JSO Nos permite utilizar código externo JavaScript como si fueran tipos de java. public class Customer extends JavaScriptObject { public final native String getFirstName() /*-{ return this.first_name; }-*/; public final native String getLastName() /*-{ return this.last_name; }-*/; public final native int computeAge() /*-{ return this.getComputedAge(); }-*/; final native String getArea();}
  • 37. Internacionalización y Accesibilidad Puedes crear fácilmente bibliotecas y aplicaciones internacionalizadas con las potentes técnicas de vinculación aplazada de GWT. ARIA es la especificación del W3C para hacer las aplicaciones RIA accesibles a través de propiedades estándar del DOM.
  • 38. Librerías de Widgets GWT GWT Incubator Smart GWT GWT-Ext IT Mill Toolkit GWT mosaic
  • 39.
  • 40.
  • 41. Construyendo la interfaz de Usuario Mejoras introducidas en GWT 2.0 Interfaces de usuario declarativas con UiBinder. Inyección de CSS en función del navegador (StyleInjector). Construcción de recursos via ClientBundle. Particiones de código guiadas por el desarrollador. El código JavaScript se descargar bajo peticion del programador (GWT.runAsync() )
  • 42. Construyendo la interfaz de Usuario UIBinder Permite definir la interfaz mediante xml, lo que hace mas sencillo definir la estructura de la interfaz de usuario. http://code.google.com/p/google-web-toolkit-incubator/wiki/UiBinder <ui:UiBinder xmlns:ui='urn:ui.com.google.gwt.uibinder'> <div> Hello, <span ui:field='nameSpan'/>. </div> </ui:UiBinder>
  • 43. Construyendo la interfaz de Usuario La CSS no se interpreta igual en todos los navegadores. GWT Abstrae de la implementacion de JavaScript para los diferentes navegadores pero no de la CSS. En la versión 2.0 han introducido StyleInjector + CssResource. Diferentes Css para diferentes navegadores. Modularización de Css, solo se descarga cuando se necesita. http://code.google.com/p/google-web-toolkit/wiki/CssResource @if user.agent safari { webkit-border-radius: 5px; }
  • 44. Construyendo la interfaz de Usuario ImageBundle y ClientBundle public interface BarCampValenciaImageBundle extends ImageBundle { @Resource("es/i2e/barcampvalencia/icons/btn_cancel_icon.png") public AbstractImagePrototype cancelButtonIcon(); }
  • 45. Construyendo la interfaz de Usuario GWT.runAsync() señala un punto de corte al compilador de GWT. Descarga lo que necesites, cuando lo necesites, lo recursos (CSS, imágenes, msgs) vienen con el código que los utilice. Automáticamente manejado por el compilador de GWT http://code.google.com/p/google-web-toolkit/wiki/CodeSplitting public void onNewWaveClicked() { GWT.runAsync(new RunAsyncCallback() { public void onSuccess() { WaveCreator.createNewWave(); } }); }
  • 46. Comunicación con el servidor El framework Google Web Toolkit
  • 47. Comunicación con el servidor GWT puede comunicarse con cualquier tecnología de servidor, realizando llamadas AJAX desde el cliente y transportando la información utilizando JSON o XML.
  • 48. Comunicación con el servidor GWT proporciona por defecto el mecanismo GWT RPC el cual nos permite realizar llamadas remotas a Servlets, GWT se encarga de la serializacion entre Java <-> JSON para realizar las llamada. Es un mecanismo similar a RMI en Java. En la parte cliente implementamos las siguiente clases: BarCampValenciaService.java BarCampValenciaServiceAsyn.java En la parte servidor implementamos: BarCampValenciaServiceImpl.java
  • 49. Comunicación con el servidor Código en el cliente para realizar una llamada asíncrona a un servicio GWT RPC. AsyncCallback asyncCallback = new AsyncCallback() public void onFailure (Throwable caught) { System.err.println("Fallo en la carga de la configuracion"); } public void onSuccess (Object result) { System.out.println("Cargada la configuracion"); } }; BarCampValenciaService.Util.getInstance().obtenerAsistentes(asyncCallback);
  • 50. Comunicación con el servidor Código en el servidor que recibe las llamas del cliente JavaScript. package es.i2e.barcampvalencia.web.server.servicios.inicio; import com.google.gwt.user.server.rpc.RemoteServiceServlet; import es.i2e.barcampvalencia.web.client.servicios.inicio. BarCampValencia; import es.i2e.barcampvalencia.web.client.util.GwtServiceException; public class BarCampValenciampl extends RemoteServiceServlet implements BarCampValenciaService { public void obtenerAsistentes() throws GwtServiceException{ } }
  • 51. Comunicación con el servidor Podemos realizar llamadas remotas a servicios en cualquier tecnología de servidor, en este caso deberemos manejar directamente en XML o JSON los datos enviados entre cliente y servidor.
  • 52. Depuración y TEST El framework Google Web Toolkit
  • 53. Depuración Durante el desarrollo de una aplicación, se pueden ver inmediatamente los cambios realizados en el código mediante el navegador de modo alojado (hosted mode) de GWT. No es necesario volver a compilar el código en JavaScript. El código se ejecutará en la maquina virtual de Java como bytecode. Todo lo que pueda hacer el depurador de Java se aplicará también al código GWT.
  • 54. Depuración La comprobación de tipo estático en lenguaje Java permite detectar una clase de errores (errores ortográficos, tipos no coincidentes) en el momento de la creación del código, no durante la ejecución del programa, lo que aumenta la productividad y reduce los errores..
  • 55. Depuración A partir de GWT 2.0 se puede depurar desde el navegador (Out-of-process Hosted Mode (OOPHM), Podemos ejecutar la aplicación en el navegador de nuestra elección y utilizar herramientas como firebug mientras depuramos desde Eclipse.
  • 56. Testeo GWT incluye la clase base GWTTestCase que proporciona la integración con Junit. GWT lanza una instancia del hosted mode para ejecutar los test. Mediante la herramienta junitCreator genera todo lo necesario para poder ejecutar los test. También podemos utilizar herramientas como Selenium o WebDriver para realizar los test de la interfaz de usuario.
  • 57. Testeo En GWT 2.0 se ha introducido HtmlUnit para ejecutar los test basado en GWTTestCase, antes de la versión 2.0 GWTTestCase estaba basado en SWT y código nativo de los navegadores para ejecutar los tets. Al estar HtmlUnit escrito enteramente en Java no necesitaremos ejecutar el navegador. También podemos depurar los test desde el depurador de Java.
  • 58. Compilacion El framework Google Web Toolkit
  • 59. GWT compila el código Java en archivos JavaScript independientes que estarán disponibles a través de cualquier servidor web. Las aplicaciones GWT admiten automáticamente los navegadores IE, Firefox, Mozilla, Safari y Opera. Escribe el código una vez y GWT lo convertirá al formato JavaScript más adecuado para el navegador de cada usuario. Compilación
  • 62. Compilación Los desarrolladores de gwt creen firmemente que GWT genera mejor codigo javaScript que el que podemos obtener desarrollandolo manualmente. El compilador tambien realiza una optimizacion del tamaño de los archivos GWT para que el envio al cliente sea lo mas rapido posible
  • 63. Despliegue El framework Google Web Toolkit
  • 64. Despliegue Las aplicaciones de GWT se empaquetan en un war y se pueden desplegar en cualquier contenedor de Servlets estándar. Si no hemos utilizado Java para los servicios remotos podemos desplegar en cualquier servidor web http como Apache. Se puede utilizar ant o maven para automatizar el proceso de compilación, empaquetamiento y despliegue.
  • 65. Despliegue GWT genera un archivo optimizado para cada navegador soportado por el compilador . Cuando un navegador se conecta a GWT el archivo nocache.js detecta el navegador del cliente y le envía el código JavaScript generado para ese navegador.
  • 66. Aplicaciones de ejemplo El framework Google Web Toolkit
  • 75. Realizada por I2EGestión Recobro de Deudas
  • 76. Realizada por I2E Gestión Recobro de Deudas
  • 77. Realizada por I2E Donderepostar.com
  • 78. Realizada por I2E Extranet Asesoría Profesional Jucarpe
  • 79. Referencias http://code.google.com/intl/es-ES/webtoolkit/ http://code.google.com/intl/es-ES/webtoolkit/doc/1.6/DevGuide.html http://gwtgallery.appspot.com/ http://code.google.com/intl/es-ES/events/io/sessions.html#gwt http://groups.google.com/group/Google-Web-Toolkit
  • 81. Gracias Por su atención http://www.i2e.com.es Twitter: i2e_es emilio@i2e.com.es i2e@i2e.com.es