Situación Actual
●Aplicacion monolítica●Aplicacion no orientada a objetos●Compleja de introducir cambios●Duplicación de código ●Dificil de testear●Performance (Php)
Java: Como plataforma
●El corazón de Java es su máquina virtual●Código se compila. Write once, run anywhere●Aplicaciones empresariales siguen estándares JEE●Las aplicaciones se corren en applications servers.●Java como lenguaje requiere cierto seniority. Tiene una
curva de aprendizaje mas lenta que otros lenguajes.
Groovy
●Lenguaje dinámico que corre sobre la VM de Java●Integración e interoperabilidad con Java. Utilización de
todas la librerías desarrolladas en java●Performance es similar entre Java y Groovy (desde Java
7 en adelante)●Groovy 2.3 superior permite compilación estática●Reducción en la cantidad de líneas de código (hasta
50%)
Groovy Funcionalidades
●Optional Typing vs Dynamic Typing vs Static Typing●Metaprogramming y AST Transformations●Programacion funcional (Closure)●Builders Xml, Html, Swing, Jmx●Groovy “decora” la Api actual de Java ●Native Syntax Constructs (Syntax Sugar)●Navegación segura de propiedades●Soporte de Domain Specific Language●Unit Test: JUnit, Spock
Grails
●Es un framework web MVC basado en acciones●Grails sigue los siguientes principios:o CoC (Convention over configuration)o DRY (Don’t repeat yourself)
●La esencia de Rails pero con la robustez de Java
Grails
● Utiliza los siguientes frameworks:● Java: Jvm, JEE y especificaciones● Spring: IoC, DI, Spring MVC, Spring WebFlow● ORM: Hibernate o MongoDB● Sitemesh: Html Layouts● FullStack
●Grails está construido sobre la base de un sistema de plugins
●Un plugin puede proveer una serie de componentes: Clases de dominio, Controllers, Services, etc
●Un plugin puede:omodificar la configuraciónoagregar métodos en tiempo de ejecuciónomodificar clases en tiempo de compilación
Grails: Plugins
●Spring Security (DB, LDAP, Kerberos, OAuth)●WebFlows (Conversaciones HTTP)●API Rest●Programación Asincrónica (Actores, SPM, Fork/Join)●Reactor (Event Driven Applications)●Jasper reports●Migrations: LiquidBase
Grails:
Forma de trabajo
Cuanto tiempo tarda su organización en introducir un cambio que solo involucra una línea de código?
● Nuestra máxima prioridad es la de satisfacer al cliente a través de la entrega temprana y continua del software solicitado
● El software debe estar siempre preparado para ser instalado en producción● Las entregas deben realizarse por necesidades del negocios y no por
restricciones técnicas.
Proceso de desarrollo
● Automatizacion● Patrones de diseño y buenas prácticas● Colaboración de todos los roles involucrados● Ingredienteso Configuration managemento Integracion continuao Test automaticos
Proceso de desarrollo
● Continuous Integration:o Es la práctica de integrar el código lo antes posible.o Se realizan test automaticos para detectar posibles fallas.o Cuando se sube un cambio al repositorio un servidor se encarga de
ejecutar la integración● Continuous Delivery:o Es la práctica donde se realiza la entrega continua.o El desarrollador decide si los cambios estan listos para pasar a la siguiente
etapao La evaluación es constante de usuarios y QAs
Proceso de desarrollo