SlideShare una empresa de Scribd logo
1 de 60
Descargar para leer sin conexión
Agilidad en el desarrollo empresarial
(o de como hacer webapps sin tanto
                dolor)
Disculpa a ITESCA

• Vi mal la hora del vuelo.
• Lo perdí
• Casi no llego, vengo corriendo del
  aeropuerto.
• Pero ya estoy aquí :)

                  © 2008 Domingo Suarez; disponible bajo CC-SA 2.5
Agenda
• Groovy
• Grails
 • Arquitectura
 • Componentes
 • Como usar la plataforma
 • !!Código¡¡
• Recursos.
               © 2008 Domingo Suarez; disponible bajo CC-SA 2.5
Objetivo


• Conocer y aprender como simplificar el
  desarrollo web con Grails




                © 2008 Domingo Suarez; disponible bajo CC-SA 2.5
Sobre el ponente
• Domingo Suárez Torres
• Ciencias de la Informática @ IPN-UPIICSA
• Gerente de Desarrollo @ Bursatec
 • Asigna, Mercado de Derivados
• CTO @ SynergyJ y de SeptimoBit Software
• Apasionado por el desarrollo de software
• Fundador de JavaUp.org, SpringHispano.org,
  Grails.org.mx
                  © 2008 Domingo Suarez; disponible bajo CC-SA 2.5
Trasfondo
• Desarrollador Java desde 1999
• 7 años desarrollando aplicaciones JEE
• Experiencia en sectores:Ventas,
  Construcción, Salud, Gobierno,
  Financiero.
• Javero de hueso colorado.
• Commiter en Codehaus
• Desarrollador de plugins de Grails
                 © 2008 Domingo Suarez; disponible bajo CC-SA 2.5
Java
  Plataforma políglota
• Java
• Groovy
• Scala
• Erlang
• JRuby
• Jython
• JavaFX   © 2008 Domingo Suarez; disponible bajo CC-SA 2.5
¿Que es Groovy?
• Groovy es un lenguaje ágil y dinámico para la
  Máquina Virtual de Java
• Basado en los conceptos base del lenguage Java,
  incluye características inspiradas en otros lenguages
  como Python, Ruby y Smalltalk.
• Habilita características de programación modernas
  con una curva de aprendizaje prácticamente plana
  para desarrolladores Java
• Soporta Lenguajes de Dominio Específico y otras
  características de sintaxis corta
                      © 2008 Domingo Suarez; disponible bajo CC-SA 2.5
¿Que es Groovy?
• Simplifica el ciclo de pruebas dado que
  soporta pruebas unitarias y mocking desde
  el inicio.
• Se integra sin problemas con cualquier
  objeto y/o librería Java existentes
• Compila directamente a código byte (igual
  que Java) puede ser usado virtualmente en
  cualquier lugar donde Java puede serlo
  también
                  © 2008 Domingo Suarez; disponible bajo CC-SA 2.5
HolaMundo en Java
public class HelloWorld {
   String name;

    public void setName(String name) { this.name = name; }

    public String getName(){ return name; }

    public String greet(){ return “Hello “ + name; }

    public static void main(String args[]){
       HelloWorld helloWorld = new HelloWorld()‫‏‬
       helloWorld.setName(“Groovy”)‫‏‬
       System.out.println( helloWorld.greet() )‫‏‬
    }
}


                            © 2008 Domingo Suarez; disponible bajo CC-SA 2.5
HolaMundo en Groovy
public class HelloWorld {
   String name;

    public void setName(String name) { this.name = name; }

    public String getName(){ return name; }

    public String greet(){ return “Hello “ + name; }

    public static void main(String args[]){
       HelloWorld helloWorld = new HelloWorld()‫‏‬
       helloWorld.setName(“Groovy”)‫‏‬
       System.out.println( helloWorld.greet() )‫‏‬
    }
}


                            © 2008 Domingo Suarez; disponible bajo CC-SA 2.5
Manera Groovy ;)

class HelloWorld {
   String name
   def greet() { quot;Hello $namequot; }
}

def helloWorld = new HelloWorld(name:quot;Groovyquot;)
println helloWorld.greet()




                       © 2008 Domingo Suarez; disponible bajo CC-SA 2.5
Groovy casi Java
• Java es Groovy, Groovy es Java
• Groovy ofrece una curva de aprendizaje
  sencilla para desarrolladores Java. Puedes
  empezar con sintaxis Java y moverte poco a
  poco a la sintaxis Groovy
• 98% de código Java es código Groovy,
  virtualmente podrías renombrar un archivo
  *.java a .groovy y compilaría

                 © 2008 Domingo Suarez; disponible bajo CC-SA 2.5
Groovy y Java 5
• Groovy soporta anotaciones (JSR 175) iguales a
  las de Java, es más, es el segundo lenguaje en la
  JVM que las soporta. ¿JavaFX?
• hasta el momento no es posible definir
  anotaciones con Groovy
• Groovy soporta Enums también
• Por último también tiene habilitado el soporte de
  tipos genéricos, iguales a los de Java.
                     © 2008 Domingo Suarez; disponible bajo CC-SA 2.5
Closures
• Closures pueden ser interpretados como bloques
  de código reusable, probablemente las hayas visto en
  otros lenguajes como JavaScript o Ruby
• Closures substituyen a las clases internas en la
  mayoría de los casos
• Groovy permite “forzar el tipo” de una Closure a
  una interface de un solo método (proxy)
• Una closure tendrá un parámetro por omisión
  llamado “it” si es que no se definen parámetros para
  la misma
                      © 2008 Domingo Suarez; disponible bajo CC-SA 2.5
Ejemplos de closures
def greet = { name -> println “Hello $name” }
greet( “Groovy” )‫‏‬
// prints Hello Groovy

def greet = { println “Hello $it” }
greet( “Groovy” )‫‏‬
// prints Hello Groovy

def iCanHaveTypedParametersToo = { int x, int y ->
   println “coordinates are ($x,$y)”
}

def myActionListener = { event ->
   // do something cool with event
} as ActionListener



                       © 2008 Domingo Suarez; disponible bajo CC-SA 2.5
Azúcar sintáctica: Toma 1
¿No es adorable el Api de Collections?




                       © 2008 Domingo Suarez; disponible bajo CC-SA 2.5
Azúcar sintáctica: Toma 2




         © 2008 Domingo Suarez; disponible bajo CC-SA 2.5
Azúcar sintáctica: Toma 3




         © 2008 Domingo Suarez; disponible bajo CC-SA 2.5
Detalles
• Groovy es leeentooo.... No tanto como les
  gustaría a los alarmistas.
