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 est...
Agenda
• Groovy
• Grails
 • Arquitectura
 • Componentes
 • Como usar la plataforma
 • !!Código¡¡
• Recursos.
             ...
Objetivo


• Conocer y aprender como simplificar el
  desarrollo web con Grails




                © 2008 Domingo Suarez; ...
Sobre el ponente
• Domingo Suárez Torres
• Ciencias de la Informática @ IPN-UPIICSA
• Gerente de Desarrollo @ Bursatec
 • ...
Trasfondo
• Desarrollador Java desde 1999
• 7 años desarrollando aplicaciones JEE
• Experiencia en sectores:Ventas,
  Cons...
Java
  Plataforma políglota
• Java
• Groovy
• Scala
• Erlang
• JRuby
• Jython
• JavaFX   © 2008 Domingo Suarez; disponible...
¿Que es Groovy?
• Groovy es un lenguaje ágil y dinámico para la
  Máquina Virtual de Java
• Basado en los conceptos base d...
¿Que es Groovy?
• Simplifica el ciclo de pruebas dado que
  soporta pruebas unitarias y mocking desde
  el inicio.
• Se int...
HolaMundo en Java
public class HelloWorld {
   String name;

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

 ...
HolaMundo en Groovy
public class HelloWorld {
   String name;

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

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

def helloWorld = new Hello...
Groovy casi Java
• Java es Groovy, Groovy es Java
• Groovy ofrece una curva de aprendizaje
  sencilla para desarrolladores...
Groovy y Java 5
• Groovy soporta anotaciones (JSR 175) iguales a
  las de Java, es más, es el segundo lenguaje en la
  JVM...
Closures
• Closures pueden ser interpretados como bloques
  de código reusable, probablemente las hayas visto en
  otros l...
Ejemplos de closures
def greet = { name -> println “Hello $name” }
greet( “Groovy” )‫‏‬
// prints Hello Groovy

def greet ...
Azúcar sintáctica: Toma 1
¿No es adorable el Api de Collections?




                       © 2008 Domingo Suarez; disponi...
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 v...
¿Que es Grails?
• Mas que un framework, es una plataforma
  para desarrollo de aplicaciones web




                 © 200...
Plataforma Grails
• Integra componentes que van desde el
  sistema de construcción hasta la capa de
  acceso a base de dat...
Plataforma Grails
• Java 2 Enterprise Edition (J2EE, ahora JEE), es
  considerado muy complicado, más de lo
  necesario.
•...
Spring como base
• Sus principales características
• Sistema de extensiones basada en plugins
• Entorno de configuración pa...
Bases solidas

• Spring
• Hibernate
• Groovy
• Quartz
• Sitemesh
• Jetty
• Apache Ant
• Plataforma Java
                  ...
Arquitectura de Grails
¿Por que Groovy & Grails?

• Todo el poder de frameworks de otras
  plataformas como RubyOnRails, Django
• Basado en Tecno...
¿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 est...
¿Como desarrollo una aplicación?




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


  ...
!!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 mini...
Orden en Grails

• El principio de “Convención sobre
  configuración”
• No significa que no exista la configuración
• No conf...
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 generalmen...
El modelo

• Para la persistencia se usa Hibernate.
• Hibernate es un Mapeador Objeto-
  Relacional (ORM)
• http://www.hib...
¿Como creo un modelo?


 > grails create-domain-class Clase




