SlideShare une entreprise Scribd logo
1  sur  75
Télécharger pour lire hors ligne
www.i2e.com.es




                 El framework Google Web Toolkit
                              Emilio Bravo Garcia
www.i2e.com.es




                    En esta presentación se va a   Introducción
                     realizar una introducción a    Arquitectura de GWT
                     Google Web Toolkit (en
                     adelante GWT). GWT es una      Construyendo la Interfaz
                     tecnología desarrollada por    Comunicación con el Servidor
                     Google para acelerar el
                     desarrollo de Aplicaciones     Depuración y Test
                     Ricas de Internet (RIA) y
                                                    Compilación
                     mejorar la experiencia del
                     usuario.                       Despliegue

                                                    Aplicaciones de Ejemplo
www.i2e.com.es




                 El framework Google Web Toolkit
www.i2e.com.es




                    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.
www.i2e.com.es




                    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.
www.i2e.com.es




                    RIA(http://en.wikipedia.org/wiki/Rich_internet_applicati
                     ons)
                    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.
www.i2e.com.es




                    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.
www.i2e.com.es




                    Una primera solución a los problemas anteriores son los
                     Frameworks JavaScript.
www.i2e.com.es




                    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.
www.i2e.com.es




                    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.
www.i2e.com.es




                    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
www.i2e.com.es




                    Programas en Java
                    Depuras en Java
                    Pruebas en Java
                    GWT compila de Java a JavaScript
                    Despliegas en JavaScript
www.i2e.com.es




                    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.
www.i2e.com.es




                    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.
www.i2e.com.es




                    Obtenemos un mayor rendimiento y una mejor
                     escalabilidad que con las aplicaciones web
                     tradicionales.
www.i2e.com.es




                 El framework Google Web Toolkit
www.i2e.com.es




                    GWT tiene cuatro componentes principales

                     ◦   Java-to-JavaScript Compiler.
                     ◦   Hosted Web Browser.
                     ◦   JRE Emulation Library.
                     ◦   GWT Web UI Class Library
www.i2e.com.es




                    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.
www.i2e.com.es




                    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.
www.i2e.com.es




                    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
www.i2e.com.es




                    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.
www.i2e.com.es
www.i2e.com.es




                 El framework Google Web Toolkit
www.i2e.com.es




                    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.
www.i2e.com.es




                    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.
www.i2e.com.es




                    Patrón MVP en vez de MVC
www.i2e.com.es




                    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).
www.i2e.com.es




                    Modulo JornadasJava.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.jornadasjava.web.client.JornadasJava"/>
                 </module>
www.i2e.com.es




                     Html de inicio (JornadasJava.html)
                 <html>
                   <head>
                     <title>Wrapper HTML for JornadasJava</title>
                     <meta name='gwt:module' content='es.i2e.jornadasjava.web.JornadasJava'/>

                      <link type="text/css" rel='stylesheet' href='JornadasJava.css'/>

                     <script type="text/javascript" language="javascript"
                 src="jornadasJava/jornadasJava.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>
www.i2e.com.es




                    JornadasJava.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;
                     }
www.i2e.com.es




                    EntryPoint (JornadasJava.java)
                 package es.i2e.jornadasjava.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) {
                           }
                 }
www.i2e.com.es




                    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;
                     }-*/;
www.i2e.com.es




                    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();
                 }
www.i2e.com.es




                    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.
www.i2e.com.es




                    GWT
                    GWT Incubator
                    Smart GWT
                    GWT-Ext
                    IT Mill Toolkit
                    GWT mosaic
www.i2e.com.es




                    GWT Designer




                  Eclipse Google Plugin


                  Cypal Studio for GWT, IntelliJ IDEA, gwt4nb
                   (NetBeans)
www.i2e.com.es




                    Integración sencilla con las apis de Google
                    http://code.google.com/p/gwt-google-apis/
www.i2e.com.es




                    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() )
