intro a grails @ itesca

60
Agilidad en el desarrollo empresarial (o de como hacer webapps sin tanto dolor)

Upload: domingo-suarez-torres

Post on 27-May-2015

1.835 views

Category:

Technology


2 download

DESCRIPTION

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

TRANSCRIPT

Page 1: Intro a Grails @ ITESCA

Agilidad en el desarrollo empresarial(o de como hacer webapps sin tanto

dolor)

Page 2: Intro a Grails @ ITESCA

© 2008 Domingo Suarez; disponible bajo CC-SA 2.5

Disculpa a ITESCA

• Vi mal la hora del vuelo.

• Lo perdí

• Casi no llego, vengo corriendo del aeropuerto.

• Pero ya estoy aquí :)

Page 3: Intro a Grails @ ITESCA

© 2008 Domingo Suarez; disponible bajo CC-SA 2.5

Agenda• Groovy

• Grails

• Arquitectura

• Componentes

• Como usar la plataforma

• !!Código¡¡

• Recursos.

Page 4: Intro a Grails @ ITESCA

© 2008 Domingo Suarez; disponible bajo CC-SA 2.5

Objetivo

• Conocer y aprender como simplificar el desarrollo web con Grails

Page 5: Intro a Grails @ ITESCA

© 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

Page 6: Intro a Grails @ ITESCA

© 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

Page 7: Intro a Grails @ ITESCA

© 2008 Domingo Suarez; disponible bajo CC-SA 2.5

JavaPlataforma políglota

• Java

• Groovy

• Scala

• Erlang

• JRuby

• Jython

• JavaFX

Page 8: Intro a Grails @ ITESCA

© 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

Page 9: Intro a Grails @ ITESCA

© 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

Page 10: Intro a Grails @ ITESCA

© 2008 Domingo Suarez; disponible bajo CC-SA 2.5

HolaMundo en Javapublic 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() )‏ }}

Page 11: Intro a Grails @ ITESCA

© 2008 Domingo Suarez; disponible bajo CC-SA 2.5

HolaMundo en Groovypublic 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() )‏ }}

Page 12: Intro a Grails @ ITESCA

© 2008 Domingo Suarez; disponible bajo CC-SA 2.5

Manera Groovy ;)

class HelloWorld { String name def greet() { "Hello $name" }}

def helloWorld = new HelloWorld(name:"Groovy")println helloWorld.greet()

Page 13: Intro a Grails @ ITESCA

© 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

Page 14: Intro a Grails @ ITESCA

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

Page 15: Intro a Grails @ ITESCA

© 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

Page 16: Intro a Grails @ ITESCA

© 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

Page 17: Intro a Grails @ ITESCA

© 2008 Domingo Suarez; disponible bajo CC-SA 2.5

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

Page 18: Intro a Grails @ ITESCA

© 2008 Domingo Suarez; disponible bajo CC-SA 2.5

Azúcar sintáctica: Toma 2

Page 19: Intro a Grails @ ITESCA

© 2008 Domingo Suarez; disponible bajo CC-SA 2.5

Azúcar sintáctica: Toma 3

Page 20: Intro a Grails @ ITESCA

© 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

Page 21: Intro a Grails @ ITESCA

© 2008 Domingo Suarez; disponible bajo CC-SA 2.5

¿Que es Grails?• Mas que un framework, es una plataforma

para desarrollo de aplicaciones web

Page 22: Intro a Grails @ ITESCA

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

Page 23: Intro a Grails @ ITESCA

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

Page 24: Intro a Grails @ ITESCA

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

Page 25: Intro a Grails @ ITESCA

© 2008 Domingo Suarez; disponible bajo CC-SA 2.5

Bases solidas

• Spring

• Hibernate

• Groovy

• Quartz

• Sitemesh

• Jetty

• Apache Ant

• Plataforma Java

Page 26: Intro a Grails @ ITESCA

Arquitectura de Grails

Page 27: Intro a Grails @ ITESCA

