SlideShare una empresa de Scribd logo
Desarrollo de Aplicaciones Web 2.0 con Google Web ToolkitEmilio 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 GWTEl framework Google Web Toolkit
IntroducciónWEB 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ónWEB 2.0Componente 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ónEn 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ónAJAX (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ónAJAX 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ónRIA(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ónDesarrollar 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ónUna primera solución a los problemas anteriores son los Frameworks JavaScript.
IntroducciónAunque 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ónManifiesto GWTLa 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ónGoogle 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ónProgramas en JavaDepuras en JavaPruebas en JavaGWT compila de Java a JavaScriptDespliegas en JavaScript
IntroducciónPorque 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ónMejora 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ónObtenemos un mayor rendimiento y  una mejor escalabilidad que con las aplicaciones web tradicionales.
Arquitectura GWTEl framework Google Web Toolkit
Arquitectura GWTGWT tiene cuatro componentes principalesJava-to-JavaScript Compiler.Hosted Web Browser.JRE Emulation Library.GWT Web UI Class Library
Arquitectura GWTGWT 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 GWTHosted 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 GWTJRE 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.htmljava.langjava.lang.annotationjava.utiljava.iojava.sql
Arquitectura GWTGWT 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 interfazEl framework Google Web Toolkit
Construyendo la interfaz de UsuarioLas  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 UsuarioAl 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 UsuarioPatrón MVP en vez de MVC
Construyendo la interfaz de UsuarioFicheros de configuración para una aplicación GWTFichero gwt.xml donde definimos la aplicación y sus dependencias.Fichero Html desde el que iniciamos el código JavaScriptFichero CSS con los estilos.Clase Java que implementa el EntryPoint (el main para GWT).
Construyendo la interfaz de UsuarioModulo 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 UsuarioHtml 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 UsuarioBarCampValencia.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 UsuarioEntryPoint (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 aplicacionHistory.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 UsuarioSi 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 UsuarioJSONos 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 AccesibilidadPuedes 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 WidgetsGWTGWT IncubatorSmart GWTGWT-ExtIT Mill ToolkitGWT mosaic
Herramientas de DesarrolloGWT DesignerEclipse Google Plugin
Cypal Studio for GWT, IntelliJ IDEA, gwt4nb (NetBeans)Integración con las APIs de GoogleIntegración sencilla con las apis de Googlehttp://code.google.com/p/gwt-google-apis/
Construyendo la interfaz de UsuarioMejoras introducidas en GWT 2.0Interfaces 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 UsuarioUIBinderPermite 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 UsuarioLa 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 UsuarioImageBundle y ClientBundlepublic interface BarCampValenciaImageBundle extends ImageBundle {   @Resource("es/i2e/barcampvalencia/icons/btn_cancel_icon.png")   public AbstractImagePrototype cancelButtonIcon(); }
Construyendo la interfaz de UsuarioGWT.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 GWThttp://code.google.com/p/google-web-toolkit/wiki/CodeSplittingpublic void onNewWaveClicked() {    GWT.runAsync(new RunAsyncCallback() {        public void onSuccess() {            WaveCreator.createNewWave();        }   });}
Comunicación con el servidorEl framework Google Web Toolkit
Comunicación con el servidorGWT 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 servidorGWT 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.javaBarCampValenciaServiceAsyn.javaEn la parte servidor implementamos:BarCampValenciaServiceImpl.java
Comunicación con el servidorCó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 servidorCó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 servidorPodemos 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 TESTEl 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.
TesteoGWT 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.
TesteoEn  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.
CompilacionEl 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ónLos  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
DespliegueEl framework Google Web Toolkit
DespliegueLas 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.
DespliegueGWT 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 ejemploEl 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
Referenciashttp://code.google.com/intl/es-ES/webtoolkit/http://code.google.com/intl/es-ES/webtoolkit/doc/1.6/DevGuide.htmlhttp://gwtgallery.appspot.com/http://code.google.com/intl/es-ES/events/io/sessions.html#gwthttp://groups.google.com/group/Google-Web-Toolkit
¿Preguntas?
Gracias Por su atenciónhttp://www.i2e.com.esTwitter: i2e_esemilio@i2e.com.es i2e@i2e.com.es

Más contenido relacionado

PDF
GWT y SmartGWT - Introducción
PDF
Desarrollo de aplicaciones web con Google Web Toolkit
PDF
Comenzando con GWT
PDF
Desarrollo de aplicaciones Web 2.0 Google Web Toolkit
PPTX
PDF
Aprendiendo GWT
PPT
Desarrollo de aplicaciones AJAX con GWT
PDF
Presentacion Google Web Toolkit
GWT y SmartGWT - Introducción
Desarrollo de aplicaciones web con Google Web Toolkit
Comenzando con GWT
Desarrollo de aplicaciones Web 2.0 Google Web Toolkit
Aprendiendo GWT
Desarrollo de aplicaciones AJAX con GWT
Presentacion Google Web Toolkit

La actualidad más candente (17)

PDF
Gwt seminario java_hispano_manolocarrasco
PPTX
Exposicion GWT
PDF
Net Beans
PDF
Manual jquery
PDF
J query el framework de la web luc van lancker-1504
PDF
Manual de jquery en pdf desarrollowebcom
PDF
Análisis del Whitepaper DB4O
PDF
OpenVidu Commitconf 2018
PPTX
Dreamweaver
PDF
Google Web Toolkit (GWT) en entornos empresariales
PDF
Gwt II - trabajando con gwt
DOCX
TEMA Nº 1: INTRODUCCIÓN A J2EE
PDF
Software libre para videoconferencias
PDF
Unidad 1
PDF
Programacion de una tienda virtual en Grails
PPTX
Definición y función de lenguaje java script
Gwt seminario java_hispano_manolocarrasco
Exposicion GWT
Net Beans
Manual jquery
J query el framework de la web luc van lancker-1504
Manual de jquery en pdf desarrollowebcom
Análisis del Whitepaper DB4O
OpenVidu Commitconf 2018
Dreamweaver
Google Web Toolkit (GWT) en entornos empresariales
Gwt II - trabajando con gwt
TEMA Nº 1: INTRODUCCIÓN A J2EE
Software libre para videoconferencias
Unidad 1
Programacion de una tienda virtual en Grails
Definición y función de lenguaje java script
Publicidad

Destacado (11)

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

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

PDF
Gwt I - entendiendo gwt
PPT
Imagina Upna 2010
PPS
Google Web Toolkit
PDF
GWT: Why GWT, GQuery, and RequestFactory
PDF
GWT - EL ESCRITORIO EN LA WEB
PDF
Gwt intro adwe_murcia
PPTX
Presentacion Tesis
PDF
Gwt III - Avanzado
PDF
GWT - Una introducción
PDF
Desarrollo multiplataforma de apps con GWT y PhoneGap
PDF
Charla 1er betabeers Córdoba
PPT
PPTX
Project Scope by Google Apps
PPT
Jc Web20 Open Source Why Floss2007
PPT
Web20
PPTX
PPT
Jc Web20 Open Source Why Floss2007
PDF
Tema 4
PDF
[ES] Introducción a las Aplicaciones Web con Java
Gwt I - entendiendo gwt
Imagina Upna 2010
Google Web Toolkit
GWT: Why GWT, GQuery, and RequestFactory
GWT - EL ESCRITORIO EN LA WEB
Gwt intro adwe_murcia
Presentacion Tesis
Gwt III - Avanzado
GWT - Una introducción
Desarrollo multiplataforma de apps con GWT y PhoneGap
Charla 1er betabeers Córdoba
Project Scope by Google Apps
Jc Web20 Open Source Why Floss2007
Web20
Jc Web20 Open Source Why Floss2007
Tema 4
[ES] Introducción a las Aplicaciones Web con Java

Más de Ingenieria Informatica Empresarial (7)

PPTX
Presentacion practicas externas I2E
PDF
Nuestra experiencia Emprendiendo
PDF
Scrum y ecosistema software en i2e
PPT
Proceso MDA y Scrum v2
PPT
PDF
Presentación Tecnológica del ERP-I2E
PPS
Web 2.0 y Redes Sociales
Presentacion practicas externas I2E
Nuestra experiencia Emprendiendo
Scrum y ecosistema software en i2e
Proceso MDA y Scrum v2
Presentación Tecnológica del ERP-I2E
Web 2.0 y Redes Sociales

Último (20)

PPTX
Power Point Nicolás Carrasco (disertación Roblox).pptx
PDF
Calidad desde el Docente y la mejora continua .pdf
DOCX
Zarate Quispe Alex aldayir aplicaciones de internet .docx
PPT
introduccion a las_web en el 2025_mejoras.ppt
PDF
Instrucciones simples, respuestas poderosas. La fórmula del prompt perfecto.
PDF
Liceo departamental MICRO BIT (1) 2.pdfbbbnn
PDF
SAP Transportation Management para LSP, TM140 Col18
PDF
Diapositiva proyecto de vida, materia catedra
PDF
MÓDULO DE CALOR DE GRADO DE MEDIO DE FORMACIÓN PROFESIONAL
PPTX
Acronis Cyber Protect Cloud para Ciber Proteccion y Ciber Seguridad LATAM - A...
PPTX
Presentación de Redes de Datos modelo osi
PPT
El-Gobierno-Electrónico-En-El-Estado-Bolivia
PPTX
sa-cs-82-powerpoint-hardware-y-software_ver_4.pptx
PDF
CyberOps Associate - Cisco Networking Academy
PPTX
RAP01 - TECNICO SISTEMAS TELEINFORMATICOS.pptx
PDF
programa-de-estudios-2011-guc3ada-para-el-maestro-secundarias-tecnicas-tecnol...
PPTX
Sesion 1 de microsoft power point - Clase 1
PDF
Maste clas de estructura metálica y arquitectura
PDF
Plantilla para Diseño de Narrativas Transmedia.pdf
PDF
taller de informática - LEY DE OHM
Power Point Nicolás Carrasco (disertación Roblox).pptx
Calidad desde el Docente y la mejora continua .pdf
Zarate Quispe Alex aldayir aplicaciones de internet .docx
introduccion a las_web en el 2025_mejoras.ppt
Instrucciones simples, respuestas poderosas. La fórmula del prompt perfecto.
Liceo departamental MICRO BIT (1) 2.pdfbbbnn
SAP Transportation Management para LSP, TM140 Col18
Diapositiva proyecto de vida, materia catedra
MÓDULO DE CALOR DE GRADO DE MEDIO DE FORMACIÓN PROFESIONAL
Acronis Cyber Protect Cloud para Ciber Proteccion y Ciber Seguridad LATAM - A...
Presentación de Redes de Datos modelo osi
El-Gobierno-Electrónico-En-El-Estado-Bolivia
sa-cs-82-powerpoint-hardware-y-software_ver_4.pptx
CyberOps Associate - Cisco Networking Academy
RAP01 - TECNICO SISTEMAS TELEINFORMATICOS.pptx
programa-de-estudios-2011-guc3ada-para-el-maestro-secundarias-tecnicas-tecnol...
Sesion 1 de microsoft power point - Clase 1
Maste clas de estructura metálica y arquitectura
Plantilla para Diseño de Narrativas Transmedia.pdf
taller de informática - LEY DE OHM

Desarrollo de Aplicaciones Web 2.0 con GWT

  • 1. Desarrollo de Aplicaciones Web 2.0 con Google Web ToolkitEmilio 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 GWTEl framework Google Web Toolkit
  • 4. IntroducciónWEB 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ónWEB 2.0Componente 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ónEn 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ónAJAX (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ónAJAX 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ónRIA(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ónDesarrollar 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ónUna primera solución a los problemas anteriores son los Frameworks JavaScript.
  • 12. IntroducciónAunque 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ónManifiesto GWTLa 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ónGoogle 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ónProgramas en JavaDepuras en JavaPruebas en JavaGWT compila de Java a JavaScriptDespliegas en JavaScript
  • 16. IntroducciónPorque 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ónMejora 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ónObtenemos un mayor rendimiento y una mejor escalabilidad que con las aplicaciones web tradicionales.
  • 19. Arquitectura GWTEl framework Google Web Toolkit
  • 20. Arquitectura GWTGWT tiene cuatro componentes principalesJava-to-JavaScript Compiler.Hosted Web Browser.JRE Emulation Library.GWT Web UI Class Library
  • 21. Arquitectura GWTGWT 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 GWTHosted 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 GWTJRE 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.htmljava.langjava.lang.annotationjava.utiljava.iojava.sql
  • 24. Arquitectura GWTGWT 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 interfazEl framework Google Web Toolkit
  • 27. Construyendo la interfaz de UsuarioLas 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 UsuarioAl 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 UsuarioPatrón MVP en vez de MVC
  • 30. Construyendo la interfaz de UsuarioFicheros de configuración para una aplicación GWTFichero gwt.xml donde definimos la aplicación y sus dependencias.Fichero Html desde el que iniciamos el código JavaScriptFichero CSS con los estilos.Clase Java que implementa el EntryPoint (el main para GWT).
  • 31. Construyendo la interfaz de UsuarioModulo 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 UsuarioHtml 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 UsuarioBarCampValencia.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 UsuarioEntryPoint (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 aplicacionHistory.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 UsuarioSi 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 UsuarioJSONos 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 AccesibilidadPuedes 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 WidgetsGWTGWT IncubatorSmart GWTGWT-ExtIT Mill ToolkitGWT mosaic
  • 39. Herramientas de DesarrolloGWT DesignerEclipse Google Plugin
  • 40. Cypal Studio for GWT, IntelliJ IDEA, gwt4nb (NetBeans)Integración con las APIs de GoogleIntegración sencilla con las apis de Googlehttp://code.google.com/p/gwt-google-apis/
  • 41. Construyendo la interfaz de UsuarioMejoras introducidas en GWT 2.0Interfaces 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 UsuarioUIBinderPermite 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 UsuarioLa 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 UsuarioImageBundle y ClientBundlepublic interface BarCampValenciaImageBundle extends ImageBundle { @Resource("es/i2e/barcampvalencia/icons/btn_cancel_icon.png") public AbstractImagePrototype cancelButtonIcon(); }
  • 45. Construyendo la interfaz de UsuarioGWT.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 GWThttp://code.google.com/p/google-web-toolkit/wiki/CodeSplittingpublic void onNewWaveClicked() { GWT.runAsync(new RunAsyncCallback() { public void onSuccess() { WaveCreator.createNewWave(); } });}
  • 46. Comunicación con el servidorEl framework Google Web Toolkit
  • 47. Comunicación con el servidorGWT 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 servidorGWT 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.javaBarCampValenciaServiceAsyn.javaEn la parte servidor implementamos:BarCampValenciaServiceImpl.java
  • 49. Comunicación con el servidorCó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 servidorCó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 servidorPodemos 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 TESTEl 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. TesteoGWT 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. TesteoEn 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.
  • 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ónLos 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
  • 64. DespliegueLas 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. DespliegueGWT 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 ejemploEl 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
  • 81. Gracias Por su atenciónhttp://www.i2e.com.esTwitter: i2e_esemilio@i2e.com.es i2e@i2e.com.es