Grails barcamp 2013

Embed Size (px)

DESCRIPTION

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

Citation preview

  • 1. Desarrollo Web Grails Ing. Carlos Camacho 16/11/2013

2. Presentacin (un poco personal) Carlos Camacho. Profesor por vocacin.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, Tpico, Salsa, Son, Dembow, Reggaeton. (Pirata) 3. Presentacin (un poco ms serio) Carlos Camacho. Ingeniero Telemtico.Magster Tecnologa Educativa.Profesor Departamento de Sistema, PUCMM.Ms de 6 aos de experiencia desarrollo de sistemas en tecnologa Java (JSE y JEE).3 aos de implementacin en sistemas basados en Grails.Coordinador de Sistemas, Reefer Services, S.A.S.Fundacin Cdigo Libre Santiago - Miembro Fundador.Presidente AvatharTech. 4. Presentacin (un poco ms serio) Algunas Empresas: Cementos Cibao.Edenorte.Reefer Services.Martima Dominicana.StoneWood.Geocom.PyC ServiciosNewSoft.NewtonSoft 5. Presentacin (un poco ms serio) Algunos API, Frameworks, Motores : 6. Objetivos Introduccin a Grails. Groovy Generales FundamentosDemostracin de funcionalidades en Grails. 7. Entrado en Materia 8. Framework gil? 9. Framework gil Es un marco de trabajo (framework) que implementa conceptos, buenas prcticas, patrones entre otros; con el objetivo de resolver un problema. gil, cuando se adapta al desarrollo teniendo en cuenta la metodologa gil (XP, SCRUM, entre otros) y cada una de sus fases. Diseada para la alta productividad.Fuente: http://www.riehle.org/computer-science/research/dissertation/diss-a4.pdf 10. Grails 11. Caractersticas del Framework Corre sobre una maquina virtual de Java. Integracin completa con Java. Implementa la pila completa (Full-stack) Java EE (Java Platform, Enterprise Edition). Basado en el lenguaje dinmico (Groovy) y tecnologa Java (Spring y Hibernate). Proporciona: Incluye servidor web, base de datos, gestin dependencia y recarga automtica sobre los cambios. Desarrollo orientado a pruebas.Gran biblioteca de pluginsFilosofa: Convencin sobre Configuracin (CoC, siglas en Ingles). No lo repitas (DRY, Don't Repeat Yourself).Inspirado en frameworks como Ruby on Rails y Django 12. Groovy 13. Por qu Groovy? Lenguaje dinmico diseado para la JVM. Su objetivo es ser muy similar a la sintaxis Java (Pero con esteroides).Mucho ms expresivo que Java.Ventajas: Expresividad.Flexibilidad. Menos lineas de cdigoAumento de la productividad.Groovy = Java 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. 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. 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 cdigo, ms expresivo y flexible. Curva de aprendizaje mnima. 17. Convencin Sobre Configuracin (CoC) 18. De qu se trata? Su objetivo: Incrementar la productividad.Cmo lo hace? Toma las decisiones repetitivas para el programador simplificando el proceso. Define una criterio de como hacer / definir las cosas (Convencin).Es una camisa de fuerza? No. Cuando se necesita otro comportamiento tenemos la opcin de Configurar. 19. Ejemplo - Configuracin 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 clasesConfigurar 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. Ejemplo Convencin package borramepruebamaven class HolaMundoController {El identificador de Controller indica su accindef index() { Peticin asociada a un mtodo render("Hola Mundo desde Grails") } }Salida tipo Texto 21. Tecnologas Convergentes en Grails 22. Ecosistema Confiable 23. Qu tenemos con Grails? 24. Fuertemente IntegradoMVCGSP (Vista)Contenedor ServletGORMBase de datosI18nBuildPruebaDocumentacin 25. Quines Utilizan Grails?Fuente: http://grails.org/websites 26. Anatoma Proyecto Grails 27. Flujo de peticionesURL Mapeo VistaControladorDominiosServiciosUsuario Interaccin otros componentes 28. Clases de Dominio Representan las clases directamente conectada con algn motor de persistencia. (Mysql, Postgresql, SqlServer, Oracle, Db2, entre otros) Representa el modelo dentro del patrn MVC. 29. Controladores Representan las clases encargada de procesar las peticiones de los clientes. Representa el controlador dentro del patrn MVC. 30. Vista Representa el mecanismo de interfaz para salida y entrada de los clientes.Asociacin directa con el Controlador.Indica la vista dentro del MVC. 31. Servicios Artefacto para manejar las reglas de negocio. Gestionas la transacciones entre el controlador y las clases de dominios. 32. Taglibs Permite encapsular componentes en la vista (HTML) con el objetivo de ser reutilizado. Uso simplificado contrario a otras tecnologas (JSP). 33. Test Soporta pruebas unitarias y de integracin. Las pruebas unitarias son componentes atmicos, buscan no depender de otras partes. 34. Plugins Permite incluir funcionalidades realizadas por terceros a nuestro proyecto. Reutilizacin de cdigo. Repositorio comn para su alojamiento (http://grails.org/plugins/). Contamos con ms de 700 plugins: SeguridadNoSqlEmail 35. Configuracin Encargado de configurar todos los parmetros de la aplicacin: Base de datos.Mapeo URL.Configuracin del proyecto general.Gestin de dependencia (Maven, Gradle) 36. Requerimientos Tcnicos 37. Grails SDK Similar al JDK (Java Developer Kit), contiene las libreras, 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. 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. Aplicacin Demo En vivo 40. Preguntas? 41. Contacto Email: [email protected] / [email protected] Twitter: ccamachog Muchas Gracias