SlideShare una empresa de Scribd logo
1 de 20
Descargar para leer sin conexión
GWT, Google Web Toolkit
Parte 1: Entendiendo GWT




           Manuel Carrasco Moñino
           Seminarios de JavaHispano (16-Abril-2010)
           manolo@apache.org
Acerca de Mí
   Licenciado en Farmacia e Ingeniero de Telecomunicaciones.
   Enganchado a los sistemas desde 2002, y a Internet desde 2005
   Experto en sistemas críticos, seguridad, redes y comunicaciones, empecé a
    apasionarme por el software hace 5 años.
   Programador de cualquier cosa (asm, c, c++, shell, tcl-tk, dbase, vb,
    javascript, perl, ruby, groovy, Java ...)
   Enamorado de Linux.
   Fanático de TDD y las filosofías ágiles.
   Aficionado al Opensource
       – Creador de proyectos como mcmWebmail, powerFax, Lxp, y librerías como
          gwtUpload, gwtChismes...
       – Contribuciones a jetty, apache, ruby, perl, icewm, webmin, linux, uucp,
          mgetty, postfix ...
       – Contribuidor de Gwt
       – Committer de Hudson (Performance, Emma, Spanish Translation)
       – Miembro de la Apache Software Foundation (James y Hupa).
   Pero... mi gran pasión es la música folk (me podéis llamar hortera :-)

   He trabajado para Azkar, Intelligent Data, Cibernos, Lucent, Multiasistencia,
    COATM, mirai, Yell ....
   Actualmente trabajo como Arquitecto de Sistemas y Sofware en Paradigma
    Tecnológico.
Entendiendo GWT
¿Qué es, y qué no es?
Misión de GWT

                      To radically improve
                 the web experience for users
                     by enabling developers
                   to use existing Java tools
                 to build no-compromise Ajax
                    for any modern browser

Mejorar radicalmente la experiencia web de los usuarios al permitir a
   los desarrolladores utilizar las herramientas de Java para hacer
    Ajax (no comprometido), para cualquier navegador moderno.
¿Qué NO es GWT?


  No es una librería más con utiliades
  Javascript (jquery, prototype ...)

  No es una librería de widgets (ext,
  scriptaculous, yui ...)

  No es un framework (mootools, dojo ...)

  No es 'exclusivamente' un kit para crear
  aplicaciones RIA.
¿Qué es GWT?
   Generador de javascript: convierte código java a javascript.
     − Es un compilador
     − Es un linker
     − Es un optimizador completo (no sólo compresión y ofuscación)
     − Es un SDK
   El código generado puede incluirse en cualquier html (estático o
    dinámico), y puede interaccionar con éste (modificar el DOM,
    ejecutando AJAX, validando forms ...).
   Proprorciona además un conjunto de herramientas para testear, depurar,
    etc ..
   Proporciona un conjunto de módulos cliente: DOM, XML, I18N,
    JSON, RPC, y Widgets básicos.
   Y... mucho mas (css sprite, image bundling ...)

   Es código java para la máquina virtual 'browser' en lugar de 'jre'
Ventajas de usar un compilador frente a
        escribir javascript a mano
ASM sustituido por C, C++, GJC ...
Javascript sustituido por Java, ? ...

    Alto nivel: Java             
                                     Alto Nivel: C/C++
    −   <inherits                    −   #include
    −   <replace-with                −   #define
    −   Inline JS native code        −   Inline ASM native code
    −   Compiler                     −   Compiler
    −   Optimizer                    −   Optimizer
    −   Linker                       −   Linker
    −   Javascript para cada         −   Ensamblador para cada
        navegador                        procesador
    −   Advanced IDE and tools       −   Advanced IDE and tools
        for testing, debuging            for testing, debuging
¿Porqué un compilador?


    Separar la mantenibilidad del código de la efectividad del
    ejecutable.

    El javascript escrito a mano tiene un conflicto de
    intereses:
     −   Identificadores largos y legibles = aplicaciones grandes y lentas.
     −   Buen Formato = aplicaciones grandes y lentas.
     −   Comentarios = aplicaciones grandes y lentas

    La solución no es buscar convenciones en el código javascript
    escrito a mano, es crear un nivel de separación para que no se
    comprometan ambas (mantenibilidad, efectividad).

    Muchos de los errores mas comunes (sintaxis, errores de
    tipadom etc) son fácilmente corregibles en tiempo de
    compilación en lugar de en tiempo de ejecución.