• Es cuestión de tiempo
• Si necesitas velocidad, puedes recurrir a Java.
• A veces no importa tanto

                      © 2008 Domingo Suarez; disponible bajo CC-SA 2.5
¿Que es Grails?
• Mas que un framework, es una plataforma
  para desarrollo de aplicaciones web




                 © 2008 Domingo Suarez; disponible bajo CC-SA 2.5
Plataforma Grails
• Integra componentes que van desde el
  sistema de construcción hasta la capa de
  acceso a base de datos.
• El desarrollador programa en Groovy.
• Basado en herramientas existentes y
  poderosas como:
    • Spring, Hibernate, Quartz, Sitemesh,
      etc.
                 © 2008 Domingo Suarez; disponible bajo CC-SA 2.5
Plataforma Grails
• Java 2 Enterprise Edition (J2EE, ahora JEE), es
  considerado muy complicado, más de lo
  necesario.
• Spring y Hibernate han sido proyectos nacidos
  como Opensource que han mejorado la manera
  de desarrollar en Java.
• Grails representa el siguiente nivel de
  abstracción para JEE.
• Grails simplifica dramáticamente el uso de Spring
  y Hibernate.       © 2008 Domingo Suarez; disponible bajo CC-SA 2.5
Spring como base
• Sus principales características
• Sistema de extensiones basada en plugins
• Entorno de configuración para ejecución
• Todo lo anterior, construido sobre Spring.


                 © 2008 Domingo Suarez; disponible bajo CC-SA 2.5
Bases solidas

• Spring
• Hibernate
• Groovy
• Quartz
• Sitemesh
• Jetty
• Apache Ant
• Plataforma Java
                    © 2008 Domingo Suarez; disponible bajo CC-SA 2.5
Arquitectura de Grails
¿Por que Groovy & Grails?

• Todo el poder de frameworks de otras
  plataformas como RubyOnRails, Django
• Basado en Tecnología Java, en desarrollo
  empresarial no hay alternativa.
• Reuso de herramientas y tecnologías existentes
 • Caches Distribuidos
 • Herramientas para depuración,IDEs
                    © 2008 Domingo Suarez; disponible bajo CC-SA 2.5
¿Por que Groovy & Grails?




• ¿Porque no?
                © 2008 Domingo Suarez; disponible bajo CC-SA 2.5
¿Como iniciar?
• Instalar un JDK para tu sistema operativo
• Visitar http://grails.org y descargar la ultima
  versión estable. Se distribuye en Zip y TarGZ
• Descomprimir el archivo
• Establecer la variable de ambiente
  GRAILS_HOME y agregar a PATH el directorio
  bin de $GRAILS_HOME
• Mayor detalle en: http://grails.org/Installation
                      © 2008 Domingo Suarez; disponible bajo CC-SA 2.5
¿Como desarrollo una aplicación?




  • Crear una aplicación y ejecutarla.
  • Analizar la estructura de directorios


                    © 2008 Domingo Suarez; disponible bajo CC-SA 2.5
!!No te creo¡¡


         © 2008 Domingo Suarez; disponible bajo CC-SA 2.5
IDEs y otras herramientas
 • Funciona muy bien con Eclipse
 • Mejor con IntelliJ IDEA
 • Plugin para NetBeans
 • Para minimalistas con Textmate
 • Ant
 • Maven
                  © 2008 Domingo Suarez; disponible bajo CC-SA 2.5
Orden en Grails

• El principio de “Convención sobre
  configuración”
• No significa que no exista la configuración
• No confundir por “Convención en lugar de
  configuración”


                  © 2008 Domingo Suarez; disponible bajo CC-SA 2.5
Estructura de proyecto




        © 2008 Domingo Suarez; disponible bajo CC-SA 2.5
Estructura Grails




      © 2008 Domingo Suarez; disponible bajo CC-SA 2.5
Seguimos con lo básico


El Modelo
de dominio




             © 2008 Domingo Suarez; disponible bajo CC-SA 2.5
El modelo

• Representa una parte muy importante del
  problema que intentamos resolver.
• En Grails, el modelo generalmente es
  “persistente”, es decir se almacena su
  estado.



                 © 2008 Domingo Suarez; disponible bajo CC-SA 2.5
El modelo

• Para la persistencia se usa Hibernate.
• Hibernate es un Mapeador Objeto-
  Relacional (ORM)
• http://www.hibernate.org

                  © 2008 Domingo Suarez; disponible bajo CC-SA 2.5
¿Como creo un modelo?


 > grails create-domain-class Clase




                  © 2008 Domingo Suarez; disponible bajo CC-SA 2.5
• Crear una clase de dominio llamada
  Conferencista y otra Conferencia
• Hacer el CRUD de esas clases con
  scaffolding dinámico.



                 © 2008 Domingo Suarez; disponible bajo CC-SA 2.5
Scaffolding: No es bala de plata
• Dos tipo de andamiaje
   • Dinámico (El de la demo)
   • Estático (Necesario generar
      artefactos, es posible
      modificarlos al gusto)
• Es una ayuda, no es la principal
  fortaleza de Grails.

                         © 2008 Domingo Suarez; disponible bajo CC-SA 2.5
Consultas
• ¿Se acuerdan de los DAOs?




                © 2008 Domingo Suarez; disponible bajo CC-SA 2.5
Métodos dinámicos




      © 2008 Domingo Suarez; disponible bajo CC-SA 2.5
Más dinámicos...




     © 2008 Domingo Suarez; disponible bajo CC-SA 2.5
GORM




© 2008 Domingo Suarez; disponible bajo CC-SA 2.5
Ecosistema Grails
• La comunidad esta creciendo mucho.
• Gracias a la arquitectura de plugins de
  Grails, se puede extender la funcionalidad.
• Existen mas de 50 plugins oficiales.
 • Seguridad
 • Interfases de usuario
 • WebServices    © 2008 Domingo Suarez; disponible bajo CC-SA 2.5
Plugins

• Vista
   • Flex, con Blaze DataServices
   • YahooUI, ExtJS, GWT,
   • Spring WebFlow
• WebServices (XFire, Axis, Metro)
                 © 2008 Domingo Suarez; disponible bajo CC-SA 2.5
Despliegue
• Grails genera archivos WAR.
• Se puedes desplegar en diversos servidores
  como:
   • Weblogic
   • Websphere
   • Tomcat
   • Jetty
   • SpringSource Application Platform
                 © 2008 Domingo Suarez; disponible bajo CC-SA 2.5
¿Quien lo usa?
• LinkedIn
• SAP
• Tropicana
• Sky
• Más en: http://www.grails.org/Success+Stories

                 © 2008 Domingo Suarez; disponible bajo CC-SA 2.5
