SlideShare a Scribd company logo
1 of 29
El MVC redefinido con Grails (Controllers y GSP) José Juan R. Zuñiga (@neodevelop)
Agenda Reuniones previas Groovy MVC Grails
Reuniones previas 6ta. Reunión de SpringHispano.org, grails.orgmx y JavaMexico.org http://springhispano.org/?q=node/469 http://www.slideshare.net/domingo.suarez/taller-groovy
Reuniones previas 6ta. Reunión de SpringHispano.org, grails.orgmx y JavaMexico.org http://springhispano.org/?q=node/374 http://www.slideshare.net/neodevelop/spring-mvc-final-presentation http://www.slideshare.net/domingo.suarez/grailsorgmx-priemra-reunion-presentation
Lo más importante de todo esto…
Los ponentes…
Hablemos de MVC MVC = Model–View–Controller Es un patrón de diseño que provee un mecanismo para construir una esbelta y limpia capa web Claramente separa el negocio, la navegación y la lógica de presentación Aunque…ya no solo aplica a Web, ahora también es implementado en Desktop( el mejor caso: Griffon - ?:D )
¿Cómo trabaja MVC?
Motivaciones Facilita la carga de mantenimiento Los cambios en el negocio tienen impacto mínimo en el mejor de los casos nulo Facilita el desarrollo en un equipo multidisciplinario Zapatero a tu zapato, DBA a tu base de datos, desarrollador de persistencia a tus DAO’s, Diseñador a tu diseño…. Uso de herramientas especializadas Existen lenguajes de plantillas y etiquetado que son mejores para crear HTML Facilita las pruebas Podríamos probar mucho más código fuera de un contenedor Web
Frameworks MVC en Java ,[object Object]
Turbine
Expresso
Tapestry
Apache Cocoon
Maverik
Anvil
Jaffa
JappleJPublish Jucas WebOnSwing Chrysalis VRaptor Swinglets Millstone Wicket Java Server Faces ,[object Object]
Tomahawk
IceFaces
Trinidad
TobagoSpringMVC
Otros frameworks MVC Ruby RubyonRails Perl Catalyst Cyclone Maypole Solstice … PHP Zend Tlalokes Kumbia CakePHP … Python Turbogears Django .Net MonoRail Maverick ASP.Net MVC
Pero nosotros hablaremos de…
¿Qué es Grails? Una plataforma para desarrollo ágil en Web Un framework MVC full-stack
¿Qué es Grails? Open Source Corre en la JVM
¿Qué es Grails? Desarrollo de aplicaciones con Groovy Altamente expresivo
¿Qué es Grails? Totalmente orientado a objetos Dinámico Sintaxis familiar Perfecta integración con Java
¿Qué es Grails? Convención sobre configuración DRY (Don’trepeatyourself)

More Related Content

What's hot

What's hot (20)

Grails
GrailsGrails
Grails
 
Introducción a groovy & grails
Introducción a groovy & grailsIntroducción a groovy & grails
Introducción a groovy & grails
 
Grails en SG08
Grails en SG08Grails en SG08
Grails en SG08
 
Sobre GrooScript
Sobre GrooScriptSobre GrooScript
Sobre GrooScript
 
Spring boot + spock
Spring boot + spockSpring boot + spock
Spring boot + spock
 
Curso node.js
Curso node.js Curso node.js
Curso node.js
 
Introducción a Node.js
Introducción a Node.jsIntroducción a Node.js
Introducción a Node.js
 
Extracción de datos de páginas web con Python (webscraping)
Extracción de datos de páginas web con Python (webscraping)Extracción de datos de páginas web con Python (webscraping)
Extracción de datos de páginas web con Python (webscraping)
 
Greach 2013 - Todo lo que me hubiera gustado saber cuando empecé a desarrolla...
Greach 2013 - Todo lo que me hubiera gustado saber cuando empecé a desarrolla...Greach 2013 - Todo lo que me hubiera gustado saber cuando empecé a desarrolla...
Greach 2013 - Todo lo que me hubiera gustado saber cuando empecé a desarrolla...
 
Codemotion 2013 - Quiero tiempo real y lo quiero para ayer
Codemotion 2013 - Quiero tiempo real y lo quiero para ayerCodemotion 2013 - Quiero tiempo real y lo quiero para ayer
Codemotion 2013 - Quiero tiempo real y lo quiero para ayer
 
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
 
Movimientos celin robotica
Movimientos celin roboticaMovimientos celin robotica
Movimientos celin robotica
 