© 2008 Domingo Suarez; disponible bajo CC-SA 2.5

¿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

Page 28: Intro a Grails @ ITESCA

© 2008 Domingo Suarez; disponible bajo CC-SA 2.5

¿Por que Groovy & Grails?

• ¿Porque no?

Page 29: Intro a Grails @ ITESCA

© 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

Page 30: Intro a Grails @ ITESCA

© 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

Page 31: Intro a Grails @ ITESCA

© 2008 Domingo Suarez; disponible bajo CC-SA 2.5

!!No te creo¡¡

Page 32: Intro a Grails @ ITESCA

© 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

Page 33: Intro a Grails @ ITESCA

© 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”

Page 34: Intro a Grails @ ITESCA

© 2008 Domingo Suarez; disponible bajo CC-SA 2.5

Estructura de proyecto

Page 35: Intro a Grails @ ITESCA

© 2008 Domingo Suarez; disponible bajo CC-SA 2.5

Estructura Grails

Page 36: Intro a Grails @ ITESCA

© 2008 Domingo Suarez; disponible bajo CC-SA 2.5

Seguimos con lo básico

El Modelo de dominio

Page 37: Intro a Grails @ ITESCA

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

Page 38: Intro a Grails @ ITESCA

© 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

Page 39: Intro a Grails @ ITESCA

© 2008 Domingo Suarez; disponible bajo CC-SA 2.5

¿Como creo un modelo?

> grails create-domain-class Clase

Page 40: Intro a Grails @ ITESCA

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

Page 41: Intro a Grails @ ITESCA

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

Page 42: Intro a Grails @ ITESCA

© 2008 Domingo Suarez; disponible bajo CC-SA 2.5

Consultas

• ¿Se acuerdan de los DAOs?

Page 43: Intro a Grails @ ITESCA

© 2008 Domingo Suarez; disponible bajo CC-SA 2.5

Métodos dinámicos

Page 44: Intro a Grails @ ITESCA

© 2008 Domingo Suarez; disponible bajo CC-SA 2.5

Más dinámicos...

Page 45: Intro a Grails @ ITESCA

© 2008 Domingo Suarez; disponible bajo CC-SA 2.5

GORM

Page 46: Intro a Grails @ ITESCA

© 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

Page 47: Intro a Grails @ ITESCA

© 2008 Domingo Suarez; disponible bajo CC-SA 2.5

Plugins

• Vista

• Flex, con Blaze DataServices

• YahooUI, ExtJS, GWT,

• Spring WebFlow

• WebServices (XFire, Axis, Metro)

Page 48: Intro a Grails @ ITESCA

© 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

Page 49: Intro a Grails @ ITESCA

© 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

Page 50: Intro a Grails @ ITESCA

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

Page 51: Intro a Grails @ ITESCA

SpringHispano.org

Page 52: Intro a Grails @ ITESCA

Grails.org.mx

Page 53: Intro a Grails @ ITESCA

© 2008 Domingo Suarez; disponible bajo CC-SA 2.5

Muestrame el código

Page 54: Intro a Grails @ ITESCA

© 2008 Domingo Suarez; disponible bajo CC-SA 2.5

Proyectos

• Coetus

• http://code.google.com/p/coetus/

• Geedback

• http://code.google.com/p/geedback/

Page 55: Intro a Grails @ ITESCA

© 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 :)

Page 56: Intro a Grails @ ITESCA

© 2008 Domingo Suarez; disponible bajo CC-SA 2.5

Agradecimientos• A mi familia, que me dejo venir...

• ITESCA

Page 57: Intro a Grails @ ITESCA

© 2008 Domingo Suarez; disponible bajo CC-SA 2.5

Agradecimientos

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

Page 58: Intro a Grails @ ITESCA

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

Page 59: Intro a Grails @ ITESCA

© 2008 Domingo Suarez; disponible bajo CC-SA 2.5

Preguntas

Page 60: Intro a Grails @ ITESCA

© 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