SlideShare una empresa de Scribd logo
Desarrollo en 4G(Groovy, Grails, Git, GoogleAppEngine) José Juan Reyes Zuñiga CIO SynergyJ
2 Objetivo Demostrarlasventajascompetitivas al desarrollarcon Groovy & Grails, llevar el control del versionado con Git ysimular la puesta en producción de la aplicación.
Agenda Groovy Grails Git Google AppEngine 3
Groovy…¿Qué es…? Es un lenguaje dinámico para la JVM Construido con la fuerza de Java pero incluyendo características poderosas inspiradas en lenguajes como Python, Ruby y Smalltalk Es un proyecto con licencia Open Source-Apache Gramática relajada derivada de Java 5 Integración fluida con todos los objetos Java y los cientos de librerías Compila a bytecode Java, por lo tanto, se puede usar donde sea Simplifica las pruebas Aumenta la productividad del desarrollador Su curva de aprendizaje mínima
HolaMundo en Java publicclassHolaMundo { privateStringnombre; publicStringgetNombre() { returnnombre; 	} publicvoidsetNombre(String nombre) { this.nombre = nombre; 	} publicString saluda() { return"Hola " + this.nombre + " !!!"; 	} publicstaticvoidmain(String[] args) { HolaMundo objeto = newHolaMundo(); objeto.setNombre("@SG09Conf"); System.out.println(objeto.saluda()); 	} }
HolaMundo en Groovy publicclassHolaMundo { privateStringnombre; publicStringgetNombre() { return nombre; 	} publicvoidsetNombre(String nombre) { this.nombre = nombre; 	} publicString saluda() { return"Hola " + this.nombre + " !!!"; 	} publicstaticvoidmain(String[] args) { HolaMundo objeto = newHolaMundo(); objeto.setNombre("@SG09Conf"); System.out.println(objeto.saluda()); 	} }
Mejor a la manera Groovy classHolaMundo { Stringnombre def saluda() { "Hola  ${this.nombre} !!!" } } def objeto = newHolaMundo(nombre:"@SGConf") println(objeto.saluda())
¿Cómo llegamos a esto…? Tener el JDK instalado Establecer la variable JAVA_HOME y agregarla al PATH en el subdirectorio /bin Descargamos la distribución de Groovy en http://groovy.codehaus.org/ Creamos una variable de entorno GROOVY_HOME apuntando al directorio donde se descomprimió la distribución Adicionalmente, incluir en el PATH el directorio /bin de la variable de entorno GROOVY_HOME, es decir: %GROOVY_HOME%/bin Let’s rock thecode!!!
+ Groovy en una mirada Totalmente Orientado a objetos Perfecta integración con Java Closures Convención de JavaBeans Esencia vs. Ceremonia Aritmética con BigDecimal por default para la operación de punto flotante API’s amigables y prácticas XML, JDBC, JMX, Swing DSL(DomainSpecificLanguage) Builders Sobrecarga de operadores GDK
Azúcar sintáctica + GDK Listas defnumeros = [1,2,3,4,5] Mapas def mapa = [DF:'Distrito Federal',MTY:'Monterrey'] Rangos def rangos =  199..299 Asignación Múltiple def (a,b) = [10,20] Return Opcional defmetodo(bool) { if(bool) 1else0 }
Groovy en profundidad Meta-programación La habilidad de un lenguaje para modificarse a sí mismo Transformaciones AST @Singleton @Inmutable, @Lazy, @Delegate @Newify @Category & @Mixin @PackageScope @Bindable & @Vetoable @Grab
Ahora hablemos de …
¿Que es Grails? Una plataforma para desarrollo ágil en Web Un framework MVC full-stack Un proyecto Open Source Corre en la JVM Desarrollo de Aplicaciones con Groovy Altamente expresivo Totalmente orientado a Objetos Dinámico Sintaxis familiar Perfecta integración con Java Convención sobre configuración DRY(Don'tRepeatYourself)
Stack de tecnologías
¿qué me provee? MVC zero-configurationDependency_Injectiongsptransacciones JNDI groovyInternacionalización Web_FlowTag_librariesCachinghibernatescaffolding REST LayoutsAJAX JettyUnit testingIntegrationtestinggrailsplugins quartzacegiactivemqamazon-s3 gaeaxiscamelcriteriaGORM dwrextSpring  flexfreemarkerjava geoipgwtivyjpajqueryldap mail openidpaypalpdfsakaispringmvctaggableterracottatomcattwitterwebtestxfireyui
Let’scodeagain!!!
Más Grails… Mappings Internacionalización Ajax WebFlow GORM Servicios Plugins Seguridad Web Services Más…
La vida y los proyectos… “…así la vida como los proyectos de software son aburridos si se cuentan y se desarrollan de manera líneal…”
Git– Control de versiones Git es: “Un sistema de control de versiones distribuido libre y open source, diseñado para manejar cada objeto en proyectos pequeños y grandes con velocidad y eficiencia…” Creado por Linus Torvalds
¿Distribuido? Colaboración Cambios sin perturbar a los demás Las ramas(branches) que afectan al repositorio local son inaceptables Confianza en tus datos Sin tener que creer implícitamente en los demás o en el hosting Liberaciones de Ingeniería Ciclos concurrentes de desarrollo/pruebas/liberaciones
Aaahhh Distribuido….
Diferencias y ventajas con CVCS No hay copias de referencia, solo copias de trabajo locales Las operaciones más comunes son regularmente más rápidas ya que no tienen que comunicarse con un servidor central No hay necesidad de hacer update antes de hacer commit No hay problemas con la red y la latencia generada No necesitamos hacer una instalación en un servidor remoto Los desarrolladores pueden trabajar sin estar conectados a su red local o a Internet Branches experimentales Performance
Formas de trabajo con Git & DCVS Alone En pares Centralizado Descentralizado
Instalación de Git En función del Sistema Operativo: Basado en RedHat RPM Basado en Debian Debs Windows .exe OS X DMG Solaris
Continuemos entonces…
Puesta en producción…
Infraestructura
Una opción…
Google AppEngine Solución de CloudComputing de Google Correr aplicaciones en la infraestructura escalable de Google El pago es basado en los recursos usados: almacenamiento, ancho de banda(medido en GB) De manera gratuita: Hasta 500MB de almacenamiento Hasta 5 millones de páginas vistas por mes Ahora está disponible para la JVM Por lo tanto para Scala, JRuby y... GROOVY!!!
Entorno GAE Corre en Java 6(con algunas limitaciones) El request será terminado si no se completa en 30 segundos, arrojando excepción Además: No hay sockets No hay hilos o timers No hay JNDI System.gc(),System.exit(),etc, no hacen nada Algunos problemas con el classloader
Escalabilidad en GAE 30 requests dinámicos simultáneos El tiempo de procesamiento del lado servidor es de 75ms Alrededor de 400 request/seg. Sin latencia  adicional
Servicios en GAE URL Fetch Mail Memcache Manipulación de Imágenes Manejo de usuarios Consola de administración Calendarización
Almacenamiento en GAE Datastore Almacenamiento de datos distribuido y transaccional Filtrado y ordenamiento por el valor del propiedad No es relacional, es “esquemático”
Persistencia en GAE Toda la persistencia es definida por clases @not@d@s JDO JPA Todo es almacenado en BigTable Es masivamente escalable Es un sistema de almacenamiento distribuido Usada por Google para muchas cosas Para Java, la API usa el optimizador de Datanucleus
Desarrollo en GAE Cuenta con un SDK descargable Incluye un webserver Emula los servicios Incluye una herramienta de Upload Soporta Java 5 y 6 Existen un plugin de GAE para Eclipse y uno para Grails Debemos de cubrir un proceso de registro sencillo Solo podemos subir 10 aplicaciones(gratuitamente)
Plugin de GAE para Grails Crear una appGrails que coincida con el nombre de nuestra app GAE Desinstalar el plugin de Hibernate Instalar el plugin app-engine(previokit de GAE instalado) Establecer la versión(a 1 preferentemente) Desplegar Listo..
GAE es una opción Existen también: Amazon EC2 SpringSourceCloudFoundry Entre otros…
All in one-place
em@il: jjuan.reyes@synergyj.com facebook, flickr, digg, twitter, delicious: neodevelop Comunidad: http://grails.org.mx Preguntas y Respuestas

Más contenido relacionado

La actualidad más candente

T3chFest 2016 - De Java a Groovy: ¡Hora de Aventuras!
T3chFest 2016 - De Java a Groovy: ¡Hora de Aventuras!T3chFest 2016 - De Java a Groovy: ¡Hora de Aventuras!
T3chFest 2016 - De Java a Groovy: ¡Hora de Aventuras!
Iván López Martín
 
Taller Grails
Taller GrailsTaller Grails
Taller Grails
Dani Latorre
 
Introducción a groovy & grails
Introducción a groovy & grailsIntroducción a groovy & grails
Introducción a groovy & grails
Fátima Casaú Pérez
 
Grails
GrailsGrails
Codemotion 2015 crash y youdebug
Codemotion 2015   crash y youdebugCodemotion 2015   crash y youdebug
Codemotion 2015 crash y youdebug
jmiguel rodriguez
 
Grails: Aumenta tu productividad en tus aplicaciones web Java
Grails: Aumenta tu productividad en tus aplicaciones web JavaGrails: Aumenta tu productividad en tus aplicaciones web Java
Grails: Aumenta tu productividad en tus aplicaciones web JavaDani Latorre
 
Dev Tools para Kubernetes - Codemotion 2019
Dev Tools para Kubernetes - Codemotion 2019Dev Tools para Kubernetes - Codemotion 2019
Dev Tools para Kubernetes - Codemotion 2019
Micael Gallego
 
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
Iván López Martín
 
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
Fran García
 
Atica Dev Ops II
Atica Dev Ops IIAtica Dev Ops II
clojure-objc
clojure-objcclojure-objc
clojure-objc
Gal Dolber
 
clojure-objc
clojure-objcclojure-objc
clojure-objc
Gal Dolber
 
Spring boot + spock
Spring boot + spockSpring boot + spock
Spring boot + spock
Fátima Casaú Pérez
 
Desarrollo tecnologias software_libre_open_source
Desarrollo tecnologias software_libre_open_sourceDesarrollo tecnologias software_libre_open_source
Desarrollo tecnologias software_libre_open_sourceMario IC
 
Introducción a CoffeeScript
Introducción a CoffeeScriptIntroducción a CoffeeScript
Introducción a CoffeeScript
Javier Ferrer González
 
Curso Angular 9 - CodeURJC - Marzo 2020
Curso Angular 9 - CodeURJC - Marzo 2020Curso Angular 9 - CodeURJC - Marzo 2020
Curso Angular 9 - CodeURJC - Marzo 2020
Micael Gallego
 

La actualidad más candente (19)

Seminario Grails
Seminario GrailsSeminario Grails
Seminario Grails
 
T3chFest 2016 - De Java a Groovy: ¡Hora de Aventuras!
T3chFest 2016 - De Java a Groovy: ¡Hora de Aventuras!T3chFest 2016 - De Java a Groovy: ¡Hora de Aventuras!
T3chFest 2016 - De Java a Groovy: ¡Hora de Aventuras!
 
Grails en el Fonasol
Grails en el FonasolGrails en el Fonasol
Grails en el Fonasol
 
Taller Grails
Taller GrailsTaller Grails
Taller Grails
 
Introducción a groovy & grails
Introducción a groovy & grailsIntroducción a groovy & grails
Introducción a groovy & grails
 
Grails
GrailsGrails
Grails
 
Codemotion 2015 crash y youdebug
Codemotion 2015   crash y youdebugCodemotion 2015   crash y youdebug
Codemotion 2015 crash y youdebug
 
Grails: Aumenta tu productividad en tus aplicaciones web Java
Grails: Aumenta tu productividad en tus aplicaciones web JavaGrails: Aumenta tu productividad en tus aplicaciones web Java
Grails: Aumenta tu productividad en tus aplicaciones web Java
 
Grails en SG08
Grails en SG08Grails en SG08
Grails en SG08
 
Dev Tools para Kubernetes - Codemotion 2019
Dev Tools para Kubernetes - Codemotion 2019Dev Tools para Kubernetes - Codemotion 2019
Dev Tools para Kubernetes - Codemotion 2019
 
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
 
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
 
Atica Dev Ops II
Atica Dev Ops IIAtica Dev Ops II
Atica Dev Ops II
 
clojure-objc
clojure-objcclojure-objc
clojure-objc
 
clojure-objc
clojure-objcclojure-objc
clojure-objc
 
Spring boot + spock
Spring boot + spockSpring boot + spock
Spring boot + spock
 
Desarrollo tecnologias software_libre_open_source
Desarrollo tecnologias software_libre_open_sourceDesarrollo tecnologias software_libre_open_source
Desarrollo tecnologias software_libre_open_source
 
Introducción a CoffeeScript
Introducción a CoffeeScriptIntroducción a CoffeeScript
Introducción a CoffeeScript
 
Curso Angular 9 - CodeURJC - Marzo 2020
Curso Angular 9 - CodeURJC - Marzo 2020Curso Angular 9 - CodeURJC - Marzo 2020
Curso Angular 9 - CodeURJC - Marzo 2020
 

Similar a Desarrollo en 4G(Groovy, Grails, Git, GoogleAppEngine)

Taller de Grails
Taller de GrailsTaller de Grails
Taller de Grails
Jobsket
 
grails.org.mx Primera Reunion
grails.org.mx Primera Reuniongrails.org.mx Primera Reunion
grails.org.mx Primera Reunion
Domingo Suarez Torres
 
GraalVM - MálagaJUG 2018-11-29
GraalVM - MálagaJUG 2018-11-29GraalVM - MálagaJUG 2018-11-29
GraalVM - MálagaJUG 2018-11-29
Jorge Hidalgo
 
Webinar: Groovy y la producttividad para el desarrollador Java
Webinar: Groovy y la producttividad para el desarrollador JavaWebinar: Groovy y la producttividad para el desarrollador Java
Webinar: Groovy y la producttividad para el desarrollador Java
Domingo Suarez Torres
 
Vaadin y Grails Barcamp 2013
Vaadin y Grails Barcamp 2013Vaadin y Grails Barcamp 2013
Vaadin y Grails Barcamp 2013
Carlos Camacho
 
Madrid-GUG (Alicante) 2017 - De Java a Groovy: ¡Hora de Aventuras!
Madrid-GUG (Alicante) 2017 - De Java a Groovy: ¡Hora de Aventuras!Madrid-GUG (Alicante) 2017 - De Java a Groovy: ¡Hora de Aventuras!
Madrid-GUG (Alicante) 2017 - De Java a Groovy: ¡Hora de Aventuras!
Iván López Martín
 
Codemotion Madrid 2016 - De Java a Groovy: ¡Hora de Aventuras!
Codemotion Madrid 2016 - De Java a Groovy: ¡Hora de Aventuras!Codemotion Madrid 2016 - De Java a Groovy: ¡Hora de Aventuras!
Codemotion Madrid 2016 - De Java a Groovy: ¡Hora de Aventuras!
Iván López Martín
 
Grails and Continuous delivery
Grails and Continuous deliveryGrails and Continuous delivery
Grails and Continuous delivery
Info ArtdeCode
 
Grails en Expo FISI 2011
Grails en Expo FISI 2011Grails en Expo FISI 2011
Grails en Expo FISI 2011
jose diaz
 
Dragome en JavaConf Buenos Aires 2014
Dragome en JavaConf Buenos Aires 2014 Dragome en JavaConf Buenos Aires 2014
Dragome en JavaConf Buenos Aires 2014
Fernando Petrola
 
Aprendiendo GWT
Aprendiendo GWTAprendiendo GWT
Aprendiendo GWT
Manuel Carrasco Moñino
 
Gwt I - entendiendo gwt
Gwt I - entendiendo gwtGwt I - entendiendo gwt
Gwt I - entendiendo gwt
Manuel Carrasco Moñino
 
JAVA3.0
JAVA3.0JAVA3.0
JAVA3.0
josemanuel2
 
JRuby al Rescate de J2EE
JRuby al Rescate de J2EEJRuby al Rescate de J2EE
JRuby al Rescate de J2EE
Jorge Alberto Rodríguez Suárez
 
Net vs java
Net vs javaNet vs java

Similar a Desarrollo en 4G(Groovy, Grails, Git, GoogleAppEngine) (20)

Introduccion a Groovy
Introduccion a GroovyIntroduccion a Groovy
Introduccion a Groovy
 
Taller de Grails
Taller de GrailsTaller de Grails
Taller de Grails
 
Charla grails
Charla grailsCharla grails
Charla grails
 
grails.org.mx Primera Reunion
grails.org.mx Primera Reuniongrails.org.mx Primera Reunion
grails.org.mx Primera Reunion
 
GraalVM - MálagaJUG 2018-11-29
GraalVM - MálagaJUG 2018-11-29GraalVM - MálagaJUG 2018-11-29
GraalVM - MálagaJUG 2018-11-29
 
Webinar: Groovy y la producttividad para el desarrollador Java
Webinar: Groovy y la producttividad para el desarrollador JavaWebinar: Groovy y la producttividad para el desarrollador Java
Webinar: Groovy y la producttividad para el desarrollador Java
 
5 lenguaje
5 lenguaje5 lenguaje
5 lenguaje
 
Vaadin y Grails Barcamp 2013
Vaadin y Grails Barcamp 2013Vaadin y Grails Barcamp 2013
Vaadin y Grails Barcamp 2013
 
Madrid-GUG (Alicante) 2017 - De Java a Groovy: ¡Hora de Aventuras!
Madrid-GUG (Alicante) 2017 - De Java a Groovy: ¡Hora de Aventuras!Madrid-GUG (Alicante) 2017 - De Java a Groovy: ¡Hora de Aventuras!
Madrid-GUG (Alicante) 2017 - De Java a Groovy: ¡Hora de Aventuras!
 
Codemotion Madrid 2016 - De Java a Groovy: ¡Hora de Aventuras!
Codemotion Madrid 2016 - De Java a Groovy: ¡Hora de Aventuras!Codemotion Madrid 2016 - De Java a Groovy: ¡Hora de Aventuras!
Codemotion Madrid 2016 - De Java a Groovy: ¡Hora de Aventuras!
 
5 lenguaje (caso de uso)
5 lenguaje  (caso de uso)5 lenguaje  (caso de uso)
5 lenguaje (caso de uso)
 
Grails and Continuous delivery
Grails and Continuous deliveryGrails and Continuous delivery
Grails and Continuous delivery
 
Grails en Expo FISI 2011
Grails en Expo FISI 2011Grails en Expo FISI 2011
Grails en Expo FISI 2011
 
Dragome en JavaConf Buenos Aires 2014
Dragome en JavaConf Buenos Aires 2014 Dragome en JavaConf Buenos Aires 2014
Dragome en JavaConf Buenos Aires 2014
 
Aprendiendo GWT
Aprendiendo GWTAprendiendo GWT
Aprendiendo GWT
 
Gwt I - entendiendo gwt
Gwt I - entendiendo gwtGwt I - entendiendo gwt
Gwt I - entendiendo gwt
 
Pres1
Pres1Pres1
Pres1
 
JAVA3.0
JAVA3.0JAVA3.0
JAVA3.0
 
JRuby al Rescate de J2EE
JRuby al Rescate de J2EEJRuby al Rescate de J2EE
JRuby al Rescate de J2EE
 
Net vs java
Net vs javaNet vs java
Net vs java
 

Más de Jose Juan R. Zuñiga

Apps software development with Vert.X
Apps software development with Vert.XApps software development with Vert.X
Apps software development with Vert.X
Jose Juan R. Zuñiga
 
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
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 softwareJose Juan R. Zuñiga
 
Agile Software Development
Agile Software DevelopmentAgile Software Development
Agile Software Development
Jose Juan R. Zuñiga
 
Webapps testing with Groovy
Webapps testing with GroovyWebapps testing with Groovy
Webapps testing with Groovy
Jose Juan R. Zuñiga
 
Creación de plugins con Grails
Creación de plugins con GrailsCreación de plugins con Grails
Creación de plugins con Grails
Jose Juan R. Zuñiga
 
El desarrollador de software
El desarrollador de softwareEl desarrollador de software
El desarrollador de software
Jose Juan R. Zuñiga
 
Groovy in Java7mx
Groovy in Java7mxGroovy in Java7mx
Groovy in Java7mx
Jose Juan R. Zuñiga
 
Mirando hacia atrás: Retrospectivas
Mirando hacia atrás: RetrospectivasMirando hacia atrás: Retrospectivas
Mirando hacia atrás: Retrospectivas
Jose Juan R. Zuñiga
 
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
Jose Juan R. Zuñiga
 
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
Jose Juan R. Zuñiga
 
15a. Reunion de SpringHispano.org y grails.org.mx
15a. Reunion de SpringHispano.org y grails.org.mx15a. Reunion de SpringHispano.org y grails.org.mx
15a. Reunion de SpringHispano.org y grails.org.mx
Jose Juan R. Zuñiga
 
Introduccion a grails en Campusparty
Introduccion a grails en CampuspartyIntroduccion a grails en Campusparty
Introduccion a grails en Campusparty
Jose Juan R. Zuñiga
 
Spring
SpringSpring
Spring Mvc Final
Spring Mvc FinalSpring Mvc Final
Spring Mvc Final
Jose Juan R. Zuñiga
 

Más de Jose Juan R. Zuñiga (16)

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!
 
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
 
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
 
15a. Reunion de SpringHispano.org y grails.org.mx
15a. Reunion de SpringHispano.org y grails.org.mx15a. Reunion de SpringHispano.org y grails.org.mx
15a. Reunion de SpringHispano.org y grails.org.mx
 
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
 

Último

DESARROLO DE HABILIDADES DE PENSAMIENTO.pdf
DESARROLO DE HABILIDADES DE PENSAMIENTO.pdfDESARROLO DE HABILIDADES DE PENSAMIENTO.pdf
DESARROLO DE HABILIDADES DE PENSAMIENTO.pdf
marianabz2403
 
Estructuras básicas_ conceptos de programación (1).docx
Estructuras básicas_ conceptos de programación  (1).docxEstructuras básicas_ conceptos de programación  (1).docx
Estructuras básicas_ conceptos de programación (1).docx
SamuelRamirez83524
 
ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024
ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024
ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024
DanielErazoMedina
 
Trabajo Coding For kids 1 y 2 grado 9-4.pdf
Trabajo Coding For kids 1 y 2 grado 9-4.pdfTrabajo Coding For kids 1 y 2 grado 9-4.pdf
Trabajo Coding For kids 1 y 2 grado 9-4.pdf
cj3806354
 
Trabajo Coding For kids 1 y 2 grado 9-4.pdf
Trabajo Coding For kids 1 y 2 grado 9-4.pdfTrabajo Coding For kids 1 y 2 grado 9-4.pdf
Trabajo Coding For kids 1 y 2 grado 9-4.pdf
jjfch3110
 
Conceptos Básicos de Programación Proyecto
Conceptos Básicos de Programación ProyectoConceptos Básicos de Programación Proyecto
Conceptos Básicos de Programación Proyecto
cofferub
 
Robótica educativa para la eduacion primaria .pptx
Robótica educativa para la eduacion primaria .pptxRobótica educativa para la eduacion primaria .pptx
Robótica educativa para la eduacion primaria .pptx
44652726
 
biogas industrial para guiarse en proyectos
biogas industrial para guiarse en proyectosbiogas industrial para guiarse en proyectos
biogas industrial para guiarse en proyectos
Luis Enrique Zafra Haro
 
Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...
Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...
Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...
Telefónica
 
Conceptos Básicos de Programación. Tecnología
Conceptos Básicos de Programación. TecnologíaConceptos Básicos de Programación. Tecnología
Conceptos Básicos de Programación. Tecnología
coloradxmaria
 
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
vazquezgarciajesusma
 
Estructuras Básicas_ Conceptos Basicos De Programacion.pdf
Estructuras Básicas_ Conceptos Basicos De Programacion.pdfEstructuras Básicas_ Conceptos Basicos De Programacion.pdf
Estructuras Básicas_ Conceptos Basicos De Programacion.pdf
IsabellaRubio6
 
Desarrollo de Habilidades de Pensamiento.
Desarrollo de Habilidades de Pensamiento.Desarrollo de Habilidades de Pensamiento.
Desarrollo de Habilidades de Pensamiento.
AlejandraCasallas7
 
proyecto invernadero desde el departamento de tecnología para Erasmus
proyecto invernadero desde el departamento de tecnología para Erasmusproyecto invernadero desde el departamento de tecnología para Erasmus
proyecto invernadero desde el departamento de tecnología para Erasmus
raquelariza02
 
Posnarrativas en la era de la IA generativa
Posnarrativas en la era de la IA generativaPosnarrativas en la era de la IA generativa
Posnarrativas en la era de la IA generativa
Fernando Villares
 
trabajo de tecnologia, segundo periodo 9-6f
trabajo de tecnologia, segundo periodo 9-6ftrabajo de tecnologia, segundo periodo 9-6f
trabajo de tecnologia, segundo periodo 9-6f
zoecaicedosalazar
 
Estructuras Básicas_Tecnología_Grado10-7.pdf
Estructuras Básicas_Tecnología_Grado10-7.pdfEstructuras Básicas_Tecnología_Grado10-7.pdf
Estructuras Básicas_Tecnología_Grado10-7.pdf
cristianrb0324
 
INFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTAL
INFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTALINFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTAL
INFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTAL
CrystalRomero18
 
Estructuras básicas_ conceptos básicos de programación.pdf
Estructuras básicas_  conceptos básicos de programación.pdfEstructuras básicas_  conceptos básicos de programación.pdf
Estructuras básicas_ conceptos básicos de programación.pdf
ItsSofi
 
3Redu: Responsabilidad, Resiliencia y Respeto
3Redu: Responsabilidad, Resiliencia y Respeto3Redu: Responsabilidad, Resiliencia y Respeto
3Redu: Responsabilidad, Resiliencia y Respeto
cdraco
 

Último (20)

DESARROLO DE HABILIDADES DE PENSAMIENTO.pdf
DESARROLO DE HABILIDADES DE PENSAMIENTO.pdfDESARROLO DE HABILIDADES DE PENSAMIENTO.pdf
DESARROLO DE HABILIDADES DE PENSAMIENTO.pdf
 
Estructuras básicas_ conceptos de programación (1).docx
Estructuras básicas_ conceptos de programación  (1).docxEstructuras básicas_ conceptos de programación  (1).docx
Estructuras básicas_ conceptos de programación (1).docx
 
ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024
ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024
ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024
 
Trabajo Coding For kids 1 y 2 grado 9-4.pdf
Trabajo Coding For kids 1 y 2 grado 9-4.pdfTrabajo Coding For kids 1 y 2 grado 9-4.pdf
Trabajo Coding For kids 1 y 2 grado 9-4.pdf
 
Trabajo Coding For kids 1 y 2 grado 9-4.pdf
Trabajo Coding For kids 1 y 2 grado 9-4.pdfTrabajo Coding For kids 1 y 2 grado 9-4.pdf
Trabajo Coding For kids 1 y 2 grado 9-4.pdf
 
Conceptos Básicos de Programación Proyecto
Conceptos Básicos de Programación ProyectoConceptos Básicos de Programación Proyecto
Conceptos Básicos de Programación Proyecto
 
Robótica educativa para la eduacion primaria .pptx
Robótica educativa para la eduacion primaria .pptxRobótica educativa para la eduacion primaria .pptx
Robótica educativa para la eduacion primaria .pptx
 
biogas industrial para guiarse en proyectos
biogas industrial para guiarse en proyectosbiogas industrial para guiarse en proyectos
biogas industrial para guiarse en proyectos
 
Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...
Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...
Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...
 
Conceptos Básicos de Programación. Tecnología
Conceptos Básicos de Programación. TecnologíaConceptos Básicos de Programación. Tecnología
Conceptos Básicos de Programación. Tecnología
 
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
 
Estructuras Básicas_ Conceptos Basicos De Programacion.pdf
Estructuras Básicas_ Conceptos Basicos De Programacion.pdfEstructuras Básicas_ Conceptos Basicos De Programacion.pdf
Estructuras Básicas_ Conceptos Basicos De Programacion.pdf
 
Desarrollo de Habilidades de Pensamiento.
Desarrollo de Habilidades de Pensamiento.Desarrollo de Habilidades de Pensamiento.
Desarrollo de Habilidades de Pensamiento.
 
proyecto invernadero desde el departamento de tecnología para Erasmus
proyecto invernadero desde el departamento de tecnología para Erasmusproyecto invernadero desde el departamento de tecnología para Erasmus
proyecto invernadero desde el departamento de tecnología para Erasmus
 
Posnarrativas en la era de la IA generativa
Posnarrativas en la era de la IA generativaPosnarrativas en la era de la IA generativa
Posnarrativas en la era de la IA generativa
 
trabajo de tecnologia, segundo periodo 9-6f
trabajo de tecnologia, segundo periodo 9-6ftrabajo de tecnologia, segundo periodo 9-6f
trabajo de tecnologia, segundo periodo 9-6f
 
Estructuras Básicas_Tecnología_Grado10-7.pdf
Estructuras Básicas_Tecnología_Grado10-7.pdfEstructuras Básicas_Tecnología_Grado10-7.pdf
Estructuras Básicas_Tecnología_Grado10-7.pdf
 
INFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTAL
INFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTALINFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTAL
INFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTAL
 
Estructuras básicas_ conceptos básicos de programación.pdf
Estructuras básicas_  conceptos básicos de programación.pdfEstructuras básicas_  conceptos básicos de programación.pdf
Estructuras básicas_ conceptos básicos de programación.pdf
 
3Redu: Responsabilidad, Resiliencia y Respeto
3Redu: Responsabilidad, Resiliencia y Respeto3Redu: Responsabilidad, Resiliencia y Respeto
3Redu: Responsabilidad, Resiliencia y Respeto
 

Desarrollo en 4G(Groovy, Grails, Git, GoogleAppEngine)

  • 1. Desarrollo en 4G(Groovy, Grails, Git, GoogleAppEngine) José Juan Reyes Zuñiga CIO SynergyJ
  • 2. 2 Objetivo Demostrarlasventajascompetitivas al desarrollarcon Groovy & Grails, llevar el control del versionado con Git ysimular la puesta en producción de la aplicación.
  • 3. Agenda Groovy Grails Git Google AppEngine 3
  • 4. Groovy…¿Qué es…? Es un lenguaje dinámico para la JVM Construido con la fuerza de Java pero incluyendo características poderosas inspiradas en lenguajes como Python, Ruby y Smalltalk Es un proyecto con licencia Open Source-Apache Gramática relajada derivada de Java 5 Integración fluida con todos los objetos Java y los cientos de librerías Compila a bytecode Java, por lo tanto, se puede usar donde sea Simplifica las pruebas Aumenta la productividad del desarrollador Su curva de aprendizaje mínima
  • 5. HolaMundo en Java publicclassHolaMundo { privateStringnombre; publicStringgetNombre() { returnnombre; } publicvoidsetNombre(String nombre) { this.nombre = nombre; } publicString saluda() { return"Hola " + this.nombre + " !!!"; } publicstaticvoidmain(String[] args) { HolaMundo objeto = newHolaMundo(); objeto.setNombre("@SG09Conf"); System.out.println(objeto.saluda()); } }
  • 6. HolaMundo en Groovy publicclassHolaMundo { privateStringnombre; publicStringgetNombre() { return nombre; } publicvoidsetNombre(String nombre) { this.nombre = nombre; } publicString saluda() { return"Hola " + this.nombre + " !!!"; } publicstaticvoidmain(String[] args) { HolaMundo objeto = newHolaMundo(); objeto.setNombre("@SG09Conf"); System.out.println(objeto.saluda()); } }
  • 7. Mejor a la manera Groovy classHolaMundo { Stringnombre def saluda() { "Hola ${this.nombre} !!!" } } def objeto = newHolaMundo(nombre:"@SGConf") println(objeto.saluda())
  • 8. ¿Cómo llegamos a esto…? Tener el JDK instalado Establecer la variable JAVA_HOME y agregarla al PATH en el subdirectorio /bin Descargamos la distribución de Groovy en http://groovy.codehaus.org/ Creamos una variable de entorno GROOVY_HOME apuntando al directorio donde se descomprimió la distribución Adicionalmente, incluir en el PATH el directorio /bin de la variable de entorno GROOVY_HOME, es decir: %GROOVY_HOME%/bin Let’s rock thecode!!!
  • 9. + Groovy en una mirada Totalmente Orientado a objetos Perfecta integración con Java Closures Convención de JavaBeans Esencia vs. Ceremonia Aritmética con BigDecimal por default para la operación de punto flotante API’s amigables y prácticas XML, JDBC, JMX, Swing DSL(DomainSpecificLanguage) Builders Sobrecarga de operadores GDK
  • 10. Azúcar sintáctica + GDK Listas defnumeros = [1,2,3,4,5] Mapas def mapa = [DF:'Distrito Federal',MTY:'Monterrey'] Rangos def rangos = 199..299 Asignación Múltiple def (a,b) = [10,20] Return Opcional defmetodo(bool) { if(bool) 1else0 }
  • 11. Groovy en profundidad Meta-programación La habilidad de un lenguaje para modificarse a sí mismo Transformaciones AST @Singleton @Inmutable, @Lazy, @Delegate @Newify @Category & @Mixin @PackageScope @Bindable & @Vetoable @Grab
  • 13. ¿Que es Grails? Una plataforma para desarrollo ágil en Web Un framework MVC full-stack Un proyecto Open Source Corre en la JVM Desarrollo de Aplicaciones con Groovy Altamente expresivo Totalmente orientado a Objetos Dinámico Sintaxis familiar Perfecta integración con Java Convención sobre configuración DRY(Don'tRepeatYourself)
  • 15. ¿qué me provee? MVC zero-configurationDependency_Injectiongsptransacciones JNDI groovyInternacionalización Web_FlowTag_librariesCachinghibernatescaffolding REST LayoutsAJAX JettyUnit testingIntegrationtestinggrailsplugins quartzacegiactivemqamazon-s3 gaeaxiscamelcriteriaGORM dwrextSpring flexfreemarkerjava geoipgwtivyjpajqueryldap mail openidpaypalpdfsakaispringmvctaggableterracottatomcattwitterwebtestxfireyui
  • 17. Más Grails… Mappings Internacionalización Ajax WebFlow GORM Servicios Plugins Seguridad Web Services Más…
  • 18. La vida y los proyectos… “…así la vida como los proyectos de software son aburridos si se cuentan y se desarrollan de manera líneal…”
  • 19. Git– Control de versiones Git es: “Un sistema de control de versiones distribuido libre y open source, diseñado para manejar cada objeto en proyectos pequeños y grandes con velocidad y eficiencia…” Creado por Linus Torvalds
  • 20. ¿Distribuido? Colaboración Cambios sin perturbar a los demás Las ramas(branches) que afectan al repositorio local son inaceptables Confianza en tus datos Sin tener que creer implícitamente en los demás o en el hosting Liberaciones de Ingeniería Ciclos concurrentes de desarrollo/pruebas/liberaciones
  • 22. Diferencias y ventajas con CVCS No hay copias de referencia, solo copias de trabajo locales Las operaciones más comunes son regularmente más rápidas ya que no tienen que comunicarse con un servidor central No hay necesidad de hacer update antes de hacer commit No hay problemas con la red y la latencia generada No necesitamos hacer una instalación en un servidor remoto Los desarrolladores pueden trabajar sin estar conectados a su red local o a Internet Branches experimentales Performance
  • 23. Formas de trabajo con Git & DCVS Alone En pares Centralizado Descentralizado
  • 24. Instalación de Git En función del Sistema Operativo: Basado en RedHat RPM Basado en Debian Debs Windows .exe OS X DMG Solaris
  • 29. Google AppEngine Solución de CloudComputing de Google Correr aplicaciones en la infraestructura escalable de Google El pago es basado en los recursos usados: almacenamiento, ancho de banda(medido en GB) De manera gratuita: Hasta 500MB de almacenamiento Hasta 5 millones de páginas vistas por mes Ahora está disponible para la JVM Por lo tanto para Scala, JRuby y... GROOVY!!!
  • 30. Entorno GAE Corre en Java 6(con algunas limitaciones) El request será terminado si no se completa en 30 segundos, arrojando excepción Además: No hay sockets No hay hilos o timers No hay JNDI System.gc(),System.exit(),etc, no hacen nada Algunos problemas con el classloader
  • 31. Escalabilidad en GAE 30 requests dinámicos simultáneos El tiempo de procesamiento del lado servidor es de 75ms Alrededor de 400 request/seg. Sin latencia adicional
  • 32. Servicios en GAE URL Fetch Mail Memcache Manipulación de Imágenes Manejo de usuarios Consola de administración Calendarización
  • 33. Almacenamiento en GAE Datastore Almacenamiento de datos distribuido y transaccional Filtrado y ordenamiento por el valor del propiedad No es relacional, es “esquemático”
  • 34. Persistencia en GAE Toda la persistencia es definida por clases @not@d@s JDO JPA Todo es almacenado en BigTable Es masivamente escalable Es un sistema de almacenamiento distribuido Usada por Google para muchas cosas Para Java, la API usa el optimizador de Datanucleus
  • 35. Desarrollo en GAE Cuenta con un SDK descargable Incluye un webserver Emula los servicios Incluye una herramienta de Upload Soporta Java 5 y 6 Existen un plugin de GAE para Eclipse y uno para Grails Debemos de cubrir un proceso de registro sencillo Solo podemos subir 10 aplicaciones(gratuitamente)
  • 36. Plugin de GAE para Grails Crear una appGrails que coincida con el nombre de nuestra app GAE Desinstalar el plugin de Hibernate Instalar el plugin app-engine(previokit de GAE instalado) Establecer la versión(a 1 preferentemente) Desplegar Listo..
  • 37. GAE es una opción Existen también: Amazon EC2 SpringSourceCloudFoundry Entre otros…
  • 39. em@il: jjuan.reyes@synergyj.com facebook, flickr, digg, twitter, delicious: neodevelop Comunidad: http://grails.org.mx Preguntas y Respuestas