¿Porqué Java?

    La sintaxis javascript es más próxima a java que en otros
    lenguages, por lo que es mas facil la transformación de
    java que de otros lenguages (perl, ruby, php ...).

    Muchas herramientas Java para desarrollo.

    El chequeo de tipos de java incrementa la productividad
    porque reduce errores.

    Asistencia en la escritura de código.

    Refactoring de verdad.

    Diseño, patrones, OO, hacen mas fácil de comprender el
    código y las llamadas AJAX, con mucho menos
    documentación.

    Y... TDD
GWT nos facilita

    Versionado de ficheros (para cada compilación)

    Sólo lo necesario para cada navegador y lenguaje. Descarga sólo lo que se usa.

    Eliminar código no usado (sólo las clases, y métodos utilizados).

    Código ofuscado, comprimido y optimizado.

    Los ficheros pueden ser cacheados para siempre.

    Ejecución más rápida pero con código legible.

    Herramientas para Test y Debug.

    Librerías de lado servidor (RPC java)

    Mismos objetos Servidor <=> Cliente

    Deja a GWT hacer las cosas que tenemos que hacer a mano, o que dejamos de
    hacer por desconocimiento, complejidad, etc.
     − Selección e inclusión de librerías en la página.
     − Herramienas de optimización
     − Herramientas de ofuscación
     − Versionado de ficheros para publicar.
     − Mantenimiento de versiones legibles/ilegibles del código.
     − Configuración http para enviar información de caché
¿Rendimiento?

    JavaScript
     − GWT genera código mucho más pequeño que el que podamos
       escribir a mano. A diferencia de las aplicaciones tradicionales en
       javascript, Gwt analiza tu código e incluye exclusivamente lo
       necesario para cada navegador.
     − Pudiera no ser más rápido, pero sí mas eficaz

    Usuario
     − Las aplicaciones GWT son normalmente más rápidas que las escritas a
       mano, y normalmente requieren menos trucos HTTP. Gwt elimina el
       uso envoltorios para funcionalidades incluidas nativamente en esa
       versión de navegador.

    Desarrollo
     − Con el ahorro del tiempo invertido en depurar los problemas en cada
       navegador, puedes emplear mucho mas tiempo en la funcionalidad de
       tu aplicación. La eficiencia en el desarrollo es la parte favorita en Gwt.
Herramientas del toolkit.
Componentes GWT

    Libreria emulada JRE:
     − java.util
     − java.lang

    GWT librería Core
        – JSON, XML, RPC
        – DOM, UI, I18N

    Compiler, Optimizer, Linker

    Herramientas para desarrollo:
     − Scripts de utiliad:
         − webAppCreator, i18nCreator
     − Testing library (GWTestCase, HtmlUnit)
     − Customized App Server: Jetty/Tomcat
     − Eclipse Plugin
     − Browser plugin
     − Speed Tracer (extensión para chrome)
¿Y qué más?

    Historia de navegación (Botón atras, adelante)

    ClientBundle: permite agrupar y manipular recursos en tiempo de compilación
    (Imágenes, Optimización de Css, Sprite, lenguages …)

    UIBinder: lenguage declarativo y extensivo para construir interfaces de usuario.
    Injecta constructores en el código Java, y genera HTML en tiempo de
    compilación.

    Code split: fragmenta el código javascript en partes para que sean cargadas
    asíncronamente.

    LayoutPanels: comportamiento predecible de la disposición de elementos.

    Compresión: Utiliza las mas avanzadas técnicas de compresión conocidas.

    Gestor de Eventos y Schedule propios, sin memory leaks.

    JSNI (JavaScript Native Interface)

    SOYC (Story of your compile)
Soporte, Comunidad.
Actividad GWT

    Comunidad muy activa:
       – GWT-users cien mensajes diarios
       – GWT-contributors (lista moderada) 10 mensajes diarios

    Desarrollo
       – Grupo de committers limitado
       – Decenas de contributors
       – Exhaustiva revisión de código
       – Tests muy exigentes
       – Elevada calidad de código (javadocs, codstyle …)
       – Excelentes desarrolladores.

    Documentación
       – Muy bien explicado
       – Muy Actualizada

    Cientos de librerías

    Google.
Conclusiones
GWT no hace posible nada que no fuera posible hacer de otra manera, pero sí
  hace que la acción sea mucho mas productiva.