www.i2e.com.es




                    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>
www.i2e.com.es




                    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;
                                      }
www.i2e.com.es




                    ImageBundle y ClientBundle

                     public interface JornadasJavaImageBundle extends ImageBundle {

                         @Resource("es/i2e/jornadasjava/icons/btn_cancel_icon.png")
                         public AbstractImagePrototype cancelButtonIcon();
                     }
www.i2e.com.es




                    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();
                                           }
                                       });
                                     }
www.i2e.com.es




                 El framework Google Web Toolkit
www.i2e.com.es




                    GWT puede comunicarse con cualquier tecnología de
                     servidor, realizando llamadas AJAX desde el cliente y
                     transportando la información utilizando JSON o XML.
www.i2e.com.es




                    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 el cliente tenemos que implementar las siguiente
                     clases:
                     ◦ JornadasJavaService.java
                     ◦ JornadasJavaServiceAsyn.java
                    En la parte servidor implementamos:
                     ◦ JornadasJavaServiceImpl.java
www.i2e.com.es




                    Código en el cliente para realizar una llamada
                     asíncrona a un servicio GWT RPC.
                 AsyncCallback asyncCallback = new LoggingAsyncHandler(){
                         public void handleFailure(Throwable caught) {
                                  System.err.println("Fallo en la carga de la configuracion");
                         }
                         public void handleSuccess(Object result) {
                                  System.out.println("Cargada la configuracion");
                         }
                 };
                 JornadasJavsa.Util.getInstance().cargarConfiguracion(asyncCallback);
www.i2e.com.es




                    Código en el servidor que recibe las llamas del
                     cliente JavaScript.
                 package es.i2e.jornadasjava.web.server.servicios.inicio;
                 import com.google.gwt.user.server.rpc.RemoteServiceServlet;
                 import es.i2e.jornadasjava.web.client.servicios.inicio.JornadasJava;
                 import es.i2e.jornadasJava.web.client.util.GwtServiceException;

                 public class JornadasJavaImpl extends RemoteServiceServlet implements JornadasJava {
                           public void cargarConfiguracion() throws GwtServiceException{

                           }
                 }
www.i2e.com.es




                    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.
www.i2e.com.es




                 El framework Google Web Toolkit
www.i2e.com.es




                    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.
www.i2e.com.es




                    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..
www.i2e.com.es




                    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.
www.i2e.com.es




                    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.
www.i2e.com.es




                    En GWT 2.0 se 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. Por lo
                     tanto ejecutar los test requerìa ejecutar el
                     navegador. Al estar HtmlUnit escrito enteramente en
                     Java no necesitaremos ejecutar el navegador.
                     Podremos depurar los test desde el depurador de
                     Java.
www.i2e.com.es




                 El framework Google Web Toolkit
www.i2e.com.es




                    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.
www.i2e.com.es
www.i2e.com.es




                    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
www.i2e.com.es




                 El framework Google Web Toolkit
www.i2e.com.es




                    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.
www.i2e.com.es




                    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.
www.i2e.com.es




                 El framework Google Web Toolkit
www.i2e.com.es
www.i2e.com.es
www.i2e.com.es
www.i2e.com.es
www.i2e.com.es
www.i2e.com.es
www.i2e.com.es
www.i2e.com.es
www.i2e.com.es
www.i2e.com.es
www.i2e.com.es




                    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
www.i2e.com.es
www.i2e.com.es




                    http://www.i2e.com.es
                    Twitter: i2e_es
                    emilio@i2e.com.es
                    i2e@i2e.com.es

Contenu connexe

Tendances

GWT: Why GWT, GQuery, and RequestFactory
GWT: Why GWT, GQuery, and RequestFactoryGWT: Why GWT, GQuery, and RequestFactory
GWT: Why GWT, GQuery, and RequestFactoryManuel Carrasco Moñino
 