Migrando CI a Docker
Migrando CI a DockerMigrando CI a Docker
Migrando CI a Docker
 
Gradle Glam: Plugins Galore
Gradle Glam: Plugins GaloreGradle Glam: Plugins Galore
Gradle Glam: Plugins Galore
 
Integrando Groovy & Grails en el proceso de desarrollo
Integrando Groovy & Grails en el proceso de desarrolloIntegrando Groovy & Grails en el proceso de desarrollo
Integrando Groovy & Grails en el proceso de desarrollo
 
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
 
Etiquetas en JSP
Etiquetas en JSPEtiquetas en JSP
Etiquetas en JSP
 
Madrid-GUG - ¡Micronaut en acción!
Madrid-GUG - ¡Micronaut en acción!Madrid-GUG - ¡Micronaut en acción!
Madrid-GUG - ¡Micronaut en acción!
 
Taller PyConEs 2016: Introducción a TDD
Taller PyConEs 2016: Introducción a TDDTaller PyConEs 2016: Introducción a TDD
Taller PyConEs 2016: Introducción a TDD
 
Skipfish
SkipfishSkipfish
Skipfish
 

Similar to Redefiniendo el MVC con Grails

Jobsket.com, Grails en un proyecto real
Jobsket.com, Grails en un proyecto realJobsket.com, Grails en un proyecto real
Jobsket.com, Grails en un proyecto real
Jobsket
 
Cambia la forma de desarrollar tus aplicaciones web con groovy y grails
Cambia la forma de desarrollar tus aplicaciones web con groovy y grailsCambia la forma de desarrollar tus aplicaciones web con groovy y grails
Cambia la forma de desarrollar tus aplicaciones web con groovy y grails
Fátima Casaú Pérez
 

Similar to Redefiniendo el MVC con Grails (20)

Dragome en JavaConf Buenos Aires 2014
Dragome en JavaConf Buenos Aires 2014 Dragome en JavaConf Buenos Aires 2014
Dragome en JavaConf Buenos Aires 2014
 
Jobsket.com, Grails en un proyecto real
Jobsket.com, Grails en un proyecto realJobsket.com, Grails en un proyecto real
Jobsket.com, Grails en un proyecto real
 
Taller de Grails
Taller de GrailsTaller de Grails
Taller de Grails
 
Grails 2013 - PUCMM - Santiago - Sistemas
Grails 2013 - PUCMM - Santiago - SistemasGrails 2013 - PUCMM - Santiago - Sistemas
Grails 2013 - PUCMM - Santiago - Sistemas
 
Grails
GrailsGrails
Grails
 
