Este documento presenta sobre el desarrollo en 4G (Groovy, Grails, Git y Google App Engine). Explica las ventajas de usar Groovy y Grails para el desarrollo ágil, Git para el control de versiones y Google App Engine para la simulación de puesta en producción de una aplicación en la nube.
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
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
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)
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…