GWT no intenta ensalzar las virtudes de Java, sino reconocer el pragmatismo de
  las herramientas existentes, IDEs, entornos de prueba, tipos, etc.

GWT no quiere hacernos olvidar DOM, CSS, navegador, etc, sino permitir
  escribir abstracciones de todo ello y hacernos mas productivos que
  escribiendo código JS a mano.

Posiblemente, algún día GWT será capaz de compilar otros lenguages, o incluso
  procesar JS con anotaciones de tipos.

GWT hace productivo y posible el desarrollo de sitios webs de gran escala y
  abre la posibilidad de crear aplicaciones de nueva generación de manera
  fiable.

                                                                  Ray Cromwell
Preguntas




            Manuel Carrasco Moñino

               http://manolocarrasco.blogspot.com
                                twitter.com/dodotis

                       manolo@apache.org

Más contenido relacionado

La actualidad más candente

Dragome en JavaConf Buenos Aires 2014
Dragome en JavaConf Buenos Aires 2014 Dragome en JavaConf Buenos Aires 2014
Dragome en JavaConf Buenos Aires 2014 Fernando Petrola
 
Curso Angular 9 - CodeURJC - Marzo 2020
Curso Angular 9 - CodeURJC - Marzo 2020Curso Angular 9 - CodeURJC - Marzo 2020
Curso Angular 9 - CodeURJC - Marzo 2020Micael Gallego
 
Herramientas y plugins para el desarrollo de aplicaciones cloud native para K...
Herramientas y plugins para el desarrollo de aplicaciones cloud native para K...Herramientas y plugins para el desarrollo de aplicaciones cloud native para K...
Herramientas y plugins para el desarrollo de aplicaciones cloud native para K...Micael Gallego
 
WebRTC en tu web con OpenVidu
WebRTC en tu web con OpenViduWebRTC en tu web con OpenVidu
WebRTC en tu web con OpenViduMicael Gallego
 
Dev Tools para Kubernetes - Codemotion 2019
Dev Tools para Kubernetes - Codemotion 2019Dev Tools para Kubernetes - Codemotion 2019
Dev Tools para Kubernetes - Codemotion 2019Micael Gallego
 
Java completo y agragado
Java completo y agragadoJava completo y agragado
Java completo y agragadoMaria
 
OpenVidu Commitconf 2018
OpenVidu Commitconf 2018 OpenVidu Commitconf 2018
OpenVidu Commitconf 2018 Micael Gallego
 
Code Blast 2012 - Fast Mobile Prototyping
Code Blast 2012 - Fast Mobile PrototypingCode Blast 2012 - Fast Mobile Prototyping
Code Blast 2012 - Fast Mobile PrototypingINSIGNIA4U
 
¿Cómo poner software de calidad en manos del usuario de forma rápida?
¿Cómo poner software de calidad en manos del usuario de forma rápida?¿Cómo poner software de calidad en manos del usuario de forma rápida?
¿Cómo poner software de calidad en manos del usuario de forma rápida?Micael Gallego
 
Jobsket Spring 2GX Madrid
Jobsket Spring 2GX MadridJobsket Spring 2GX Madrid
Jobsket Spring 2GX MadridJobsket
 
Software libre para videoconferencias
Software libre para videoconferenciasSoftware libre para videoconferencias
Software libre para videoconferenciasMicael Gallego
 
Desarrollo con Java y metodologías agiles
Desarrollo con Java y metodologías agilesDesarrollo con Java y metodologías agiles
Desarrollo con Java y metodologías agilesJobsket
 
Desarrollo.de.aplicaciones.con.java
Desarrollo.de.aplicaciones.con.javaDesarrollo.de.aplicaciones.con.java
Desarrollo.de.aplicaciones.con.javaSantiago Sora
 

La actualidad más candente (20)

Dragome en JavaConf Buenos Aires 2014
Dragome en JavaConf Buenos Aires 2014 Dragome en JavaConf Buenos Aires 2014
Dragome en JavaConf Buenos Aires 2014
 
Desarrollo de aplicaciones AJAX con GWT
Desarrollo de aplicaciones AJAX con GWTDesarrollo de aplicaciones AJAX con GWT
Desarrollo de aplicaciones AJAX con GWT
 
Presentacion Google Web Toolkit
Presentacion Google Web ToolkitPresentacion Google Web Toolkit
Presentacion Google Web Toolkit
 