[Code Camp 2009] Desarrollando sitios web escalables con ASP.NET MVC (Rodolfo...
[Code Camp 2009] Desarrollando sitios web escalables con ASP.NET MVC (Rodolfo...[Code Camp 2009] Desarrollando sitios web escalables con ASP.NET MVC (Rodolfo...
[Code Camp 2009] Desarrollando sitios web escalables con ASP.NET MVC (Rodolfo...
 
MyBatis como alternativa a Hibernate
MyBatis como alternativa a HibernateMyBatis como alternativa a Hibernate
MyBatis como alternativa a Hibernate
 
Groovy&Grails: Cambia la forma de desarrollar tus aplicaciones web
Groovy&Grails: Cambia la forma de desarrollar tus aplicaciones webGroovy&Grails: Cambia la forma de desarrollar tus aplicaciones web
Groovy&Grails: Cambia la forma de desarrollar tus aplicaciones web
 
Cambia la forma de desarrollar tus aplicaciones web con groovy y grails
Cambia la forma de desarrollar tus aplicaciones web con groovy y grailsCambia la forma de desarrollar tus aplicaciones web con groovy y grails
Cambia la forma de desarrollar tus aplicaciones web con groovy y grails
 
JQuery Mvc
JQuery   MvcJQuery   Mvc
JQuery Mvc
 
Jobsket Spring 2GX Madrid
Jobsket Spring 2GX MadridJobsket Spring 2GX Madrid
Jobsket Spring 2GX Madrid
 
Usando Django con Docker
Usando Django con DockerUsando Django con Docker
Usando Django con Docker
 
Taller de Grails
Taller de GrailsTaller de Grails
Taller de Grails
 
myprofly
myproflymyprofly
myprofly
 
Jc Web20 Open Source Why Floss2007
Jc Web20 Open Source Why Floss2007Jc Web20 Open Source Why Floss2007
Jc Web20 Open Source Why Floss2007
 
Jc Web20 Open Source Why Floss2007
Jc Web20 Open Source Why Floss2007Jc Web20 Open Source Why Floss2007
Jc Web20 Open Source Why Floss2007
 
Jerónimo López | Introducción a GraalVM | Codemotion Madrid 2018
Jerónimo López | Introducción a GraalVM | Codemotion Madrid  2018  Jerónimo López | Introducción a GraalVM | Codemotion Madrid  2018
Jerónimo López | Introducción a GraalVM | Codemotion Madrid 2018
 
Introducción a NodeJS
Introducción a NodeJSIntroducción a NodeJS
Introducción a NodeJS
 
Primeros pasos Symfony PHPVigo
Primeros pasos Symfony PHPVigoPrimeros pasos Symfony PHPVigo
Primeros pasos Symfony PHPVigo
 
Django
DjangoDjango
Django
 

More from Jose Juan R. Zuñiga

Herramientas para el desarrollo de software
Herramientas para el desarrollo de softwareHerramientas para el desarrollo de software
Herramientas para el desarrollo de software
Jose Juan R. Zuñiga
 

More from Jose Juan R. Zuñiga (15)

Apps software development with Vert.X
Apps software development with Vert.XApps software development with Vert.X
Apps software development with Vert.X
 
A lil' of Groovy for Ruby developers
A lil' of Groovy for Ruby developersA lil' of Groovy for Ruby developers
A lil' of Groovy for Ruby developers
 
Herramientas para el desarrollo de software
Herramientas para el desarrollo de softwareHerramientas para el desarrollo de software
Herramientas para el desarrollo de software
 
Agile Software Development
Agile Software DevelopmentAgile Software Development
Agile Software Development
 
Webapps testing with Groovy
Webapps testing with GroovyWebapps testing with Groovy
Webapps testing with Groovy
 
Creación de plugins con Grails
Creación de plugins con GrailsCreación de plugins con Grails
Creación de plugins con Grails
 
El desarrollador de software
El desarrollador de softwareEl desarrollador de software
El desarrollador de software
 
Groovy in Java7mx
Groovy in Java7mxGroovy in Java7mx
Groovy in Java7mx
 
Mirando hacia atrás: Retrospectivas
Mirando hacia atrás: RetrospectivasMirando hacia atrás: Retrospectivas
Mirando hacia atrás: Retrospectivas
 
Equipos en Scrum ¡oing!
Equipos en Scrum ¡oing!Equipos en Scrum ¡oing!
Equipos en Scrum ¡oing!
 
Creación de Builders y DSL's con Groovy
Creación de Builders y DSL's con GroovyCreación de Builders y DSL's con Groovy
Creación de Builders y DSL's con Groovy
 
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
 
Introduccion a grails en Campusparty
Introduccion a grails en CampuspartyIntroduccion a grails en Campusparty
Introduccion a grails en Campusparty
 
Spring
SpringSpring
Spring
 
Spring Mvc Final
Spring Mvc FinalSpring Mvc Final
Spring Mvc Final
 

Recently uploaded

redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativa
nicho110
 

Recently uploaded (10)

Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
 
Buenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxBuenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptx
 
investigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIinvestigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXI
 
redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativa
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 
Guia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos BasicosGuia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos Basicos
 

Redefiniendo el MVC con Grails

  • 1. El MVC redefinido con Grails (Controllers y GSP) José Juan R. Zuñiga (@neodevelop)
  • 2. Agenda Reuniones previas Groovy MVC Grails
  • 3. Reuniones previas 6ta. Reunión de SpringHispano.org, grails.orgmx y JavaMexico.org http://springhispano.org/?q=node/469 http://www.slideshare.net/domingo.suarez/taller-groovy
  • 4. Reuniones previas 6ta. Reunión de SpringHispano.org, grails.orgmx y JavaMexico.org http://springhispano.org/?q=node/374 http://www.slideshare.net/neodevelop/spring-mvc-final-presentation http://www.slideshare.net/domingo.suarez/grailsorgmx-priemra-reunion-presentation
  • 5. Lo más importante de todo esto…
  • 7. Hablemos de MVC MVC = Model–View–Controller Es un patrón de diseño que provee un mecanismo para construir una esbelta y limpia capa web Claramente separa el negocio, la navegación y la lógica de presentación Aunque…ya no solo aplica a Web, ahora también es implementado en Desktop( el mejor caso: Griffon - ?:D )
  • 9. Motivaciones Facilita la carga de mantenimiento Los cambios en el negocio tienen impacto mínimo en el mejor de los casos nulo Facilita el desarrollo en un equipo multidisciplinario Zapatero a tu zapato, DBA a tu base de datos, desarrollador de persistencia a tus DAO’s, Diseñador a tu diseño…. Uso de herramientas especializadas Existen lenguajes de plantillas y etiquetado que son mejores para crear HTML Facilita las pruebas Podríamos probar mucho más código fuera de un contenedor Web
  • 10.
  • 16. Anvil
  • 17. Jaffa
  • 18.
  • 23. Otros frameworks MVC Ruby RubyonRails Perl Catalyst Cyclone Maypole Solstice … PHP Zend Tlalokes Kumbia CakePHP … Python Turbogears Django .Net MonoRail Maverick ASP.Net MVC
  • 25. ¿Qué es Grails? Una plataforma para desarrollo ágil en Web Un framework MVC full-stack
  • 26. ¿Qué es Grails? Open Source Corre en la JVM
  • 27. ¿Qué es Grails? Desarrollo de aplicaciones con Groovy Altamente expresivo
  • 28. ¿Qué es Grails? Totalmente orientado a objetos Dinámico Sintaxis familiar Perfecta integración con Java
  • 29. ¿Qué es Grails? Convención sobre configuración DRY (Don’trepeatyourself)
  • 31. ¿qué me provee? MVC zero-configurationDependency_Injectiongsptransacciones JNDI groovyInternacionalización Web_FlowTag_librariesCachinghibernatescaffolding RESTLayoutsAJAX JettyUnit testingIntegrationtestinggrailsplugins quartzacegiactivemqamazon-s3 gaeaxiscamelcriteriaGORM dwrextSpring flexfreemarkerjava geoipgwtivyjpajqueryldap mail openidpaypalpdfsakaispringmvctaggableterracottatomcattwitterwebtestxfireyui
  • 33. Recordemos nuestro HolaMundo(Java) publicclassMiClase{ privateString nombre; publicvoidsetNombre(String nombre){ this.nombre = nombre; } publicStringgetNombre(){ returnthis.nombre; } publicString saluda(){ return "Hola " + nombre + "!!!"; } publicstaticvoidmain(String[] args){ MiClasem = newMiClase(); m.setNombre("SpringHispano"); System.out.println(m.saluda()); } }
  • 34. Recordemos nuestro HolaMundo(Groovy) publicclassMiClase{ privateString nombre; publicvoidsetNombre(String nombre){ this.nombre = nombre; } publicStringgetNombre(){ returnthis.nombre; } publicString saluda(){ return "Hola " + nombre + "!!!"; } publicstaticvoidmain(String[] args){ MiClasem = newMiClase(); m.setNombre("SpringHispano"); System.out.println(m.saluda()); } }
  • 35. Mejor: A la manera Groovy!!! classMiClase{ String nombre def saluda(){ return "Hola $nombre !!!"; } } defm = newMiClase() m.setNombre("SpringHispano") println(m.saluda())
  • 36. MVC en Grails Modelo Clases del dominio Validaciones en las clases de dominio GORM Se puede personalizar el mapeo Relaciones entre clases Uno a Uno Uno a Muchos Muchos a Muchos Herencia Objetos embedidos Testing
  • 37. MVC en Grails Controller Definidos por Acciones en Closures Provee de atributos en el request que facilitan el manejo Ejemplos: flash, params Provee un scope adicional a context y session: flash Mejora en el manejo del Data Binding a través de params CommandObjects Restricciones en los métodos HTTP Manejo de upload de archivos más sencillo Interceptores Filtros Testing
  • 38. MVC en Grails View Scriptlets GSP Provee de una librería de tags poderosa Tags lógicos Tags iterativos Tags para crear vínculos Incluso podemos crear las propias :D Sencillismo manejo de formularios a través de Tags Paginación Uso de templates Ajax Testing
  • 39. Un ejemplo… Claro si no a que venimos a la reunión… Creemos una aplicación… Veamos que podemos hacer enfocandonos en el MVC…
  • 40. Más Grails Mappings Internacionalización Ajax WebFlow GORM Servicios Plugins Seguridad Web Services Más…
  • 41. ¿Preguntas? …o comentarios… http://springhispano.org http://grails.org.mx @neodevelop