Gwt seminario java_hispano_manolocarrasco
Gwt seminario java_hispano_manolocarrascoGwt seminario java_hispano_manolocarrasco
Gwt seminario java_hispano_manolocarrascoManuel Carrasco Moñino
 
Liferay themestraining lr6.2-es_v1.0
Liferay themestraining lr6.2-es_v1.0Liferay themestraining lr6.2-es_v1.0
Liferay themestraining lr6.2-es_v1.0Juan Gallardo Ortiz
 
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
 
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
 
introduccion java a caracteristicas
introduccion java a caracteristicasintroduccion java a caracteristicas
introduccion java a caracteristicasExpediaTravel
 
Genasys sigte2011 open_geogadget_framework (OGF)
Genasys sigte2011 open_geogadget_framework (OGF)Genasys sigte2011 open_geogadget_framework (OGF)
Genasys sigte2011 open_geogadget_framework (OGF)Javier Sánchez
 
Presentacion Drupal Ccrtv
Presentacion Drupal CcrtvPresentacion Drupal Ccrtv
Presentacion Drupal CcrtvPedro Cambra
 
Corriendo SQL Server en Docker
Corriendo SQL Server en DockerCorriendo SQL Server en Docker
Corriendo SQL Server en DockerJavier Villegas
 
Israel tecnologias para desarrollo-web
Israel tecnologias para desarrollo-webIsrael tecnologias para desarrollo-web
Israel tecnologias para desarrollo-webimei_02
 
Desarrollo de Aplicaciones Moviles en Android: Temas Avanzados
Desarrollo de Aplicaciones Moviles en Android: Temas AvanzadosDesarrollo de Aplicaciones Moviles en Android: Temas Avanzados
Desarrollo de Aplicaciones Moviles en Android: Temas AvanzadosGabriel Huecas
 
web 2.0 maria y miriam
web 2.0 maria y miriamweb 2.0 maria y miriam
web 2.0 maria y miriammariaymiriam
 
Curso Iniciacion android
Curso Iniciacion androidCurso Iniciacion android
Curso Iniciacion androidZix Stdio
 
Investigación y comparativa cms
Investigación y comparativa cmsInvestigación y comparativa cms
Investigación y comparativa cmspsvasir
 
Introducción a Java EE
Introducción a Java EEIntroducción a Java EE
Introducción a Java EEPaco Saucedo
 

Tendances (20)

GWT: Why GWT, GQuery, and RequestFactory
GWT: Why GWT, GQuery, and RequestFactoryGWT: Why GWT, GQuery, and RequestFactory
GWT: Why GWT, GQuery, and RequestFactory
 
Gwt seminario java_hispano_manolocarrasco
Gwt seminario java_hispano_manolocarrascoGwt seminario java_hispano_manolocarrasco
Gwt seminario java_hispano_manolocarrasco
 
Liferay themestraining lr6.2-es_v1.0
Liferay themestraining lr6.2-es_v1.0Liferay themestraining lr6.2-es_v1.0
Liferay themestraining lr6.2-es_v1.0
 
2012 ucm-magister-cms-gestores-jesusflores
2012 ucm-magister-cms-gestores-jesusflores2012 ucm-magister-cms-gestores-jesusflores
2012 ucm-magister-cms-gestores-jesusflores
 
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
 
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
 
introduccion java a caracteristicas
introduccion java a caracteristicasintroduccion java a caracteristicas
introduccion java a caracteristicas
 
Genasys sigte2011 open_geogadget_framework (OGF)
Genasys sigte2011 open_geogadget_framework (OGF)Genasys sigte2011 open_geogadget_framework (OGF)
Genasys sigte2011 open_geogadget_framework (OGF)
 
JqueryMobile
JqueryMobile JqueryMobile
JqueryMobile
 
Presentacion Drupal Ccrtv
Presentacion Drupal CcrtvPresentacion Drupal Ccrtv
Presentacion Drupal Ccrtv
 
