1. Introducción a Grails
Graeme Rocher
SpringSource
NOT CONFIDENTIAL -- TELL EVERYONE
Friday, 30 September 2011
2. ¿Que es Grails?
• MVC sistema web inspirado en:
– Convención en lugar de configuración
– Don’t Repeat Yourself (Nó te repitas) (DRY)
– Contiene características de sistemas como Rails, Django y
TurboGears
• http://grails.org
NOT CONFIDENTIAL -- TELL EVERYONE 2
Friday, 30 September 2011
3. Why Groovy & Grails?
• Toda la potencia de otros sistemas con plataformas dinámicas.
• Construido con base de tecnologías Java.
– Diseñado para Java por Ingenieros de Java.
• Beneficiandose de tecnologías y herramientas existentes.
– Caches distribuidos, replicando tecnologías etc.
– Monitorización y debugging herramientas
– Análisis de rendimiento
NOT CONFIDENTIAL -- TELL EVERYONE 3
Friday, 30 September 2011
5. Los Mejores en su clase
• Spring
• Hibernate
• Groovy Groovy Spring
• Quartz
• Sitemesh
• Tomcat Sitemesh
• Java Hibernate
Java
Quartz
NOT CONFIDENTIAL -- TELL EVERYONE 5
Friday, 30 September 2011
6. Componentes de Grails
Grails
Groovy
Java
Enterprise Spring Hibernate SiteMesh
Edition (JEE)
The Java Development
The Java Language
Kit (JDK)
The Java Virtual Machine
NOT CONFIDENTIAL -- TELL EVERYONE 6
Friday, 30 September 2011
7. Como empezar
Descargar Grails de Descargar Groovy de
http://grails.org/Download http://groovy.codehaus.org
Descomprimir el archivo zip Descomprimir el archivo zip en
en una carpeta del disco duro una carpeta del disco duro
Configurar la variable de Configurar la variable de
enterno GRAILS_HOME enterno GROOVY_HOME
haciendo referencia a la haciendo referencia a la carpeta
carpeta del punto anterior del punto anterior
Añadir a la variable PATH del Añadir a la variable PATH del
sistema la carpeta sistema la carpeta
$GRAILS_HOME/bin $GROOVY_HOME/bin
NOT CONFIDENTIAL -- TELL EVERYONE 7
Friday, 30 September 2011
8. Demo - Como Empezar
NOT CONFIDENTIAL -- TELL EVERYONE
Friday, 30 September 2011
9. Ejemplo de estructura de carpetas
Web Controllers
The Domain Model
Business Logic
View Helpers in Tags
Views & Layouts
JAR Archives
Additional Sources
Web Resources
12
NOT CONFIDENTIAL -- TELL EVERYONE 9
Friday, 30 September 2011
10. Grails - Las Características Mas Importantes
GORM - ORM construido en Hibernate
MVC Completo
“Domain Specific Languages”
• Reglas de validación
• “ORM Mapping”
• “URL Mapping”
Comunidad de desarrollo de plugins activa.
• http://grails.org/Plugins
• Mas 600 plugins desarrallodos por los usuarios.
• Existen plugins para integrar otras tecnologías
como Flex y SOAP.
NOT CONFIDENTIAL -- TELL EVERYONE 10
Friday, 30 September 2011
11. Fácil ORM con GORM
class Album { table - album
String title
id title artist release_date
String artist
Date releaseDate
static hasMany = [songs:Song]
}
class Song { table - song
String title
Double duration id title duration album_id
}
GORM classes, also
known as domain
classes, go in the domain
directory
NOT CONFIDENTIAL -- TELL EVERYONE 11
Friday, 30 September 2011
12. Demo - GORM
NOT CONFIDENTIAL -- TELL EVERYONE
Friday, 30 September 2011
13. Fácil MVC con Grails
Sistema MVC integral construido en Spring
• “Command objects”
• “Data binding”
• “Zero configuration”
• “URL Mappings”
• “Groovy Server Pages (GSP) “
• “Tag libraries”
• “CRUD (Scaffolding)”
• Internacionalización (i18n)
NOT CONFIDENTIAL -- TELL EVERYONE 13
Friday, 30 September 2011
14. Fácil MVC con Grails
Actions are properties
class AlbumController { assigned a block or
def search = { closure
def albums= Album.findByTitleLike("%${params.q}%")
[albumResults:albums]
}
}
Return a model
as a map
Controllers go in
the “controllers”
directory
NOT CONFIDENTIAL -- TELL EVERYONE 14
Friday, 30 September 2011
15. Demo - Controllers
NOT CONFIDENTIAL -- TELL EVERYONE
Friday, 30 September 2011
17. Que puedes obtener con plugins...
NOT CONFIDENTIAL -- TELL EVERYONE 17
Friday, 30 September 2011
18. Que puedes obtener con plugins...
• Pruebas con Grails: selenium,
fitnesse, code coverage etc.
NOT CONFIDENTIAL -- TELL EVERYONE 17
Friday, 30 September 2011
19. Que puedes obtener con plugins...
• Pruebas con Grails: selenium,
fitnesse, code coverage etc.
• JavaScript con Grails: Flex,
GWT, ZK, jQuery etc.
NOT CONFIDENTIAL -- TELL EVERYONE 17
Friday, 30 September 2011
20. Que puedes obtener con plugins...
• Pruebas con Grails: selenium,
fitnesse, code coverage etc.
• JavaScript con Grails: Flex,
GWT, ZK, jQuery etc.
• Seguridad con Grails: Spring
Security, JSecurity, OpenID etc.
NOT CONFIDENTIAL -- TELL EVERYONE 17
Friday, 30 September 2011
21. Que puedes obtener con plugins...
• Pruebas con Grails: selenium,
fitnesse, code coverage etc.
• JavaScript con Grails: Flex,
GWT, ZK, jQuery etc.
• Seguridad con Grails: Spring
Security, JSecurity, OpenID etc.
• Persistencia: MongoDB, Redis,
SimpleDB etc.
NOT CONFIDENTIAL -- TELL EVERYONE 17
Friday, 30 September 2011
22. Página de Plugins
• http://grails.org/Plugins
NOT CONFIDENTIAL -- TELL EVERYONE 18
Friday, 30 September 2011
23. Novedades en Grails 2.0
NOT CONFIDENTIAL -- TELL EVERYONE
Friday, 30 September 2011
24. Grails 2.0
• Librerías actualizadas: Groovy 1.8, Spring 3.1,
Hibernate 3.6, Servlet 3.0 and Tomcat 7
• Nueva línea de comandos y Modo Interactivo
• Plugins precompilados como archivos JAR
• Reloading Agent
• HTML5 Scaffolding UI
• Nuevos Modelos de Test y Documentación
• Dirección de Archivos Estáticos Integrados (CSS,
JS, Images)
• Mejor Testing.
NOT CONFIDENTIAL -- TELL EVERYONE 20
Friday, 30 September 2011
25. Grails 2.0
• GORM Mejoras
• “Detached Criteria”
• Soporte de Multiples Bases De Datos
• Soporte de Migración de Databases
• jQuery Por Defecto
• http://grails.org/doc/2.0.x/guide/
introduction.html#whatsNew
NOT CONFIDENTIAL -- TELL EVERYONE 21
Friday, 30 September 2011
26. New UI
NOT CONFIDENTIAL -- TELL EVERYONE 22
Friday, 30 September 2011
27. New Unit Testing
@TestFor(MyController)
@Mock(Person)
class MyControllerUnitTests {
void setUp() {
new Person(...).save()
new Person(...).save()
}
void testIndex() {
def model = this.controller.index()
...
}
}
NOT CONFIDENTIAL -- TELL EVERYONE 23
Friday, 30 September 2011
28. GORM API
NOT CONFIDENTIAL -- TELL EVERYONE 24
Friday, 30 September 2011
29. GORM API
NOT CONFIDENTIAL -- TELL EVERYONE 24
Friday, 30 September 2011
30. Demo - Grails 2.0
NOT CONFIDENTIAL -- TELL EVERYONE
Friday, 30 September 2011
31. Libros
NOT CONFIDENTIAL -- TELL EVERYONE 26
Friday, 30 September 2011
32. Mas Información
Grails
• Pagina web: http://grails.org
• Guia de usuario: http://grails.org/doc/latest
Groovy
• http://groovy.codehaus.org
SpringSource
• http://www.springsource.com
NOT CONFIDENTIAL -- TELL EVERYONE 27
Friday, 30 September 2011