SlideShare una empresa de Scribd logo
1 de 39
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
 
Codemotion 2015 crash y youdebug
Codemotion 2015   crash y youdebugCodemotion 2015   crash y youdebug
Codemotion 2015 crash y youdebugjmiguel 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 2019Micael 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 ayerIvá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 aplicacionesFran García
 
Desarrollo tecnologias software_libre_open_source
Desarrollo tecnologias software_libre_open_sourceDesarrollo tecnologias software_libre_open_source
Desarrollo tecnologias software_libre_open_sourceMario IC
 
Curso Angular 9 - CodeURJC - Marzo 2020
Curso Angular 9 - CodeURJC - Marzo 2020Curso Angular 9 - CodeURJC - Marzo 2020
Curso Angular 9 - CodeURJC - Marzo 2020Micael 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 4G Development

Similar a 4G Development (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

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

Desarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfDesarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfJulian Lamprea
 
9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudianteAndreaHuertas24
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíassuserf18419
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricKeyla Dolores Méndez
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxLolaBunny11
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx241521559
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...silviayucra2
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITMaricarmen Sánchez Ruiz
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan JosephBRAYANJOSEPHPEREZGOM
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfsoporteupcology
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIAWilbisVega
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)GDGSucre
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveFagnerLisboa3
 

Último (13)

Desarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfDesarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdf
 
9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptx
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdf
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 

4G Development

  • 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