Consejos
• No lo adoptes si no tienes experiencia en
  Hibernate y Spring
• A menos que   no tengas deadlines...




                 © 2008 Domingo Suarez; disponible bajo CC-SA 2.5
SpringHispano.org
Grails.org.mx
Muestrame el código




       © 2008 Domingo Suarez; disponible bajo CC-SA 2.5
Proyectos

• Coetus
   • http://code.google.com/p/coetus/
• Geedback
   • http://code.google.com/p/geedback/

                © 2008 Domingo Suarez; disponible bajo CC-SA 2.5
En la mira
• JBoss Seam
    • Basado en estándares JEE
       • JSF y JPA
    • Marcando la pauta de nuevas
      especificaciones como WebBeans
• Para los amantes de anotaciones :)
                 © 2008 Domingo Suarez; disponible bajo CC-SA 2.5
Agradecimientos
• A mi familia, que me dejo venir...
• ITESCA




                  © 2008 Domingo Suarez; disponible bajo CC-SA 2.5
Agradecimientos


• Andres Almiray, por las láminas de
  introducción a Groovy




                 © 2008 Domingo Suarez; disponible bajo CC-SA 2.5
Resumen
• Grails no es solo un framework, es una
  plataforma de desarrollo web.
• Grails es la próxima generación de
  abstracción de JEE basada en Spring y
  Hibernate.
• Groovy y Grails se integran sin problemas
  al código Java existente y a toda la
  plataforma Java.
• Grails == Simplificación         de la plataforma
  JEE en web.     © 2008 Domingo Suarez; disponible bajo CC-SA 2.5
Preguntas




  © 2008 Domingo Suarez; disponible bajo CC-SA 2.5
Recursos
•   http://groovy.codehaus.org

•   http://grails.org

•   http://www.springhispano.org

•   http://groovy.org.es

•   http://grails.org.mx

•   http://www.javahispano.org

•   Podcast en SpringHispano.org y Grails.org.mx

•   http://www.domingosuarez.com

•   http://www.domix.org
                        © 2008 Domingo Suarez; disponible bajo CC-SA 2.5

Más contenido relacionado

La actualidad más candente

Groovy&Grails: desarrollo rápido de aplicaciones
Groovy&Grails: desarrollo rápido de aplicacionesGroovy&Grails: desarrollo rápido de aplicaciones
Groovy&Grails: desarrollo rápido de aplicacionesFran García
 
Codemotion 2015 crash y youdebug
Codemotion 2015   crash y youdebugCodemotion 2015   crash y youdebug
Codemotion 2015 crash y youdebugjmiguel rodriguez
 
Grails: Aumenta tu productividad en tus aplicaciones web Java
Grails: Aumenta tu productividad en tus aplicaciones web JavaGrails: Aumenta tu productividad en tus aplicaciones web Java
Grails: Aumenta tu productividad en tus aplicaciones web JavaDani Latorre
 
Django on Jython Summer of Code Results
Django on Jython Summer of Code ResultsDjango on Jython Summer of Code Results
Django on Jython Summer of Code ResultsLeonardo Soto
 
Dev Tools para Kubernetes - Codemotion 2019
Dev Tools para Kubernetes - Codemotion 2019Dev Tools para Kubernetes - Codemotion 2019
Dev Tools para Kubernetes - Codemotion 2019Micael Gallego
 
El proceso de desarrollo con herramientas Open Source
El proceso de desarrollo con herramientas Open SourceEl proceso de desarrollo con herramientas Open Source
El proceso de desarrollo con herramientas Open SourceJose Juan R. Zuñiga
 
Codemotion Madrid 2016 - De Java a Groovy: ¡Hora de Aventuras!
Codemotion Madrid 2016 - De Java a Groovy: ¡Hora de Aventuras!Codemotion Madrid 2016 - De Java a Groovy: ¡Hora de Aventuras!
Codemotion Madrid 2016 - De Java a Groovy: ¡Hora de Aventuras!Iván López Martín
 
Ecuador jug 2017 -incrementando la productividad de proyectos java ee con c...
Ecuador jug   2017 -incrementando la productividad de proyectos java ee con c...Ecuador jug   2017 -incrementando la productividad de proyectos java ee con c...
Ecuador jug 2017 -incrementando la productividad de proyectos java ee con c...César Hernández
 
Madrid-GUG (Alicante) 2017 - De Java a Groovy: ¡Hora de Aventuras!
Madrid-GUG (Alicante) 2017 - De Java a Groovy: ¡Hora de Aventuras!Madrid-GUG (Alicante) 2017 - De Java a Groovy: ¡Hora de Aventuras!
Madrid-GUG (Alicante) 2017 - De Java a Groovy: ¡Hora de Aventuras!Iván López Martín
 
WebRTC y Kurento en el T3cgFest 2015
WebRTC y Kurento en el T3cgFest 2015WebRTC y Kurento en el T3cgFest 2015
WebRTC y Kurento en el T3cgFest 2015Micael Gallego
 
Node JS (Francisco Cerdas)
Node JS (Francisco Cerdas)Node JS (Francisco Cerdas)
Node JS (Francisco Cerdas)PiXeL16
 

La actualidad más candente (20)

Groovy&Grails: desarrollo rápido de aplicaciones
Groovy&Grails: desarrollo rápido de aplicacionesGroovy&Grails: desarrollo rápido de aplicaciones
Groovy&Grails: desarrollo rápido de aplicaciones
 
Grails barcamp 2013
Grails barcamp 2013Grails barcamp 2013
Grails barcamp 2013
 
Codemotion 2015 crash y youdebug
Codemotion 2015   crash y youdebugCodemotion 2015   crash y youdebug
Codemotion 2015 crash y youdebug
 
Java poliglota
Java poliglotaJava poliglota
Java poliglota
 
Seminario Grails
Seminario GrailsSeminario Grails
Seminario Grails
 
Taller Grails
Taller GrailsTaller Grails
Taller Grails
 
Grails en SG08
Grails en SG08Grails en SG08
Grails en SG08
 
Grails
GrailsGrails
Grails
 
Grails: Aumenta tu productividad en tus aplicaciones web Java
Grails: Aumenta tu productividad en tus aplicaciones web JavaGrails: Aumenta tu productividad en tus aplicaciones web Java
Grails: Aumenta tu productividad en tus aplicaciones web Java
 
Grails en el Fonasol
Grails en el FonasolGrails en el Fonasol
Grails en el Fonasol
 
Django on Jython Summer of Code Results
Django on Jython Summer of Code ResultsDjango on Jython Summer of Code Results
Django on Jython Summer of Code Results
 