Desarrollo de aplicaciones Web 2.0 Google Web Toolkit
Desarrollo de aplicaciones Web 2.0 Google Web ToolkitDesarrollo de aplicaciones Web 2.0 Google Web Toolkit
Desarrollo de aplicaciones Web 2.0 Google Web Toolkit
 
Java Scripts
Java ScriptsJava Scripts
Java Scripts
 
Curso Angular 9 - CodeURJC - Marzo 2020
Curso Angular 9 - CodeURJC - Marzo 2020Curso Angular 9 - CodeURJC - Marzo 2020
Curso Angular 9 - CodeURJC - Marzo 2020
 
Herramientas y plugins para el desarrollo de aplicaciones cloud native para K...
Herramientas y plugins para el desarrollo de aplicaciones cloud native para K...Herramientas y plugins para el desarrollo de aplicaciones cloud native para K...
Herramientas y plugins para el desarrollo de aplicaciones cloud native para K...
 
WebRTC en tu web con OpenVidu
WebRTC en tu web con OpenViduWebRTC en tu web con OpenVidu
WebRTC en tu web con OpenVidu
 
20170405 - Ecosistema Javascript
20170405 - Ecosistema Javascript20170405 - Ecosistema Javascript
20170405 - Ecosistema Javascript
 
Dev Tools para Kubernetes - Codemotion 2019
Dev Tools para Kubernetes - Codemotion 2019Dev Tools para Kubernetes - Codemotion 2019
Dev Tools para Kubernetes - Codemotion 2019
 
Java completo y agragado
Java completo y agragadoJava completo y agragado
Java completo y agragado
 
Taller Grails
Taller GrailsTaller Grails
Taller Grails
 
OpenVidu Commitconf 2018
OpenVidu Commitconf 2018 OpenVidu Commitconf 2018
OpenVidu Commitconf 2018
 
Code Blast 2012 - Fast Mobile Prototyping
Code Blast 2012 - Fast Mobile PrototypingCode Blast 2012 - Fast Mobile Prototyping
Code Blast 2012 - Fast Mobile Prototyping
 
¿Cómo poner software de calidad en manos del usuario de forma rápida?
¿Cómo poner software de calidad en manos del usuario de forma rápida?¿Cómo poner software de calidad en manos del usuario de forma rápida?
¿Cómo poner software de calidad en manos del usuario de forma rápida?
 
Jobsket Spring 2GX Madrid
Jobsket Spring 2GX MadridJobsket Spring 2GX Madrid
Jobsket Spring 2GX Madrid
 
Software libre para videoconferencias
Software libre para videoconferenciasSoftware libre para videoconferencias
Software libre para videoconferencias
 
Java script
Java scriptJava script
Java script
 
Desarrollo con Java y metodologías agiles
Desarrollo con Java y metodologías agilesDesarrollo con Java y metodologías agiles
Desarrollo con Java y metodologías agiles
 
Desarrollo.de.aplicaciones.con.java
Desarrollo.de.aplicaciones.con.javaDesarrollo.de.aplicaciones.con.java
Desarrollo.de.aplicaciones.con.java
 

Destacado

How to build business web apps using GWT and Spring Tools
How to build business web apps using GWT and Spring ToolsHow to build business web apps using GWT and Spring Tools
How to build business web apps using GWT and Spring ToolsChris Ramsdale
 
GWT - de iniciante a especialista
GWT - de iniciante a especialistaGWT - de iniciante a especialista
GWT - de iniciante a especialistaDanilo Reinert
 
Desarrollo multiplataforma de apps con GWT y PhoneGap
Desarrollo multiplataforma de apps con GWT y PhoneGapDesarrollo multiplataforma de apps con GWT y PhoneGap
Desarrollo multiplataforma de apps con GWT y PhoneGapbetabeers
 
Integrating GWT, Spring and Hibernate ORM
Integrating GWT, Spring and Hibernate ORMIntegrating GWT, Spring and Hibernate ORM
Integrating GWT, Spring and Hibernate ORMMarakana Inc.
 
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
 

Destacado (8)

How to build business web apps using GWT and Spring Tools
How to build business web apps using GWT and Spring ToolsHow to build business web apps using GWT and Spring Tools
How to build business web apps using GWT and Spring Tools
 
GWT - Una introducción
GWT - Una introducciónGWT - Una introducción
GWT - Una introducción
 