                  © 2008 Domingo Suarez; disponible bajo C...
• Crear una clase de dominio llamada
  Conferencista y otra Conferencia
• Hacer el CRUD de esas clases con
  scaffolding d...
Scaffolding: No es bala de plata
• Dos tipo de andamiaje
   • Dinámico (El de la demo)
   • Estático (Necesario generar
  ...
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 extend...
Plugins

• Vista
   • Flex, con Blaze DataServices
   • YahooUI, ExtJS, GWT,
   • Spring WebFlow
• WebServices (XFire, Axi...
Despliegue
• Grails genera archivos WAR.
• Se puedes desplegar en diversos servidores
  como:
   • Weblogic
   • Websphere...
¿Quien lo usa?
• LinkedIn
• SAP
• Tropicana
• Sky
• Más en: http://www.grails.org/Success+Stories

                 © 2008...
Consejos
• No lo adoptes si no tienes experiencia en
  Hibernate y Spring
• A menos que   no tengas deadlines...




     ...
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/

            ...
En la mira
• JBoss Seam
    • Basado en estándares JEE
       • JSF y JPA
    • Marcando la pauta de nuevas
      especific...
Agradecimientos
• A mi familia, que me dejo venir...
• ITESCA




                  © 2008 Domingo Suarez; disponible bajo...
Agradecimientos


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




                 © 2008 Domingo Suarez;...
Resumen
• Grails no es solo un framework, es una
  plataforma de desarrollo web.
• Grails es la próxima generación de
  ab...
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...
Upcoming SlideShare
Loading in...5
×

Intro a Grails @ ITESCA

1,863

Published on

Introducción a Groovy en ITESCA, Ciudad Obregón, Sonora, México

Published in: Technology
0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,863
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
81
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide

Transcript of "Intro a Grails @ ITESCA"

  1. 1. Agilidad en el desarrollo empresarial (o de como hacer webapps sin tanto dolor)
  2. 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. 3. Agenda • Groovy • Grails • Arquitectura • Componentes • Como usar la plataforma • !!Código¡¡ • Recursos. © 2008 Domingo Suarez; disponible bajo CC-SA 2.5
  4. 4. Objetivo • Conocer y aprender como simplificar el desarrollo web con Grails © 2008 Domingo Suarez; disponible bajo CC-SA 2.5
  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. 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. 7. Java Plataforma políglota • Java • Groovy • Scala • Erlang • JRuby • Jython • JavaFX © 2008 Domingo Suarez; disponible bajo CC-SA 2.5
  8. 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. 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. 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. 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. 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. 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. 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. 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. 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. 17. Azúcar sintáctica: Toma 1 ¿No es adorable el Api de Collections? © 2008 Domingo Suarez; disponible bajo CC-SA 2.5
  18. 18. Azúcar sintáctica: Toma 2 © 2008 Domingo Suarez; disponible bajo CC-SA 2.5
  19. 19. Azúcar sintáctica: Toma 3 © 2008 Domingo Suarez; disponible bajo CC-SA 2.5
  20. 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. 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. 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. 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. 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. 25. Bases solidas • Spring • Hibernate • Groovy • Quartz • Sitemesh • Jetty • Apache Ant • Plataforma Java © 2008 Domingo Suarez; disponible bajo CC-SA 2.5
  26. 26. Arquitectura de Grails
  27. 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. 28. ¿Por que Groovy & Grails? • ¿Porque no? © 2008 Domingo Suarez; disponible bajo CC-SA 2.5
  29. 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. 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. 31. !!No te creo¡¡ © 2008 Domingo Suarez; disponible bajo CC-SA 2.5
  32. 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. 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. 34. Estructura de proyecto © 2008 Domingo Suarez; disponible bajo CC-SA 2.5
  35. 35. Estructura Grails © 2008 Domingo Suarez; disponible bajo CC-SA 2.5
  36. 36. Seguimos con lo básico El Modelo de dominio © 2008 Domingo Suarez; disponible bajo CC-SA 2.5
  37. 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. 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. 39. ¿Como creo un modelo? > grails create-domain-class Clase © 2008 Domingo Suarez; disponible bajo CC-SA 2.5
  40. 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. 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. 42. Consultas • ¿Se acuerdan de los DAOs? © 2008 Domingo Suarez; disponible bajo CC-SA 2.5
  43. 43. Métodos dinámicos © 2008 Domingo Suarez; disponible bajo CC-SA 2.5
  44. 44. Más dinámicos... © 2008 Domingo Suarez; disponible bajo CC-SA 2.5
  45. 45. GORM © 2008 Domingo Suarez; disponible bajo CC-SA 2.5
  46. 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. 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. 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. 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. 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
  51. 51. SpringHispano.org
  52. 52. Grails.org.mx
  53. 53. Muestrame el código © 2008 Domingo Suarez; disponible bajo CC-SA 2.5
  54. 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. 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. 56. Agradecimientos • A mi familia, que me dejo venir... • ITESCA © 2008 Domingo Suarez; disponible bajo CC-SA 2.5
  57. 57. Agradecimientos • Andres Almiray, por las láminas de introducción a Groovy © 2008 Domingo Suarez; disponible bajo CC-SA 2.5
  58. 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. 59. Preguntas © 2008 Domingo Suarez; disponible bajo CC-SA 2.5
  60. 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
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×