Dev Tools para Kubernetes - Codemotion 2019
Dev Tools para Kubernetes - Codemotion 2019Dev Tools para Kubernetes - Codemotion 2019
Dev Tools para Kubernetes - Codemotion 2019
 
El proceso de desarrollo con herramientas Open Source
El proceso de desarrollo con herramientas Open SourceEl proceso de desarrollo con herramientas Open Source
El proceso de desarrollo con herramientas Open Source
 
Codemotion Madrid 2016 - De Java a Groovy: ¡Hora de Aventuras!
Codemotion Madrid 2016 - De Java a Groovy: ¡Hora de Aventuras!Codemotion Madrid 2016 - De Java a Groovy: ¡Hora de Aventuras!
Codemotion Madrid 2016 - De Java a Groovy: ¡Hora de Aventuras!
 
Ecuador jug 2017 -incrementando la productividad de proyectos java ee con c...
Ecuador jug   2017 -incrementando la productividad de proyectos java ee con c...Ecuador jug   2017 -incrementando la productividad de proyectos java ee con c...
Ecuador jug 2017 -incrementando la productividad de proyectos java ee con c...
 
Madrid-GUG (Alicante) 2017 - De Java a Groovy: ¡Hora de Aventuras!
Madrid-GUG (Alicante) 2017 - De Java a Groovy: ¡Hora de Aventuras!Madrid-GUG (Alicante) 2017 - De Java a Groovy: ¡Hora de Aventuras!
Madrid-GUG (Alicante) 2017 - De Java a Groovy: ¡Hora de Aventuras!
 
WebRTC y Kurento en el T3cgFest 2015
WebRTC y Kurento en el T3cgFest 2015WebRTC y Kurento en el T3cgFest 2015
WebRTC y Kurento en el T3cgFest 2015
 
Cómo contribuir en Proyectos de Código Abierto
Cómo contribuir en Proyectos de Código AbiertoCómo contribuir en Proyectos de Código Abierto
Cómo contribuir en Proyectos de Código Abierto
 
Introduccion a Groovy
Introduccion a GroovyIntroduccion a Groovy
Introduccion a Groovy
 
Node JS (Francisco Cerdas)
Node JS (Francisco Cerdas)Node JS (Francisco Cerdas)
Node JS (Francisco Cerdas)
 

Destacado

Grails敏捷项目开发
Grails敏捷项目开发Grails敏捷项目开发
Grails敏捷项目开发Michael Yan
 
How To Make A Great Pbj
How To Make A Great PbjHow To Make A Great Pbj
How To Make A Great Pbjguest4a0e65
 
NFC and Commerce combined
NFC and Commerce combinedNFC and Commerce combined
NFC and Commerce combinedSven Haiges
 
Introduction to Grails Framework
Introduction to Grails FrameworkIntroduction to Grails Framework
Introduction to Grails FrameworkPT.JUG
 

Destacado (6)

Grails敏捷项目开发
Grails敏捷项目开发Grails敏捷项目开发
Grails敏捷项目开发
 
Antral small concept note
Antral small concept noteAntral small concept note
Antral small concept note
 
How To Make A Great Pbj
How To Make A Great PbjHow To Make A Great Pbj
How To Make A Great Pbj
 
Groovy & Grails
Groovy & GrailsGroovy & Grails
Groovy & Grails
 
NFC and Commerce combined
NFC and Commerce combinedNFC and Commerce combined
NFC and Commerce combined
 
Introduction to Grails Framework
Introduction to Grails FrameworkIntroduction to Grails Framework
Introduction to Grails Framework
 

Similar a Intro a Grails @ ITESCA

Vaadin y Grails Barcamp 2013
Vaadin y Grails Barcamp 2013Vaadin y Grails Barcamp 2013
Vaadin y Grails Barcamp 2013Carlos Camacho
 
GraalVM - MálagaJUG 2018-11-29
GraalVM - MálagaJUG 2018-11-29GraalVM - MálagaJUG 2018-11-29
GraalVM - MálagaJUG 2018-11-29Jorge Hidalgo
 
Desarrollando aplicaciones web con Zope 3
Desarrollando aplicaciones web con Zope 3Desarrollando aplicaciones web con Zope 3
Desarrollando aplicaciones web con Zope 3Roberto Allende
 
Java 9, 10, 11 ,12, 13 and more
Java 9, 10, 11 ,12, 13 and moreJava 9, 10, 11 ,12, 13 and more
Java 9, 10, 11 ,12, 13 and moreHillmerC
 
Construccion de proyectos con gradle
Construccion de proyectos con gradleConstruccion de proyectos con gradle
Construccion de proyectos con gradleDavid Gómez García
 
Groovy y Grails, y la pastilla roja
Groovy y Grails, y la pastilla rojaGroovy y Grails, y la pastilla roja
Groovy y Grails, y la pastilla rojaEscuela de Groovy
 
Programacion Web UGR - Tema 7.pdf
Programacion Web UGR - Tema 7.pdfProgramacion Web UGR - Tema 7.pdf
Programacion Web UGR - Tema 7.pdfAnonymousNdBOr4
 
SCJP, Clase 1: Introducción al curso, Intro a Java, Declaración y Control de ...
SCJP, Clase 1: Introducción al curso, Intro a Java, Declaración y Control de ...SCJP, Clase 1: Introducción al curso, Intro a Java, Declaración y Control de ...
SCJP, Clase 1: Introducción al curso, Intro a Java, Declaración y Control de ...flekoso
 
Webinar: Groovy y la producttividad para el desarrollador Java
Webinar: Groovy y la producttividad para el desarrollador JavaWebinar: Groovy y la producttividad para el desarrollador Java
Webinar: Groovy y la producttividad para el desarrollador JavaDomingo Suarez Torres
 
NetBeans - El único IDE que necesitas
NetBeans - El único IDE que necesitasNetBeans - El único IDE que necesitas
NetBeans - El único IDE que necesitasFelipe Cerda
 
7 Recomendaciones para migrar tus aplicaciones a Jakarta EE utilizando Apache...
7 Recomendaciones para migrar tus aplicaciones a Jakarta EE utilizando Apache...7 Recomendaciones para migrar tus aplicaciones a Jakarta EE utilizando Apache...
7 Recomendaciones para migrar tus aplicaciones a Jakarta EE utilizando Apache...César Hernández
 
Jobsket Spring 2GX Madrid
Jobsket Spring 2GX MadridJobsket Spring 2GX Madrid
Jobsket Spring 2GX MadridJobsket
 

Similar a Intro a Grails @ ITESCA (20)