Corriendo SQL Server en Docker
Corriendo SQL Server en DockerCorriendo SQL Server en Docker
Corriendo SQL Server en Docker
 
Israel tecnologias para desarrollo-web
Israel tecnologias para desarrollo-webIsrael tecnologias para desarrollo-web
Israel tecnologias para desarrollo-web
 
Desarrollo de Aplicaciones Moviles en Android: Temas Avanzados
Desarrollo de Aplicaciones Moviles en Android: Temas AvanzadosDesarrollo de Aplicaciones Moviles en Android: Temas Avanzados
Desarrollo de Aplicaciones Moviles en Android: Temas Avanzados
 
web 2.0 maria y miriam
web 2.0 maria y miriamweb 2.0 maria y miriam
web 2.0 maria y miriam
 
Desarrollo de la web
Desarrollo de la webDesarrollo de la web
Desarrollo de la web
 
Curso Iniciacion android
Curso Iniciacion androidCurso Iniciacion android
Curso Iniciacion android
 
Investigación y comparativa cms
Investigación y comparativa cmsInvestigación y comparativa cms
Investigación y comparativa cms
 
Introducción a Java EE
Introducción a Java EEIntroducción a Java EE
Introducción a Java EE
 
Arquitectura java web
Arquitectura java webArquitectura java web
Arquitectura java web
 
Fundamentos Básicos de Visual Basic
Fundamentos Básicos de Visual BasicFundamentos Básicos de Visual Basic
Fundamentos Básicos de Visual Basic
 

Similaire à Presentacion Google Web Toolkit

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
 
Linea del tiempo de los frameworks
Linea del tiempo de los frameworksLinea del tiempo de los frameworks
Linea del tiempo de los frameworksJose Alejandro
 
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
 
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
 
Articulo tipos de ide y ajax control toolkit
Articulo   tipos de ide y ajax control toolkitArticulo   tipos de ide y ajax control toolkit
Articulo tipos de ide y ajax control toolkitCesar Escalante
 
Herramientas de desarrollo.pptx
Herramientas de desarrollo.pptxHerramientas de desarrollo.pptx
Herramientas de desarrollo.pptxNicolasCBarrantes
 
MEJORES PROGRAMAS PARA DISEÑAR PAGINA WEB
MEJORES PROGRAMAS PARA DISEÑAR PAGINA WEBMEJORES PROGRAMAS PARA DISEÑAR PAGINA WEB
MEJORES PROGRAMAS PARA DISEÑAR PAGINA WEBdaliacarolinaastocah
 
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
 
Manual de jquery en pdf desarrollowebcom
Manual de jquery en pdf desarrollowebcomManual de jquery en pdf desarrollowebcom
Manual de jquery en pdf desarrollowebcomjo_ram
 
Desarrollo.de.aplicaciones.con.java
Desarrollo.de.aplicaciones.con.javaDesarrollo.de.aplicaciones.con.java
Desarrollo.de.aplicaciones.con.javaSantiago Sora
 
Los diferentes lenguajes de programación para la web
Los diferentes lenguajes de programación para la webLos diferentes lenguajes de programación para la web
Los diferentes lenguajes de programación para la webCartagena, Bolivar
 
Los diferentes lenguajes de programación para la web
Los diferentes lenguajes de programación para la webLos diferentes lenguajes de programación para la web
Los diferentes lenguajes de programación para la webCartagena, Bolivar
 

Similaire à Presentacion Google Web Toolkit (20)

Aprendiendo GWT
Aprendiendo GWTAprendiendo GWT
Aprendiendo 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 JavaScript
 
Gwt I - entendiendo gwt
Gwt I - entendiendo gwtGwt I - entendiendo gwt
Gwt I - entendiendo gwt
 
Linea del tiempo de los frameworks
Linea del tiempo de los frameworksLinea del tiempo de los frameworks
Linea del tiempo de los frameworks
 
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
 
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
 
