Grails barcamp 2013

712 views

Published on

Introducción al framework de desarrollo Grails, mostrando las bondades de dicha herramienta en el Barcamp STI 2013/

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

  • Be the first to like this

No Downloads
Views
Total views
712
On SlideShare
0
From Embeds
0
Number of Embeds
5
Actions
Shares
0
Downloads
15
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Grails barcamp 2013

  1. 1. Desarrollo Web – Grails Ing. Carlos Camacho 16/11/2013
  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. – Coordinador de Sistemas, Reefer Services, S.A.S. – 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 ● Introducción a Grails. – – Groovy – ● Generales Fundamentos Demostración de funcionalidades en Grails.
  7. 7. Entrado en Materia
  8. 8. ¿Framework Ágil?
  9. 9. 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 (XP, SCRUM, entre otros) y cada una de sus fases. Diseñada para la alta productividad. Fuente: http://www.riehle.org/computer-science/research/dissertation/diss-a4.pdf
  10. 10. Grails
  11. 11. 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: – – Incluye servidor web, base de datos, gestión dependencia y recarga automática sobre los cambios. – ● Desarrollo orientado a pruebas. Gran biblioteca de plugins Filosofía: – – ● Convención sobre Configuración (CoC, siglas en Ingles). No lo repitas (DRY, Don't Repeat Yourself). Inspirado en frameworks como Ruby on Rails y Django
  12. 12. Groovy
  13. 13. ¿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: – – Expresividad. – Flexibilidad. – ● Menos lineas de código Aumento de la productividad. Groovy = Java
  14. 14. ¿Productividad? Clase Java – Contador Palabras import 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 + "t Archivo: " + filename); } }
  15. 15. ¿Productividad? Clase Java – Contador Palabras import 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 + "t Archivo: " + filename); } }
  16. 16. ¿Productividad? Groovy – Contador Palabras println "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. Curva de aprendizaje mínima.
  17. 17. Convención Sobre Configuración (CoC)
  18. 18. ¿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 tenemos la opción de Configurar.
  19. 19. Ejemplo - Configuración import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; Importar clases 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(); } }
  20. 20. Ejemplo – Convención package borramepruebamaven class 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
  21. 21. Tecnologías Convergentes en Grails
  22. 22. Ecosistema Confiable
  23. 23. ¿Qué tenemos con Grails?
  24. 24. Fuertemente Integrado MVC GSP (Vista) Contenedor Servlet GORM Base de datos I18n Build Prueba Documentación
  25. 25. ¿Quiénes Utilizan Grails? Fuente: http://grails.org/websites
  26. 26. Anatomía Proyecto Grails
  27. 27. Flujo de peticiones URL Mapeo Vista Controlador Dominios Servicios Usuario Interacción otros componentes
  28. 28. 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.
  29. 29. Controladores ● ● Representan las clases encargada de procesar las peticiones de los clientes. Representa el controlador dentro del patrón MVC.
  30. 30. 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.
  31. 31. Servicios ● ● Artefacto para manejar las reglas de negocio. Gestionas la transacciones entre el controlador y las clases de dominios.
  32. 32. Taglibs ● ● Permite encapsular componentes en la vista (HTML) con el objetivo de ser reutilizado. Uso simplificado contrario a otras tecnologías (JSP).
  33. 33. Test ● ● Soporta pruebas unitarias y de integración. Las pruebas unitarias son componentes atómicos, buscan no depender de otras partes.
  34. 34. Plugins ● ● ● ● Permite incluir funcionalidades realizadas por terceros a nuestro proyecto. Reutilización de código. Repositorio común para su alojamiento (http://grails.org/plugins/). Contamos con más de 700 plugins: – Seguridad – NoSql – Email
  35. 35. Configuración ● Encargado de configurar todos los parámetros de la aplicación: – Base de datos. – Mapeo URL. – Configuración del proyecto general. – Gestión de dependencia (Maven, Gradle)
  36. 36. Requerimientos Técnicos
  37. 37. Grails SDK ● ● Similar al JDK (Java Developer Kit), contiene las librerías, scripts y clases que componen el framework de Grails, permitiendo desarrollar bajo dicho ambiente. Está disponible en el site oficial: http://grails.org/download
  38. 38. IDE – Integrated Development Environment ● ● No es imprescindible su uso. Vi, Vim, Emacs o editor de texto simple son validos. ¿Exigente? – Groovy and Grails Tool Suite. (Soportando por Spring, Gratis) – Eclipse con plugins. (Gratis) – Netbeans. (Gratis) – Intellij IDE Ultimate. (Pago, lo vale :-D)
  39. 39. Aplicación Demo – En vivo
  40. 40. ¿Preguntas?
  41. 41. Contacto Email: carlosalfredocamacho@gmail.com / ccamachog@avathartech.com Twitter: ccamachog Muchas Gracias

×