grails.org.mx Primera Reunion
grails.org.mx Primera Reuniongrails.org.mx Primera Reunion
grails.org.mx Primera Reunion
 
Taller Groovy
Taller GroovyTaller Groovy
Taller Groovy
 
Eleva tu capacidad con Groovy
Eleva tu capacidad con GroovyEleva tu capacidad con Groovy
Eleva tu capacidad con Groovy
 
Introducción a Java FX
Introducción a Java FXIntroducción a Java FX
Introducción a Java FX
 
Vaadin y Grails Barcamp 2013
Vaadin y Grails Barcamp 2013Vaadin y Grails Barcamp 2013
Vaadin y Grails Barcamp 2013
 
GraalVM - MálagaJUG 2018-11-29
GraalVM - MálagaJUG 2018-11-29GraalVM - MálagaJUG 2018-11-29
GraalVM - MálagaJUG 2018-11-29
 
Desarrollando aplicaciones web con Zope 3
Desarrollando aplicaciones web con Zope 3Desarrollando aplicaciones web con Zope 3
Desarrollando aplicaciones web con Zope 3
 
JAVA3.0
JAVA3.0JAVA3.0
JAVA3.0
 
Java 9, 10, 11 ,12, 13 and more
Java 9, 10, 11 ,12, 13 and moreJava 9, 10, 11 ,12, 13 and more
Java 9, 10, 11 ,12, 13 and more
 
Construccion de proyectos con gradle
Construccion de proyectos con gradleConstruccion de proyectos con gradle
Construccion de proyectos con gradle
 
Groovy y Grails, y la pastilla roja
Groovy y Grails, y la pastilla rojaGroovy y Grails, y la pastilla roja
Groovy y Grails, y la pastilla roja
 
Programacion Web UGR - Tema 7.pdf
Programacion Web UGR - Tema 7.pdfProgramacion Web UGR - Tema 7.pdf
Programacion Web UGR - Tema 7.pdf
 
SCJP, Clase 1: Introducción al curso, Intro a Java, Declaración y Control de ...
SCJP, Clase 1: Introducción al curso, Intro a Java, Declaración y Control de ...SCJP, Clase 1: Introducción al curso, Intro a Java, Declaración y Control de ...
SCJP, Clase 1: Introducción al curso, Intro a Java, Declaración y Control de ...
 
Webinar: Groovy y la producttividad para el desarrollador Java
Webinar: Groovy y la producttividad para el desarrollador JavaWebinar: Groovy y la producttividad para el desarrollador Java
Webinar: Groovy y la producttividad para el desarrollador Java
 
Kde4 Se Libre
Kde4 Se LibreKde4 Se Libre
Kde4 Se Libre
 
NetBeans - El único IDE que necesitas
NetBeans - El único IDE que necesitasNetBeans - El único IDE que necesitas
NetBeans - El único IDE que necesitas
 
Netbeans ide 7.2(2)
Netbeans ide 7.2(2)Netbeans ide 7.2(2)
Netbeans ide 7.2(2)
 
Netbeans ide 7.2(2)
Netbeans ide 7.2(2)Netbeans ide 7.2(2)
Netbeans ide 7.2(2)
 
7 Recomendaciones para migrar tus aplicaciones a Jakarta EE utilizando Apache...
7 Recomendaciones para migrar tus aplicaciones a Jakarta EE utilizando Apache...7 Recomendaciones para migrar tus aplicaciones a Jakarta EE utilizando Apache...
7 Recomendaciones para migrar tus aplicaciones a Jakarta EE utilizando Apache...
 
Jobsket Spring 2GX Madrid
Jobsket Spring 2GX MadridJobsket Spring 2GX Madrid
Jobsket Spring 2GX Madrid
 

Más de Domingo Suarez Torres

Cloud Native MX Meetup - Asegurando tu Cluster de Kubernetes
Cloud Native MX Meetup - Asegurando tu Cluster de KubernetesCloud Native MX Meetup - Asegurando tu Cluster de Kubernetes
Cloud Native MX Meetup - Asegurando tu Cluster de KubernetesDomingo Suarez Torres
 
Java Dev Day 2019 No kuberneteen por convivir
Java Dev Day 2019  No kuberneteen por convivirJava Dev Day 2019  No kuberneteen por convivir
Java Dev Day 2019 No kuberneteen por convivirDomingo Suarez Torres
 
Retos en la arquitectura de Microservicios
Retos en la arquitectura de MicroserviciosRetos en la arquitectura de Microservicios
Retos en la arquitectura de MicroserviciosDomingo Suarez Torres
 
DevFest Lima Corriendo cargas e trabajo seguras en GKE con Istio
DevFest Lima Corriendo cargas e trabajo seguras en GKE con IstioDevFest Lima Corriendo cargas e trabajo seguras en GKE con Istio
DevFest Lima Corriendo cargas e trabajo seguras en GKE con IstioDomingo Suarez Torres
 
Cloud Native Mexico - Introducción a Kubernetes
Cloud Native Mexico - Introducción a KubernetesCloud Native Mexico - Introducción a Kubernetes
Cloud Native Mexico - Introducción a KubernetesDomingo Suarez Torres
 
Meetup DigitalOcean Cloud Native architecture
Meetup DigitalOcean Cloud Native architectureMeetup DigitalOcean Cloud Native architecture
Meetup DigitalOcean Cloud Native architectureDomingo Suarez Torres
 
Cloud Native Mexico Meetup de Marzo 2018 Service Mesh con Istio y Envoy
Cloud Native Mexico Meetup de Marzo 2018 Service Mesh con Istio y EnvoyCloud Native Mexico Meetup de Marzo 2018 Service Mesh con Istio y Envoy
Cloud Native Mexico Meetup de Marzo 2018 Service Mesh con Istio y EnvoyDomingo Suarez Torres
 
Cloud Native Mexico Meetup enero 2018 Observability
Cloud Native Mexico Meetup enero 2018 ObservabilityCloud Native Mexico Meetup enero 2018 Observability
Cloud Native Mexico Meetup enero 2018 ObservabilityDomingo Suarez Torres
 
Orquestación de contenedores con Kubernetes SGNext
Orquestación de contenedores con Kubernetes SGNextOrquestación de contenedores con Kubernetes SGNext
Orquestación de contenedores con Kubernetes SGNextDomingo Suarez Torres
 
Webinar Arquitectura de Microservicios
Webinar Arquitectura de MicroserviciosWebinar Arquitectura de Microservicios
Webinar Arquitectura de MicroserviciosDomingo Suarez Torres
 

Más de Domingo Suarez Torres (20)

