Ciclos Más Cortos: Desarrollo Web         Ágil con Grails
Presentación (un poco personal)●   Carlos Camacho.    –   Profesor por vocación.    –   Pertenezco al lado oscuro de la fu...
Presentación (un poco más serio)●   Carlos Camacho.    –   Ingeniero Telemático.    –   Magíster Tecnología Educativa.    ...
Presentación (un poco más serio)●   Algunas Empresas:    –   Cementos Cibao.    –   Edenorte.    –   Reefer Services.    –...
Presentación (un poco más serio)●   Algunos API, Frameworks, Motores :
Objetivos●   Inicio de charlas técnicas y actividades.●   Introducción Desarrollo Ágil de Sistemas.●   Introducción Grails...
¿Charlas Técnicas?●   Crear un programa de actividades para    mostrar tecnologías alternativas y    emergentes.    –   De...
Entrado en Materia
¿Desarrollo Ágil?●   El termino “Ágil” nace en el 2001, aplicado en en    desarrollo de software. Creado por el The Agile ...
¿Cómo Trabaja el Desarrollo Ágil?                         1                    Requerimiento       Evaluación             ...
Algunas Metodologías●   Indican la forma y proceso para manejar un proyecto    ágil:    –   eXtreme Programming (XP).    –...
¿Framework Ágil?
Framework Ágil●   Es un marco de trabajo (framework) que implementa    conceptos, buenas prácticas, patrones entre otros; ...
Grails
Características del Framework●   Corre sobre una maquina virtual de Java. Integración completa con Java.●   Implementa la ...
Groovy
¿Por qué Groovy?●   Lenguaje dinámico diseñado para la JVM.●   Su objetivo es ser muy similar a la sintaxis Java    (Pero ...
¿Productividad?Clase Java – Contador Palabrasimport java.io.BufferedReader;import java.io.FileReader;import java.io.IOExce...
¿Productividad?Groovy – Contador Palabrasprintln "Contador de palabras en Groovy"filename = "/home/vacax/Documentos/PUCMM/...
Convención Sobre Configuración (CoC)
¿De qué se trata?●   Su objetivo:    –   Incrementar la productividad.●   ¿Cómo lo hace?    –   Toma las decisiones repeti...
Ejemplo - Configuraciónimport java.io.IOException;import java.io.PrintWriter;import javax.servlet.ServletException;       ...
Ejemplo – Convenciónpackage borramepruebamavenclass HolaMundoController {     El identificador de Controller indica su acc...
Tecnologías Convergentes en Grails
Ecosistema Probado
¿Qué tenemos con Grails?
Fuertemente Integrado                                Contenedor     MVC        GSP (Vista)                                ...
¿Quiénes Utilizan Grails?                       Fuente: http://grails.org/websites
Anatomía Proyecto Grails
Flujo de peticiones                    URL                    Mapeo   Controlador            Vista                        ...
Clases de Dominio●   Representan las clases directamente conectada con    algún motor de persistencia. (Mysql, Postgresql,...
Controladores●   Representan las clases encargada de procesar las    peticiones de los clientes.●   Representa el controla...
Vista●   Representa el mecanismo de interfaz para salida y    entrada de los clientes.●   Asociación directa con el Contro...
Servicios●   Artefacto para manejar las reglas de negocio.●   Gestionas la transacciones entre el controlador y las    cla...
Taglibs●   Permite encapsular componentes con el objetivo de    ser reutilizado.●   Uso simplificado contrario a otras tec...
Test●   Soporta pruebas unitarias y de integración.●   Las pruebas unitarias son componentes atómicos,    buscan no depend...
Plugins●   Permite incluir funcionalidades realizadas por    terceros a nuestro proyecto.●   Repositorio común para su alo...
Configuración●   Encargado de configurar todos los parámetros de la    aplicación:    –   Base de datos.    –   Mapeo URL....
Aplicación Demo – En vivo
Preguntas?
ContactoEmail: carlosalfredocamacho@gmail.com /ccamachog@avathartech.comTwitter: ccamachog
Grails 2013 - PUCMM - Santiago - Sistemas
Upcoming SlideShare
Loading in …5
×

Grails 2013 - PUCMM - Santiago - Sistemas

606 views
507 views

Published on

Presentación sobre Grails 2.0 mostrando las virtudes y las bases del framework web diseñado para ser productivo en nuestras implementaciones

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
606
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
12
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Grails 2013 - PUCMM - Santiago - Sistemas

  1. 1. Ciclos Más Cortos: Desarrollo Web Ágil con Grails
  2. 2. Presentación (un poco personal)● Carlos Camacho. – Profesor por vocación. – Pertenezco al lado oscuro de la fuerza (Dark Side). – Aldea de la Hoja (Konoha) – Evangelista de Java. – Apasionado de Linux. – Nacido en la era Nintendo. Amante de los RPG (Chrono Trigger). – Rock, Merengue, Bachata, Balada, Típico, Salsa, Son, Dembow, Reggaeton (Pirata)
  3. 3. Presentación (un poco más serio)● Carlos Camacho. – Ingeniero Telemático. – Magíster Tecnología Educativa. – Profesor Departamento de Sistema, PUCMM. – Más de 6 años de experiencia desarrollo de sistemas en tecnología Java (JSE y JEE). – 3 años de implementación en sistemas basados en Grails. – Fundación Código Libre Santiago - Miembro Fundador. – Presidente AvatharTech.
  4. 4. Presentación (un poco más serio)● Algunas Empresas: – Cementos Cibao. – Edenorte. – Reefer Services. – Marítima Dominicana. – StoneWood. – Geocom. – PyC Servicios – NewSoft. – NewtonSoft
  5. 5. Presentación (un poco más serio)● Algunos API, Frameworks, Motores :
  6. 6. Objetivos● Inicio de charlas técnicas y actividades.● Introducción Desarrollo Ágil de Sistemas.● Introducción Grails.● Demostración de funcionalidades en Grails.
  7. 7. ¿Charlas Técnicas?● Crear un programa de actividades para mostrar tecnologías alternativas y emergentes. – Departamento de Sistema. – Comité de Estudiantes.● Útiles o Necesarias en el ámbito laboral.● Investigación en el área académica
  8. 8. Entrado en Materia
  9. 9. ¿Desarrollo Ágil?● El termino “Ágil” nace en el 2001, aplicado en en desarrollo de software. Creado por el The Agile Alliance.● Fue creado manifiesto ágil: – Al Individuo y las interacciones sobre el proceso y las herramientas. – Software funcional sobre buena documentación. – Colaboración al cliente sobre un contrato. – Responder a los cambios sobre un plan rígido. Fuente: http://noqualityinside.com.ar/nqi/nqifiles/XP_Agil.pdf
  10. 10. ¿Cómo Trabaja el Desarrollo Ágil? 1 Requerimiento Evaluación Análisis Proceso Iterativo Y 4 Acompañado 2 de los Actores Pruebas Diseño Codificación 3
  11. 11. Algunas Metodologías● Indican la forma y proceso para manejar un proyecto ágil: – eXtreme Programming (XP). – SCRUM. – Feature-driven development (FDD).
  12. 12. ¿Framework Ágil?
  13. 13. Framework Ágil● Es un marco de trabajo (framework) que implementa conceptos, buenas prácticas, patrones entre otros; con el objetivo de resolver un problema.● Ágil, cuando se adapta al desarrollo teniendo en cuenta la metodología ágil y cada una de sus fases.● Diseña para la alta productividad. Fuente: http://www.riehle.org/computer-science/research/dissertation/diss-a4.pdf
  14. 14. Grails
  15. 15. Características del Framework● Corre sobre una maquina virtual de Java. Integración completa con Java.● Implementa la pila completa (Full-stack) Java EE (Java Platform, Enterprise Edition).● Basado en el lenguaje dinámico (Groovy) y tecnología Java (Spring y Hibernate).● Proporciona: – Desarrollo orientado a pruebas. – Incluye servidor web, base de datos, gestión dependencia y recarga automática. – Gran biblioteca de plugins● Filosofía: – Convención sobre Configuración (CoC, siglas en Ingles). – No lo repitas (DRY, Dont Repeat Yourself).● Inspirado en frameworks como Ruby on Rails y Django
  16. 16. Groovy
  17. 17. ¿Por qué Groovy?● Lenguaje dinámico diseñado para la JVM.● Su objetivo es ser muy similar a la sintaxis Java (Pero con esteroides).● Mucho más expresivo que Java.● Ventajas: – Menos lineas de código – Expresividad. – Flexibilidad. – Aumento de la productividad.● Groovy = Java
  18. 18. ¿Productividad?Clase Java – Contador Palabrasimport java.io.BufferedReader;import java.io.FileReader;import java.io.IOException;import java.util.StringTokenizer;public class ContadorPalabras { public static void main(String[] args) throws IOException { System.out.println("Contador Palabras en Java"); int chars = 0, lines = 0, words = 0; String filename = "/home/vacax/Documentos/PUCMM/Charlas/contador.txt"; BufferedReader r = new BufferedReader(new FileReader(filename)); String it; while ((it = r.readLine()) != null) { chars += it.length() + 1; words += new StringTokenizer(it).countTokens(); lines++; } System.out.println("t Lineas: " + lines + "t Palabras: " + words + "t Caracteres: " + chars + "tArchivo: " + filename); }}
  19. 19. ¿Productividad?Groovy – Contador Palabrasprintln "Contador de palabras en Groovy"filename = "/home/vacax/Documentos/PUCMM/Charlas/contador.txt";chars=0; lines=0; words=0;new File(filename).eachLine { chars += it.length() + 1 words += it.tokenize().size(); lines++;}//imprimiendo.println "t Lineas: ${lines} t Palabras: ${words} t Caracteres: ${chars} t Archivo: ${filename}" Menos linea de código, más expresivo y flexible.
  20. 20. Convención Sobre Configuración (CoC)
  21. 21. ¿De qué se trata?● Su objetivo: – Incrementar la productividad.● ¿Cómo lo hace? – Toma las decisiones repetitivas para el programador simplificando el proceso. – Define una criterio de como hacer / definir las cosas (Convención).● ¿Es una camisa de fuerza? – No. Cuando se necesita otro comportamiento se debe Configurar.
  22. 22. Ejemplo - Configuraciónimport java.io.IOException;import java.io.PrintWriter;import javax.servlet.ServletException; Importar clasesimport javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse; Configurar Servlet@WebServlet(name = "HolaMundoServlet", urlPatterns = {"/HolaMundoServlet"})public class HolaMundoServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8"); Obteniendo la PrintWriter out = response.getWriter(); peticiones try { out.println("Hola Mundo Servlet 3.0"); } finally { out.close(); } }}
  23. 23. Ejemplo – Convenciónpackage borramepruebamavenclass HolaMundoController { El identificador de Controller indica su acción def index() { Petición asociada a un método render("Hola Mundo desde Grails") Salida tipo Texto }}
  24. 24. Tecnologías Convergentes en Grails
  25. 25. Ecosistema Probado
  26. 26. ¿Qué tenemos con Grails?
  27. 27. Fuertemente Integrado Contenedor MVC GSP (Vista) Servlet GORM Base de datos I18n Build Prueba Documentación
  28. 28. ¿Quiénes Utilizan Grails? Fuente: http://grails.org/websites
  29. 29. Anatomía Proyecto Grails
  30. 30. Flujo de peticiones URL Mapeo Controlador Vista Dominios Servicios Usuario Interacción otros componentes
  31. 31. Clases de Dominio● Representan las clases directamente conectada con algún motor de persistencia. (Mysql, Postgresql, SqlServer, Oracle, Db2, entre otros)● Representa el modelo dentro del patrón MVC.
  32. 32. Controladores● Representan las clases encargada de procesar las peticiones de los clientes.● Representa el controlador dentro del patrón MVC.
  33. 33. Vista● Representa el mecanismo de interfaz para salida y entrada de los clientes.● Asociación directa con el Controlador.● Indica la vista dentro del MVC.
  34. 34. Servicios● Artefacto para manejar las reglas de negocio.● Gestionas la transacciones entre el controlador y las clases de dominios.
  35. 35. Taglibs● Permite encapsular componentes con el objetivo de ser reutilizado.● Uso simplificado contrario a otras tecnologías.
  36. 36. Test● Soporta pruebas unitarias y de integración.● Las pruebas unitarias son componentes atómicos, buscan no depender de otras partes.
  37. 37. Plugins● Permite incluir funcionalidades realizadas por terceros a nuestro proyecto.● Repositorio común para su alojamiento (http://grails.org/plugins/).● Contamos con más de 700 plugins: – Seguridad – Email – NoSql
  38. 38. Configuración● Encargado de configurar todos los parámetros de la aplicación: – Base de datos. – Mapeo URL. – Configuración. – Gestión de dependencia (Maven, Gradle)
  39. 39. Aplicación Demo – En vivo
  40. 40. Preguntas?
  41. 41. ContactoEmail: carlosalfredocamacho@gmail.com /ccamachog@avathartech.comTwitter: ccamachog

×