GWT - de iniciante a especialista
GWT - de iniciante a especialistaGWT - de iniciante a especialista
GWT - de iniciante a especialista
 
GWT
GWTGWT
GWT
 
Gwt II - trabajando con gwt
Gwt II - trabajando con gwtGwt II - trabajando con gwt
Gwt II - trabajando con gwt
 
Desarrollo multiplataforma de apps con GWT y PhoneGap
Desarrollo multiplataforma de apps con GWT y PhoneGapDesarrollo multiplataforma de apps con GWT y PhoneGap
Desarrollo multiplataforma de apps con GWT y PhoneGap
 
Integrating GWT, Spring and Hibernate ORM
Integrating GWT, Spring and Hibernate ORMIntegrating GWT, Spring and Hibernate ORM
Integrating GWT, Spring and Hibernate ORM
 
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
 

Similar a Gwt I - entendiendo gwt

Aprendiendo a Programas en 4 horas JavaScript
Aprendiendo a Programas en 4 horas JavaScriptAprendiendo a Programas en 4 horas JavaScript
Aprendiendo a Programas en 4 horas JavaScriptKarsarmi
 
Code Blast 2012 - Node.js
Code Blast 2012 - Node.jsCode Blast 2012 - Node.js
Code Blast 2012 - Node.jsINSIGNIA4U
 
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
 
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
 
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
 
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
 
herramientas tecnológicas
herramientas tecnológicasherramientas tecnológicas
herramientas tecnológicasGerardo Linares
 
Herramientas Ágiles para Desarrollo
Herramientas Ágiles para DesarrolloHerramientas Ágiles para Desarrollo
Herramientas Ágiles para DesarrolloGastón Guillerón
 
Herramientas agilesdesarrollo
Herramientas agilesdesarrolloHerramientas agilesdesarrollo
Herramientas agilesdesarrollogabrielpiccoli
 
Lenguajes de desarrollo web
Lenguajes de desarrollo webLenguajes de desarrollo web
Lenguajes de desarrollo webEvelioHdez
 
Mi lenguaje de programación de preferencia
Mi lenguaje de programación de preferenciaMi lenguaje de programación de preferencia
Mi lenguaje de programación de preferenciaglfloresgilberto
 

Similar a Gwt I - entendiendo gwt (20)

Aprendiendo a Programas en 4 horas JavaScript
Aprendiendo a Programas en 4 horas JavaScriptAprendiendo a Programas en 4 horas JavaScript
Aprendiendo a Programas en 4 horas JavaScript
 
Exposicion GWT
Exposicion GWTExposicion GWT
Exposicion GWT
 
Code Blast 2012 - Node.js
Code Blast 2012 - Node.jsCode Blast 2012 - Node.js
Code Blast 2012 - Node.js
 
Grails barcamp 2013
Grails barcamp 2013Grails barcamp 2013
Grails barcamp 2013
 
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
 
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
 
Qué es java
Qué es javaQué es java
Qué es java
 
Andrid studio
Andrid studioAndrid studio
Andrid studio
 
Java 2010: presente, límites y futuro
Java 2010: presente, límites y futuroJava 2010: presente, límites y futuro
Java 2010: presente, límites y futuro
 
Lenguaje Java
Lenguaje JavaLenguaje Java
Lenguaje Java
 
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
 
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
 
herramientas tecnológicas
herramientas tecnológicasherramientas tecnológicas
herramientas tecnológicas
 
Herramientas Ágiles para Desarrollo
Herramientas Ágiles para DesarrolloHerramientas Ágiles para Desarrollo
Herramientas Ágiles para Desarrollo
 
Herramientas agilesdesarrollo
Herramientas agilesdesarrolloHerramientas agilesdesarrollo
Herramientas agilesdesarrollo
 
Lenguajes de desarrollo web
Lenguajes de desarrollo webLenguajes de desarrollo web
Lenguajes de desarrollo web
 
Mi lenguaje de programación de preferencia
Mi lenguaje de programación de preferenciaMi lenguaje de programación de preferencia
Mi lenguaje de programación de preferencia
 

Más de Manuel Carrasco Moñino

Present and Future of GWT from a developer perspective
Present and Future of GWT from a developer perspectivePresent and Future of GWT from a developer perspective
Present and Future of GWT from a developer perspectiveManuel Carrasco Moñino
 
Web Components the best marriage for a PWA
Web Components the best marriage for a PWAWeb Components the best marriage for a PWA
Web Components the best marriage for a PWAManuel Carrasco Moñino
 