Cloud Native MX Meetup - Asegurando tu Cluster de Kubernetes
Cloud Native MX Meetup - Asegurando tu Cluster de KubernetesCloud Native MX Meetup - Asegurando tu Cluster de Kubernetes
Cloud Native MX Meetup - Asegurando tu Cluster de Kubernetes
 
Java Dev Day 2019 No kuberneteen por convivir
Java Dev Day 2019  No kuberneteen por convivirJava Dev Day 2019  No kuberneteen por convivir
Java Dev Day 2019 No kuberneteen por convivir
 
Contenedores 101 Digital Ocean CDMX
Contenedores 101 Digital Ocean CDMXContenedores 101 Digital Ocean CDMX
Contenedores 101 Digital Ocean CDMX
 
Retos en la arquitectura de Microservicios
Retos en la arquitectura de MicroserviciosRetos en la arquitectura de Microservicios
Retos en la arquitectura de Microservicios
 
Java Cloud Native Hack Nights GDL
Java Cloud Native Hack Nights GDLJava Cloud Native Hack Nights GDL
Java Cloud Native Hack Nights GDL
 
meetup digital ocean kubernetes
meetup digital ocean kubernetesmeetup digital ocean kubernetes
meetup digital ocean kubernetes
 
Peru JUG Micronaut & GraalVM
Peru JUG Micronaut & GraalVMPeru JUG Micronaut & GraalVM
Peru JUG Micronaut & GraalVM
 
DevFest Lima Corriendo cargas e trabajo seguras en GKE con Istio
DevFest Lima Corriendo cargas e trabajo seguras en GKE con IstioDevFest Lima Corriendo cargas e trabajo seguras en GKE con Istio
DevFest Lima Corriendo cargas e trabajo seguras en GKE con Istio
 
Cloud Native Development in the JVM
Cloud Native Development in the JVMCloud Native Development in the JVM
Cloud Native Development in the JVM
 
Cloud Native Mexico - Introducción a Kubernetes
Cloud Native Mexico - Introducción a KubernetesCloud Native Mexico - Introducción a Kubernetes
Cloud Native Mexico - Introducción a Kubernetes
 
Meetup DigitalOcean Cloud Native architecture
Meetup DigitalOcean Cloud Native architectureMeetup DigitalOcean Cloud Native architecture
Meetup DigitalOcean Cloud Native architecture
 
Cloud Native Mexico Meetup de Marzo 2018 Service Mesh con Istio y Envoy
Cloud Native Mexico Meetup de Marzo 2018 Service Mesh con Istio y EnvoyCloud Native Mexico Meetup de Marzo 2018 Service Mesh con Istio y Envoy
Cloud Native Mexico Meetup de Marzo 2018 Service Mesh con Istio y Envoy
 
Cloud Native Mexico Meetup enero 2018 Observability
Cloud Native Mexico Meetup enero 2018 ObservabilityCloud Native Mexico Meetup enero 2018 Observability
Cloud Native Mexico Meetup enero 2018 Observability
 
Cloud Native Mexico Presentacion
Cloud Native Mexico PresentacionCloud Native Mexico Presentacion
Cloud Native Mexico Presentacion
 
gRPC: Beyond REST
gRPC: Beyond RESTgRPC: Beyond REST
gRPC: Beyond REST
 
Devops Landscape
Devops LandscapeDevops Landscape
Devops Landscape
 
Orquestación de contenedores con Kubernetes SGNext
Orquestación de contenedores con Kubernetes SGNextOrquestación de contenedores con Kubernetes SGNext
Orquestación de contenedores con Kubernetes SGNext
 
JVM Reactive Programming
JVM Reactive ProgrammingJVM Reactive Programming
JVM Reactive Programming
 
SGNext Elasticsearch
SGNext ElasticsearchSGNext Elasticsearch
SGNext Elasticsearch
 
Webinar Arquitectura de Microservicios
Webinar Arquitectura de MicroserviciosWebinar Arquitectura de Microservicios
Webinar Arquitectura de Microservicios
 

Último

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
 
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
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxaylincamaho
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx241522327
 
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
 
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
 
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
 
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfLa Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfjeondanny1997
 
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptLUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptchaverriemily794
 
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
 
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
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfSergioMendoza354770
 
Hernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptxHernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptxJOSEMANUELHERNANDEZH11
 
Segunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptxSegunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptxMariaBurgos55
 
dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptMiguelAtencio10
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx241523733
 
Arenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxArenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxJOSEFERNANDOARENASCA
 
Explorando la historia y funcionamiento de la memoria ram
Explorando la historia y funcionamiento de la memoria ramExplorando la historia y funcionamiento de la memoria ram
Explorando la historia y funcionamiento de la memoria ramDIDIERFERNANDOGUERRE
 
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
 
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
 

Último (20)

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
 
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
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx
 
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
 
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
 
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
 
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfLa Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
 
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptLUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).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
 
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
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
 
Hernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptxHernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptx
 
Segunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptxSegunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptx
 
dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.ppt
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx
 
Arenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxArenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptx
 
Explorando la historia y funcionamiento de la memoria ram
Explorando la historia y funcionamiento de la memoria ramExplorando la historia y funcionamiento de la memoria ram
Explorando la historia y funcionamiento de la memoria ram
 
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
 
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
 