Articulo tipos de ide y ajax control toolkit
Articulo   tipos de ide y ajax control toolkitArticulo   tipos de ide y ajax control toolkit
Articulo tipos de ide y ajax control toolkit
 
Herramientas de desarrollo.pptx
Herramientas de desarrollo.pptxHerramientas de desarrollo.pptx
Herramientas de desarrollo.pptx
 
MEJORES PROGRAMAS PARA DISEÑAR PAGINA WEB
MEJORES PROGRAMAS PARA DISEÑAR PAGINA WEBMEJORES PROGRAMAS PARA DISEÑAR PAGINA WEB
MEJORES PROGRAMAS PARA DISEÑAR PAGINA WEB
 
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
 
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
 
Java Scripts
Java ScriptsJava Scripts
Java Scripts
 
EQUIPO 2,2A PARTE DE LAS AGUILAS
EQUIPO 2,2A PARTE DE LAS AGUILASEQUIPO 2,2A PARTE DE LAS AGUILAS
EQUIPO 2,2A PARTE DE LAS AGUILAS
 
Manual de jquery en pdf desarrollowebcom
Manual de jquery en pdf desarrollowebcomManual de jquery en pdf desarrollowebcom
Manual de jquery en pdf desarrollowebcom
 
Dreamweaver
DreamweaverDreamweaver
Dreamweaver
 
Dreamweaver
DreamweaverDreamweaver
Dreamweaver
 
Google Web Toolkit
Google Web ToolkitGoogle Web Toolkit
Google Web Toolkit
 
Desarrollo.de.aplicaciones.con.java
Desarrollo.de.aplicaciones.con.javaDesarrollo.de.aplicaciones.con.java
Desarrollo.de.aplicaciones.con.java
 
Los diferentes lenguajes de programación para la web
Los diferentes lenguajes de programación para la webLos diferentes lenguajes de programación para la web
Los diferentes lenguajes de programación para la web
 
Los diferentes lenguajes de programación para la web
Los diferentes lenguajes de programación para la webLos diferentes lenguajes de programación para la web
Los diferentes lenguajes de programación para la web
 

Plus 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
 

Dernier

Trabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfTrabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfedepmariaperez
 
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del PerúRed Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del PerúCEFERINO DELGADO FLORES
 
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxEl_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxAlexander López
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxAlexander López
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.241514949
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx241522327
 
Presentación sobre la Inteligencia Artificial
Presentación sobre la Inteligencia ArtificialPresentación sobre la Inteligencia Artificial
Presentación sobre la Inteligencia Artificialcynserafini89
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx241523733
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA241531640
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxazmysanros90
 
Excel (1) tecnologia.pdf trabajo Excel taller
Excel  (1) tecnologia.pdf trabajo Excel tallerExcel  (1) tecnologia.pdf trabajo Excel taller
Excel (1) tecnologia.pdf trabajo Excel tallerValentinaTabares11
 
tarea de exposicion de senati zzzzzzzzzz
tarea de exposicion de senati zzzzzzzzzztarea de exposicion de senati zzzzzzzzzz
tarea de exposicion de senati zzzzzzzzzzAlexandergo5
 
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOAREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOnarvaezisabella21
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxNombre Apellidos
 
Tecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxTecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxGESTECPERUSAC
 
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptTEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptJavierHerrera662252
 
Mapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMidwarHenryLOZAFLORE
 
Los Microcontroladores PIC, Aplicaciones
Los Microcontroladores PIC, AplicacionesLos Microcontroladores PIC, Aplicaciones
Los Microcontroladores PIC, AplicacionesEdomar AR
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadMiguelAngelVillanuev48
 
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxModelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxtjcesar1
 

Dernier (20)

Trabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfTrabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdf
 
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del PerúRed Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
 
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxEl_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx
 