Intro to Web Components, Polymer & Vaadin Elements
Intro to Web Components, Polymer & Vaadin ElementsIntro to Web Components, Polymer & Vaadin Elements
Intro to Web Components, Polymer & Vaadin ElementsManuel Carrasco Moñino
 
GwtQuery the perfect companion for GWT, GWT.create 2013
GwtQuery the perfect companion for GWT,  GWT.create 2013GwtQuery the perfect companion for GWT,  GWT.create 2013
GwtQuery the perfect companion for GWT, GWT.create 2013Manuel Carrasco Moñino
 
Rapid and Reliable Developing with HTML5 & GWT
Rapid and Reliable Developing with HTML5 & GWTRapid and Reliable Developing with HTML5 & GWT
Rapid and Reliable Developing with HTML5 & GWTManuel Carrasco Moñino
 
GQuery a jQuery clone for Gwt, RivieraDev 2011
GQuery a jQuery clone for Gwt, RivieraDev 2011GQuery a jQuery clone for Gwt, RivieraDev 2011
GQuery a jQuery clone for Gwt, RivieraDev 2011Manuel Carrasco Moñino
 

Más de Manuel Carrasco Moñino (20)

The Java alternative to Javascript
The Java alternative to JavascriptThe Java alternative to Javascript
The Java alternative to Javascript
 
GWT and PWA
GWT and PWAGWT and PWA
GWT and PWA
 
Present and Future of GWT from a developer perspective
Present and Future of GWT from a developer perspectivePresent and Future of GWT from a developer perspective
Present and Future of GWT from a developer perspective
 
GWT Contributor Workshop
GWT Contributor WorkshopGWT Contributor Workshop
GWT Contributor Workshop
 
CRUD with Polymer 2.0
CRUD with Polymer 2.0CRUD with Polymer 2.0
CRUD with Polymer 2.0
 
Web Components and PWA
Web Components and PWAWeb Components and PWA
Web Components and PWA
 
Building Components for Business Apps
Building Components for Business AppsBuilding Components for Business Apps
Building Components for Business Apps
 
Web Components the best marriage for a PWA
Web Components the best marriage for a PWAWeb Components the best marriage for a PWA
Web Components the best marriage for a PWA
 
Intro to Web Components, Polymer & Vaadin Elements
Intro to Web Components, Polymer & Vaadin ElementsIntro to Web Components, Polymer & Vaadin Elements
Intro to Web Components, Polymer & Vaadin Elements
 
Rock GWT UI's with Polymer Elements
Rock GWT UI's with Polymer ElementsRock GWT UI's with Polymer Elements
Rock GWT UI's with Polymer Elements
 
Introducing GWT Polymer (vaadin)
Introducing GWT Polymer (vaadin)Introducing GWT Polymer (vaadin)
Introducing GWT Polymer (vaadin)
 
Speed up your GWT coding with gQuery
Speed up your GWT coding with gQuerySpeed up your GWT coding with gQuery
Speed up your GWT coding with gQuery
 
Vaadin codemotion 2014
Vaadin codemotion 2014Vaadin codemotion 2014
Vaadin codemotion 2014
 
GwtQuery the perfect companion for GWT, GWT.create 2013
GwtQuery the perfect companion for GWT,  GWT.create 2013GwtQuery the perfect companion for GWT,  GWT.create 2013
GwtQuery the perfect companion for GWT, GWT.create 2013
 
Rapid and Reliable Developing with HTML5 & GWT
Rapid and Reliable Developing with HTML5 & GWTRapid and Reliable Developing with HTML5 & GWT
Rapid and Reliable Developing with HTML5 & GWT
 
GQuery a jQuery clone for Gwt, RivieraDev 2011
GQuery a jQuery clone for Gwt, RivieraDev 2011GQuery a jQuery clone for Gwt, RivieraDev 2011
GQuery a jQuery clone for Gwt, RivieraDev 2011
 
Apache James/Hupa & GWT
Apache James/Hupa & GWTApache James/Hupa & GWT
Apache James/Hupa & GWT
 
Mod security
Mod securityMod security
Mod security
 
Gwt IV -mvp
Gwt IV -mvpGwt IV -mvp
Gwt IV -mvp
 
Gwt III - Avanzado
Gwt III - AvanzadoGwt III - Avanzado
Gwt III - Avanzado
 

