Your SlideShare is downloading. ×
0
Desarrollo en 4G(Groovy, Grails, Git, GoogleAppEngine)
Desarrollo en 4G(Groovy, Grails, Git, GoogleAppEngine)
Desarrollo en 4G(Groovy, Grails, Git, GoogleAppEngine)
Desarrollo en 4G(Groovy, Grails, Git, GoogleAppEngine)
Desarrollo en 4G(Groovy, Grails, Git, GoogleAppEngine)
Desarrollo en 4G(Groovy, Grails, Git, GoogleAppEngine)
Desarrollo en 4G(Groovy, Grails, Git, GoogleAppEngine)
Desarrollo en 4G(Groovy, Grails, Git, GoogleAppEngine)
Desarrollo en 4G(Groovy, Grails, Git, GoogleAppEngine)
Desarrollo en 4G(Groovy, Grails, Git, GoogleAppEngine)
Desarrollo en 4G(Groovy, Grails, Git, GoogleAppEngine)
Desarrollo en 4G(Groovy, Grails, Git, GoogleAppEngine)
Desarrollo en 4G(Groovy, Grails, Git, GoogleAppEngine)
Desarrollo en 4G(Groovy, Grails, Git, GoogleAppEngine)
Desarrollo en 4G(Groovy, Grails, Git, GoogleAppEngine)
Desarrollo en 4G(Groovy, Grails, Git, GoogleAppEngine)
Desarrollo en 4G(Groovy, Grails, Git, GoogleAppEngine)
Desarrollo en 4G(Groovy, Grails, Git, GoogleAppEngine)
Desarrollo en 4G(Groovy, Grails, Git, GoogleAppEngine)
Desarrollo en 4G(Groovy, Grails, Git, GoogleAppEngine)
Desarrollo en 4G(Groovy, Grails, Git, GoogleAppEngine)
Desarrollo en 4G(Groovy, Grails, Git, GoogleAppEngine)
Desarrollo en 4G(Groovy, Grails, Git, GoogleAppEngine)
Desarrollo en 4G(Groovy, Grails, Git, GoogleAppEngine)
Desarrollo en 4G(Groovy, Grails, Git, GoogleAppEngine)
Desarrollo en 4G(Groovy, Grails, Git, GoogleAppEngine)
Desarrollo en 4G(Groovy, Grails, Git, GoogleAppEngine)
Desarrollo en 4G(Groovy, Grails, Git, GoogleAppEngine)
Desarrollo en 4G(Groovy, Grails, Git, GoogleAppEngine)
Desarrollo en 4G(Groovy, Grails, Git, GoogleAppEngine)
Desarrollo en 4G(Groovy, Grails, Git, GoogleAppEngine)
Desarrollo en 4G(Groovy, Grails, Git, GoogleAppEngine)
Desarrollo en 4G(Groovy, Grails, Git, GoogleAppEngine)
Desarrollo en 4G(Groovy, Grails, Git, GoogleAppEngine)
Desarrollo en 4G(Groovy, Grails, Git, GoogleAppEngine)
Desarrollo en 4G(Groovy, Grails, Git, GoogleAppEngine)
Desarrollo en 4G(Groovy, Grails, Git, GoogleAppEngine)
Desarrollo en 4G(Groovy, Grails, Git, GoogleAppEngine)
Desarrollo en 4G(Groovy, Grails, Git, GoogleAppEngine)
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

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

1,440

Published on

Esta ponencia tiene como objetivo mostrar como conjuntar y aprovechar las ventajas de trabajar con Groovy & Grails, llevar el control del versionado con Git y simular la puesta en producción de la …

Esta ponencia tiene como objetivo mostrar como conjuntar y aprovechar las ventajas de trabajar con Groovy & Grails, llevar el control del versionado con Git y simular la puesta en producción de la aplicación en GoogleAppEngine.

Published in: Technology, Education
0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,440
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
44
Comments
0
Likes
3
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

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

×