Presentación sobre la Inteligencia Artificial
Presentación sobre la Inteligencia ArtificialPresentación sobre la Inteligencia Artificial
Presentación sobre la Inteligencia Artificial
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptx
 
Excel (1) tecnologia.pdf trabajo Excel taller
Excel  (1) tecnologia.pdf trabajo Excel tallerExcel  (1) tecnologia.pdf trabajo Excel taller
Excel (1) tecnologia.pdf trabajo Excel taller
 
tarea de exposicion de senati zzzzzzzzzz
tarea de exposicion de senati zzzzzzzzzztarea de exposicion de senati zzzzzzzzzz
tarea de exposicion de senati zzzzzzzzzz
 
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOAREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
 
Tecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxTecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptx
 
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptTEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
 
Mapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptx
 
Los Microcontroladores PIC, Aplicaciones
Los Microcontroladores PIC, AplicacionesLos Microcontroladores PIC, Aplicaciones
Los Microcontroladores PIC, Aplicaciones
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidad
 
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxModelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
 

Presentacion Google Web Toolkit

  • 1. www.i2e.com.es El framework Google Web Toolkit Emilio Bravo Garcia
  • 2. www.i2e.com.es  En esta presentación se va a Introducción realizar una introducción a Arquitectura de GWT Google Web Toolkit (en adelante GWT). GWT es una Construyendo la Interfaz tecnología desarrollada por Comunicación con el Servidor Google para acelerar el desarrollo de Aplicaciones Depuración y Test Ricas de Internet (RIA) y Compilación mejorar la experiencia del usuario. Despliegue Aplicaciones de Ejemplo
  • 3. www.i2e.com.es El framework Google Web Toolkit
  • 4. www.i2e.com.es  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.
  • 5. www.i2e.com.es  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.
  • 6. www.i2e.com.es  RIA(http://en.wikipedia.org/wiki/Rich_internet_applicati ons)  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.
  • 7. www.i2e.com.es  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.
  • 8. www.i2e.com.es  Una primera solución a los problemas anteriores son los Frameworks JavaScript.
  • 9. www.i2e.com.es  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.
  • 10. www.i2e.com.es  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.
  • 11. www.i2e.com.es  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
  • 12. www.i2e.com.es  Programas en Java  Depuras en Java  Pruebas en Java  GWT compila de Java a JavaScript  Despliegas en JavaScript
  • 13. www.i2e.com.es  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.
  • 14. www.i2e.com.es  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.
  • 15. www.i2e.com.es  Obtenemos un mayor rendimiento y una mejor escalabilidad que con las aplicaciones web tradicionales.
  • 16. www.i2e.com.es El framework Google Web Toolkit
  • 17. www.i2e.com.es  GWT tiene cuatro componentes principales ◦ Java-to-JavaScript Compiler. ◦ Hosted Web Browser. ◦ JRE Emulation Library. ◦ GWT Web UI Class Library
  • 18. www.i2e.com.es  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.
  • 19. www.i2e.com.es  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.
  • 20. www.i2e.com.es  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
  • 21. www.i2e.com.es  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.
  • 23. www.i2e.com.es El framework Google Web Toolkit
  • 24. www.i2e.com.es  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.
  • 25. www.i2e.com.es  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.
  • 26. www.i2e.com.es  Patrón MVP en vez de MVC
  • 27. www.i2e.com.es  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).
  • 28. www.i2e.com.es  Modulo JornadasJava.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.jornadasjava.web.client.JornadasJava"/> </module>
  • 29. www.i2e.com.es  Html de inicio (JornadasJava.html) <html> <head> <title>Wrapper HTML for JornadasJava</title> <meta name='gwt:module' content='es.i2e.jornadasjava.web.JornadasJava'/> <link type="text/css" rel='stylesheet' href='JornadasJava.css'/> <script type="text/javascript" language="javascript" src="jornadasJava/jornadasJava.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>
  • 30. www.i2e.com.es  JornadasJava.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; }
  • 31. www.i2e.com.es  EntryPoint (JornadasJava.java) package es.i2e.jornadasjava.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) { } }
  • 32. www.i2e.com.es  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; }-*/;
  • 33. www.i2e.com.es  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(); }
  • 34. www.i2e.com.es  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.
  • 35. www.i2e.com.es  GWT  GWT Incubator  Smart GWT  GWT-Ext  IT Mill Toolkit  GWT mosaic
  • 36. www.i2e.com.es  GWT Designer  Eclipse Google Plugin  Cypal Studio for GWT, IntelliJ IDEA, gwt4nb (NetBeans)
  • 37. www.i2e.com.es  Integración sencilla con las apis de Google  http://code.google.com/p/gwt-google-apis/
  • 38. www.i2e.com.es  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() )
  • 39. www.i2e.com.es  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>
  • 40. www.i2e.com.es  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; }
  • 41. www.i2e.com.es  ImageBundle y ClientBundle public interface JornadasJavaImageBundle extends ImageBundle { @Resource("es/i2e/jornadasjava/icons/btn_cancel_icon.png") public AbstractImagePrototype cancelButtonIcon(); }
  • 42. www.i2e.com.es  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(); } }); }
  • 43. www.i2e.com.es El framework Google Web Toolkit
  • 44. www.i2e.com.es  GWT puede comunicarse con cualquier tecnología de servidor, realizando llamadas AJAX desde el cliente y transportando la información utilizando JSON o XML.
  • 45. www.i2e.com.es  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 el cliente tenemos que implementar las siguiente clases: ◦ JornadasJavaService.java ◦ JornadasJavaServiceAsyn.java  En la parte servidor implementamos: ◦ JornadasJavaServiceImpl.java
  • 46. www.i2e.com.es  Código en el cliente para realizar una llamada asíncrona a un servicio GWT RPC. AsyncCallback asyncCallback = new LoggingAsyncHandler(){ public void handleFailure(Throwable caught) { System.err.println("Fallo en la carga de la configuracion"); } public void handleSuccess(Object result) { System.out.println("Cargada la configuracion"); } }; JornadasJavsa.Util.getInstance().cargarConfiguracion(asyncCallback);
  • 47. www.i2e.com.es  Código en el servidor que recibe las llamas del cliente JavaScript. package es.i2e.jornadasjava.web.server.servicios.inicio; import com.google.gwt.user.server.rpc.RemoteServiceServlet; import es.i2e.jornadasjava.web.client.servicios.inicio.JornadasJava; import es.i2e.jornadasJava.web.client.util.GwtServiceException; public class JornadasJavaImpl extends RemoteServiceServlet implements JornadasJava { public void cargarConfiguracion() throws GwtServiceException{ } }
  • 48. www.i2e.com.es  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.
  • 49. www.i2e.com.es El framework Google Web Toolkit
  • 50. www.i2e.com.es  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.
  • 51. www.i2e.com.es  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..
  • 52. www.i2e.com.es  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.
  • 53. www.i2e.com.es  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.
  • 54. www.i2e.com.es  En GWT 2.0 se 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. Por lo tanto ejecutar los test requerìa ejecutar el navegador. Al estar HtmlUnit escrito enteramente en Java no necesitaremos ejecutar el navegador. Podremos depurar los test desde el depurador de Java.
  • 55. www.i2e.com.es El framework Google Web Toolkit
  • 56. www.i2e.com.es  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.
  • 58. www.i2e.com.es  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
  • 59. www.i2e.com.es El framework Google Web Toolkit
  • 60. www.i2e.com.es  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.
  • 61. www.i2e.com.es  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.
  • 62. www.i2e.com.es El framework Google Web Toolkit
  • 73. www.i2e.com.es  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
  • 75. www.i2e.com.es  http://www.i2e.com.es  Twitter: i2e_es  emilio@i2e.com.es  i2e@i2e.com.es