Intro a Grails @ ITESCA

  • 1. Agilidad en el desarrollo empresarial (o de como hacer webapps sin tanto dolor)
  • 2. Disculpa a ITESCA • Vi mal la hora del vuelo. • Lo perdí • Casi no llego, vengo corriendo del aeropuerto. • Pero ya estoy aquí :) © 2008 Domingo Suarez; disponible bajo CC-SA 2.5
  • 3. Agenda • Groovy • Grails • Arquitectura • Componentes • Como usar la plataforma • !!Código¡¡ • Recursos. © 2008 Domingo Suarez; disponible bajo CC-SA 2.5
  • 4. Objetivo • Conocer y aprender como simplificar el desarrollo web con Grails © 2008 Domingo Suarez; disponible bajo CC-SA 2.5
  • 5. Sobre el ponente • Domingo Suárez Torres • Ciencias de la Informática @ IPN-UPIICSA • Gerente de Desarrollo @ Bursatec • Asigna, Mercado de Derivados • CTO @ SynergyJ y de SeptimoBit Software • Apasionado por el desarrollo de software • Fundador de JavaUp.org, SpringHispano.org, Grails.org.mx © 2008 Domingo Suarez; disponible bajo CC-SA 2.5
  • 6. Trasfondo • Desarrollador Java desde 1999 • 7 años desarrollando aplicaciones JEE • Experiencia en sectores:Ventas, Construcción, Salud, Gobierno, Financiero. • Javero de hueso colorado. • Commiter en Codehaus • Desarrollador de plugins de Grails © 2008 Domingo Suarez; disponible bajo CC-SA 2.5
  • 7. Java Plataforma políglota • Java • Groovy • Scala • Erlang • JRuby • Jython • JavaFX © 2008 Domingo Suarez; disponible bajo CC-SA 2.5
  • 8. ¿Que es Groovy? • Groovy es un lenguaje ágil y dinámico para la Máquina Virtual de Java • Basado en los conceptos base del lenguage Java, incluye características inspiradas en otros lenguages como Python, Ruby y Smalltalk. • Habilita características de programación modernas con una curva de aprendizaje prácticamente plana para desarrolladores Java • Soporta Lenguajes de Dominio Específico y otras características de sintaxis corta © 2008 Domingo Suarez; disponible bajo CC-SA 2.5
  • 9. ¿Que es Groovy? • Simplifica el ciclo de pruebas dado que soporta pruebas unitarias y mocking desde el inicio. • Se integra sin problemas con cualquier objeto y/o librería Java existentes • Compila directamente a código byte (igual que Java) puede ser usado virtualmente en cualquier lugar donde Java puede serlo también © 2008 Domingo Suarez; disponible bajo CC-SA 2.5
  • 10. HolaMundo en Java public class HelloWorld { String name; public void setName(String name) { this.name = name; } public String getName(){ return name; } public String greet(){ return “Hello “ + name; } public static void main(String args[]){ HelloWorld helloWorld = new HelloWorld()‫‏‬ helloWorld.setName(“Groovy”)‫‏‬ System.out.println( helloWorld.greet() )‫‏‬ } } © 2008 Domingo Suarez; disponible bajo CC-SA 2.5
  • 11. HolaMundo en Groovy public class HelloWorld { String name; public void setName(String name) { this.name = name; } public String getName(){ return name; } public String greet(){ return “Hello “ + name; } public static void main(String args[]){ HelloWorld helloWorld = new HelloWorld()‫‏‬ helloWorld.setName(“Groovy”)‫‏‬ System.out.println( helloWorld.greet() )‫‏‬ } } © 2008 Domingo Suarez; disponible bajo CC-SA 2.5
  • 12. Manera Groovy ;) class HelloWorld { String name def greet() { quot;Hello $namequot; } } def helloWorld = new HelloWorld(name:quot;Groovyquot;) println helloWorld.greet() © 2008 Domingo Suarez; disponible bajo CC-SA 2.5
  • 13. Groovy casi Java • Java es Groovy, Groovy es Java • Groovy ofrece una curva de aprendizaje sencilla para desarrolladores Java. Puedes empezar con sintaxis Java y moverte poco a poco a la sintaxis Groovy • 98% de código Java es código Groovy, virtualmente podrías renombrar un archivo *.java a .groovy y compilaría © 2008 Domingo Suarez; disponible bajo CC-SA 2.5
  • 14. Groovy y Java 5 • Groovy soporta anotaciones (JSR 175) iguales a las de Java, es más, es el segundo lenguaje en la JVM que las soporta. ¿JavaFX? • hasta el momento no es posible definir anotaciones con Groovy • Groovy soporta Enums también • Por último también tiene habilitado el soporte de tipos genéricos, iguales a los de Java. © 2008 Domingo Suarez; disponible bajo CC-SA 2.5
  • 15. Closures • Closures pueden ser interpretados como bloques de código reusable, probablemente las hayas visto en otros lenguajes como JavaScript o Ruby • Closures substituyen a las clases internas en la mayoría de los casos • Groovy permite “forzar el tipo” de una Closure a una interface de un solo método (proxy) • Una closure tendrá un parámetro por omisión llamado “it” si es que no se definen parámetros para la misma © 2008 Domingo Suarez; disponible bajo CC-SA 2.5
  • 16. Ejemplos de closures def greet = { name -> println “Hello $name” } greet( “Groovy” )‫‏‬ // prints Hello Groovy def greet = { println “Hello $it” } greet( “Groovy” )‫‏‬ // prints Hello Groovy def iCanHaveTypedParametersToo = { int x, int y -> println “coordinates are ($x,$y)” } def myActionListener = { event -> // do something cool with event } as ActionListener © 2008 Domingo Suarez; disponible bajo CC-SA 2.5
  • 17. Azúcar sintáctica: Toma 1 ¿No es adorable el Api de Collections? © 2008 Domingo Suarez; disponible bajo CC-SA 2.5
  • 18. Azúcar sintáctica: Toma 2 © 2008 Domingo Suarez; disponible bajo CC-SA 2.5
  • 19. Azúcar sintáctica: Toma 3 © 2008 Domingo Suarez; disponible bajo CC-SA 2.5
  • 20. Detalles • Groovy es leeentooo.... No tanto como les gustaría a los alarmistas. • Es cuestión de tiempo • Si necesitas velocidad, puedes recurrir a Java. • A veces no importa tanto © 2008 Domingo Suarez; disponible bajo CC-SA 2.5
  • 21. ¿Que es Grails? • Mas que un framework, es una plataforma para desarrollo de aplicaciones web © 2008 Domingo Suarez; disponible bajo CC-SA 2.5
  • 22. Plataforma Grails • Integra componentes que van desde el sistema de construcción hasta la capa de acceso a base de datos. • El desarrollador programa en Groovy. • Basado en herramientas existentes y poderosas como: • Spring, Hibernate, Quartz, Sitemesh, etc. © 2008 Domingo Suarez; disponible bajo CC-SA 2.5
  • 23. Plataforma Grails • Java 2 Enterprise Edition (J2EE, ahora JEE), es considerado muy complicado, más de lo necesario. • Spring y Hibernate han sido proyectos nacidos como Opensource que han mejorado la manera de desarrollar en Java. • Grails representa el siguiente nivel de abstracción para JEE. • Grails simplifica dramáticamente el uso de Spring y Hibernate. © 2008 Domingo Suarez; disponible bajo CC-SA 2.5
  • 24. Spring como base • Sus principales características • Sistema de extensiones basada en plugins • Entorno de configuración para ejecución • Todo lo anterior, construido sobre Spring. © 2008 Domingo Suarez; disponible bajo CC-SA 2.5
  • 25. Bases solidas • Spring • Hibernate • Groovy • Quartz • Sitemesh • Jetty • Apache Ant • Plataforma Java © 2008 Domingo Suarez; disponible bajo CC-SA 2.5
  • 27. ¿Por que Groovy & Grails? • Todo el poder de frameworks de otras plataformas como RubyOnRails, Django • Basado en Tecnología Java, en desarrollo empresarial no hay alternativa. • Reuso de herramientas y tecnologías existentes • Caches Distribuidos • Herramientas para depuración,IDEs © 2008 Domingo Suarez; disponible bajo CC-SA 2.5
  • 28. ¿Por que Groovy & Grails? • ¿Porque no? © 2008 Domingo Suarez; disponible bajo CC-SA 2.5
  • 29. ¿Como iniciar? • Instalar un JDK para tu sistema operativo • Visitar http://grails.org y descargar la ultima versión estable. Se distribuye en Zip y TarGZ • Descomprimir el archivo • Establecer la variable de ambiente GRAILS_HOME y agregar a PATH el directorio bin de $GRAILS_HOME • Mayor detalle en: http://grails.org/Installation © 2008 Domingo Suarez; disponible bajo CC-SA 2.5
  • 30. ¿Como desarrollo una aplicación? • Crear una aplicación y ejecutarla. • Analizar la estructura de directorios © 2008 Domingo Suarez; disponible bajo CC-SA 2.5
  • 31. !!No te creo¡¡ © 2008 Domingo Suarez; disponible bajo CC-SA 2.5
  • 32. IDEs y otras herramientas • Funciona muy bien con Eclipse • Mejor con IntelliJ IDEA • Plugin para NetBeans • Para minimalistas con Textmate • Ant • Maven © 2008 Domingo Suarez; disponible bajo CC-SA 2.5
  • 33. Orden en Grails • El principio de “Convención sobre configuración” • No significa que no exista la configuración • No confundir por “Convención en lugar de configuración” © 2008 Domingo Suarez; disponible bajo CC-SA 2.5
  • 34. Estructura de proyecto © 2008 Domingo Suarez; disponible bajo CC-SA 2.5
  • 35. Estructura Grails © 2008 Domingo Suarez; disponible bajo CC-SA 2.5
  • 36. Seguimos con lo básico El Modelo de dominio © 2008 Domingo Suarez; disponible bajo CC-SA 2.5
  • 37. El modelo • Representa una parte muy importante del problema que intentamos resolver. • En Grails, el modelo generalmente es “persistente”, es decir se almacena su estado. © 2008 Domingo Suarez; disponible bajo CC-SA 2.5
  • 38. El modelo • Para la persistencia se usa Hibernate. • Hibernate es un Mapeador Objeto- Relacional (ORM) • http://www.hibernate.org © 2008 Domingo Suarez; disponible bajo CC-SA 2.5
  • 39. ¿Como creo un modelo? > grails create-domain-class Clase © 2008 Domingo Suarez; disponible bajo CC-SA 2.5
  • 40. • Crear una clase de dominio llamada Conferencista y otra Conferencia • Hacer el CRUD de esas clases con scaffolding dinámico. © 2008 Domingo Suarez; disponible bajo CC-SA 2.5
  • 41. Scaffolding: No es bala de plata • Dos tipo de andamiaje • Dinámico (El de la demo) • Estático (Necesario generar artefactos, es posible modificarlos al gusto) • Es una ayuda, no es la principal fortaleza de Grails. © 2008 Domingo Suarez; disponible bajo CC-SA 2.5
  • 42. Consultas • ¿Se acuerdan de los DAOs? © 2008 Domingo Suarez; disponible bajo CC-SA 2.5
  • 43. Métodos dinámicos © 2008 Domingo Suarez; disponible bajo CC-SA 2.5
  • 44. Más dinámicos... © 2008 Domingo Suarez; disponible bajo CC-SA 2.5
  • 45. GORM © 2008 Domingo Suarez; disponible bajo CC-SA 2.5
  • 46. Ecosistema Grails • La comunidad esta creciendo mucho. • Gracias a la arquitectura de plugins de Grails, se puede extender la funcionalidad. • Existen mas de 50 plugins oficiales. • Seguridad • Interfases de usuario • WebServices © 2008 Domingo Suarez; disponible bajo CC-SA 2.5
  • 47. Plugins • Vista • Flex, con Blaze DataServices • YahooUI, ExtJS, GWT, • Spring WebFlow • WebServices (XFire, Axis, Metro) © 2008 Domingo Suarez; disponible bajo CC-SA 2.5
  • 48. Despliegue • Grails genera archivos WAR. • Se puedes desplegar en diversos servidores como: • Weblogic • Websphere • Tomcat • Jetty • SpringSource Application Platform © 2008 Domingo Suarez; disponible bajo CC-SA 2.5
  • 49. ¿Quien lo usa? • LinkedIn • SAP • Tropicana • Sky • Más en: http://www.grails.org/Success+Stories © 2008 Domingo Suarez; disponible bajo CC-SA 2.5
  • 50. Consejos • No lo adoptes si no tienes experiencia en Hibernate y Spring • A menos que no tengas deadlines... © 2008 Domingo Suarez; disponible bajo CC-SA 2.5
  • 53. Muestrame el código © 2008 Domingo Suarez; disponible bajo CC-SA 2.5
  • 54. Proyectos • Coetus • http://code.google.com/p/coetus/ • Geedback • http://code.google.com/p/geedback/ © 2008 Domingo Suarez; disponible bajo CC-SA 2.5
  • 55. En la mira • JBoss Seam • Basado en estándares JEE • JSF y JPA • Marcando la pauta de nuevas especificaciones como WebBeans • Para los amantes de anotaciones :) © 2008 Domingo Suarez; disponible bajo CC-SA 2.5
  • 56. Agradecimientos • A mi familia, que me dejo venir... • ITESCA © 2008 Domingo Suarez; disponible bajo CC-SA 2.5
  • 57. Agradecimientos • Andres Almiray, por las láminas de introducción a Groovy © 2008 Domingo Suarez; disponible bajo CC-SA 2.5
  • 58. Resumen • Grails no es solo un framework, es una plataforma de desarrollo web. • Grails es la próxima generación de abstracción de JEE basada en Spring y Hibernate. • Groovy y Grails se integran sin problemas al código Java existente y a toda la plataforma Java. • Grails == Simplificación de la plataforma JEE en web. © 2008 Domingo Suarez; disponible bajo CC-SA 2.5
  • 59. Preguntas © 2008 Domingo Suarez; disponible bajo CC-SA 2.5
  • 60. Recursos • http://groovy.codehaus.org • http://grails.org • http://www.springhispano.org • http://groovy.org.es • http://grails.org.mx • http://www.javahispano.org • Podcast en SpringHispano.org y Grails.org.mx • http://www.domingosuarez.com • http://www.domix.org © 2008 Domingo Suarez; disponible bajo CC-SA 2.5