Gwt I - entendiendo gwt

  • 1. GWT, Google Web Toolkit Parte 1: Entendiendo GWT Manuel Carrasco Moñino Seminarios de JavaHispano (16-Abril-2010) manolo@apache.org
  • 2. Acerca de Mí  Licenciado en Farmacia e Ingeniero de Telecomunicaciones.  Enganchado a los sistemas desde 2002, y a Internet desde 2005  Experto en sistemas críticos, seguridad, redes y comunicaciones, empecé a apasionarme por el software hace 5 años.  Programador de cualquier cosa (asm, c, c++, shell, tcl-tk, dbase, vb, javascript, perl, ruby, groovy, Java ...)  Enamorado de Linux.  Fanático de TDD y las filosofías ágiles.  Aficionado al Opensource – Creador de proyectos como mcmWebmail, powerFax, Lxp, y librerías como gwtUpload, gwtChismes... – Contribuciones a jetty, apache, ruby, perl, icewm, webmin, linux, uucp, mgetty, postfix ... – Contribuidor de Gwt – Committer de Hudson (Performance, Emma, Spanish Translation) – Miembro de la Apache Software Foundation (James y Hupa).  Pero... mi gran pasión es la música folk (me podéis llamar hortera :-)  He trabajado para Azkar, Intelligent Data, Cibernos, Lucent, Multiasistencia, COATM, mirai, Yell ....  Actualmente trabajo como Arquitecto de Sistemas y Sofware en Paradigma Tecnológico.
  • 4. Misión de GWT To radically improve the web experience for users by enabling developers to use existing Java tools to build no-compromise Ajax for any modern browser Mejorar radicalmente la experiencia web de los usuarios al permitir a los desarrolladores utilizar las herramientas de Java para hacer Ajax (no comprometido), para cualquier navegador moderno.
  • 5. ¿Qué NO es GWT?  No es una librería más con utiliades Javascript (jquery, prototype ...)  No es una librería de widgets (ext, scriptaculous, yui ...)  No es un framework (mootools, dojo ...)  No es 'exclusivamente' un kit para crear aplicaciones RIA.
  • 6. ¿Qué es GWT?  Generador de javascript: convierte código java a javascript. − Es un compilador − Es un linker − Es un optimizador completo (no sólo compresión y ofuscación) − Es un SDK  El código generado puede incluirse en cualquier html (estático o dinámico), y puede interaccionar con éste (modificar el DOM, ejecutando AJAX, validando forms ...).  Proprorciona además un conjunto de herramientas para testear, depurar, etc ..  Proporciona un conjunto de módulos cliente: DOM, XML, I18N, JSON, RPC, y Widgets básicos.  Y... mucho mas (css sprite, image bundling ...)  Es código java para la máquina virtual 'browser' en lugar de 'jre'
  • 7. Ventajas de usar un compilador frente a escribir javascript a mano
  • 8. ASM sustituido por C, C++, GJC ... Javascript sustituido por Java, ? ...  Alto nivel: Java  Alto Nivel: C/C++ − <inherits − #include − <replace-with − #define − Inline JS native code − Inline ASM native code − Compiler − Compiler − Optimizer − Optimizer − Linker − Linker − Javascript para cada − Ensamblador para cada navegador procesador − Advanced IDE and tools − Advanced IDE and tools for testing, debuging for testing, debuging
  • 9. ¿Porqué un compilador?  Separar la mantenibilidad del código de la efectividad del ejecutable.  El javascript escrito a mano tiene un conflicto de intereses: − Identificadores largos y legibles = aplicaciones grandes y lentas. − Buen Formato = aplicaciones grandes y lentas. − Comentarios = aplicaciones grandes y lentas  La solución no es buscar convenciones en el código javascript escrito a mano, es crear un nivel de separación para que no se comprometan ambas (mantenibilidad, efectividad).  Muchos de los errores mas comunes (sintaxis, errores de tipadom etc) son fácilmente corregibles en tiempo de compilación en lugar de en tiempo de ejecución.
  • 10. ¿Porqué Java?  La sintaxis javascript es más próxima a java que en otros lenguages, por lo que es mas facil la transformación de java que de otros lenguages (perl, ruby, php ...).  Muchas herramientas Java para desarrollo.  El chequeo de tipos de java incrementa la productividad porque reduce errores.  Asistencia en la escritura de código.  Refactoring de verdad.  Diseño, patrones, OO, hacen mas fácil de comprender el código y las llamadas AJAX, con mucho menos documentación.  Y... TDD
  • 11. GWT nos facilita  Versionado de ficheros (para cada compilación)  Sólo lo necesario para cada navegador y lenguaje. Descarga sólo lo que se usa.  Eliminar código no usado (sólo las clases, y métodos utilizados).  Código ofuscado, comprimido y optimizado.  Los ficheros pueden ser cacheados para siempre.  Ejecución más rápida pero con código legible.  Herramientas para Test y Debug.  Librerías de lado servidor (RPC java)  Mismos objetos Servidor <=> Cliente  Deja a GWT hacer las cosas que tenemos que hacer a mano, o que dejamos de hacer por desconocimiento, complejidad, etc. − Selección e inclusión de librerías en la página. − Herramienas de optimización − Herramientas de ofuscación − Versionado de ficheros para publicar. − Mantenimiento de versiones legibles/ilegibles del código. − Configuración http para enviar información de caché
  • 12. ¿Rendimiento?  JavaScript − GWT genera código mucho más pequeño que el que podamos escribir a mano. A diferencia de las aplicaciones tradicionales en javascript, Gwt analiza tu código e incluye exclusivamente lo necesario para cada navegador. − Pudiera no ser más rápido, pero sí mas eficaz  Usuario − Las aplicaciones GWT son normalmente más rápidas que las escritas a mano, y normalmente requieren menos trucos HTTP. Gwt elimina el uso envoltorios para funcionalidades incluidas nativamente en esa versión de navegador.  Desarrollo − Con el ahorro del tiempo invertido en depurar los problemas en cada navegador, puedes emplear mucho mas tiempo en la funcionalidad de tu aplicación. La eficiencia en el desarrollo es la parte favorita en Gwt.
  • 14. Componentes GWT  Libreria emulada JRE: − java.util − java.lang  GWT librería Core – JSON, XML, RPC – DOM, UI, I18N  Compiler, Optimizer, Linker  Herramientas para desarrollo: − Scripts de utiliad: − webAppCreator, i18nCreator − Testing library (GWTestCase, HtmlUnit) − Customized App Server: Jetty/Tomcat − Eclipse Plugin − Browser plugin − Speed Tracer (extensión para chrome)
  • 15. ¿Y qué más?  Historia de navegación (Botón atras, adelante)  ClientBundle: permite agrupar y manipular recursos en tiempo de compilación (Imágenes, Optimización de Css, Sprite, lenguages …)  UIBinder: lenguage declarativo y extensivo para construir interfaces de usuario. Injecta constructores en el código Java, y genera HTML en tiempo de compilación.  Code split: fragmenta el código javascript en partes para que sean cargadas asíncronamente.  LayoutPanels: comportamiento predecible de la disposición de elementos.  Compresión: Utiliza las mas avanzadas técnicas de compresión conocidas.  Gestor de Eventos y Schedule propios, sin memory leaks.  JSNI (JavaScript Native Interface)  SOYC (Story of your compile)
  • 17. Actividad GWT  Comunidad muy activa: – GWT-users cien mensajes diarios – GWT-contributors (lista moderada) 10 mensajes diarios  Desarrollo – Grupo de committers limitado – Decenas de contributors – Exhaustiva revisión de código – Tests muy exigentes – Elevada calidad de código (javadocs, codstyle …) – Excelentes desarrolladores.  Documentación – Muy bien explicado – Muy Actualizada  Cientos de librerías  Google.
  • 19. GWT no hace posible nada que no fuera posible hacer de otra manera, pero sí hace que la acción sea mucho mas productiva. GWT no intenta ensalzar las virtudes de Java, sino reconocer el pragmatismo de las herramientas existentes, IDEs, entornos de prueba, tipos, etc. GWT no quiere hacernos olvidar DOM, CSS, navegador, etc, sino permitir escribir abstracciones de todo ello y hacernos mas productivos que escribiendo código JS a mano. Posiblemente, algún día GWT será capaz de compilar otros lenguages, o incluso procesar JS con anotaciones de tipos. GWT hace productivo y posible el desarrollo de sitios webs de gran escala y abre la posibilidad de crear aplicaciones de nueva generación de manera fiable. Ray Cromwell
  • 20. Preguntas Manuel Carrasco Moñino http://manolocarrasco.blogspot.com twitter.com/dodotis manolo@apache.org