Date post: | 27-May-2015 |
Category: |
Technology |
Upload: | domingo-suarez-torres |
View: | 1,833 times |
Download: | 2 times |
Agilidad en el desarrollo empresarial(o de como hacer webapps sin tanto
dolor)
© 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í :)
© 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
JavaPlataforma 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 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() ) }}
© 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() ) }}
© 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()
© 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
Arquitectura de Grails
© 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
© 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?
• 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...
SpringHispano.org
Grails.org.mx
© 2008 Domingo Suarez; disponible bajo CC-SA 2.5
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