SlideShare ist ein Scribd-Unternehmen logo
1 von 42
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 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)
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.
Presentación (un poco más serio)
●   Algunas Empresas:
    –   Cementos Cibao.
    –   Edenorte.
    –   Reefer Services.
    –   Marítima Dominicana.
    –   StoneWood.
    –   Geocom.
    –   PyC Servicios
    –   NewSoft.
    –   NewtonSoft
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.
●   Demostración de funcionalidades en Grails.
¿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
Entrado en Materia
¿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
¿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
Algunas Metodologías

●   Indican la forma y proceso para manejar un proyecto
    ágil:
    –   eXtreme Programming (XP).
    –   SCRUM.
    –   Feature-driven development (FDD).
¿Framework Ágil?
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
Grails
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, Don't Repeat Yourself).
●   Inspirado en frameworks como Ruby on Rails y Django
Groovy
¿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
¿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);
  }
}
¿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.
Convención Sobre Configuración (CoC)
¿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.
Ejemplo - Configuración
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;                            Importar clases
import 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();
      }
    }
}
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
    }
}
Tecnologías Convergentes en Grails
Ecosistema Probado
¿Qué tenemos con Grails?
Fuertemente Integrado


                                Contenedor
     MVC        GSP (Vista)
                                  Servlet




     GORM      Base de datos       I18n




     Build        Prueba       Documentación
¿Quiénes Utilizan Grails?




                       Fuente: http://grails.org/websites
Anatomía Proyecto Grails
Flujo de peticiones



                    URL
                    Mapeo   Controlador


            Vista
                                                       Dominios


                             Servicios


  Usuario

                                         Interacción otros componentes
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.
Controladores
●   Representan las clases encargada de procesar las
    peticiones de los clientes.
●   Representa el controlador dentro del patrón MVC.
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.
Servicios
●   Artefacto para manejar las reglas de negocio.
●   Gestionas la transacciones entre el controlador y las
    clases de dominios.
Taglibs
●   Permite encapsular componentes con el objetivo de
    ser reutilizado.
●   Uso simplificado contrario a otras tecnologías.
Test
●   Soporta pruebas unitarias y de integración.
●   Las pruebas unitarias son componentes atómicos,
    buscan no depender de otras partes.
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
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)
Aplicación Demo – En vivo
Preguntas?
Contacto
Email: carlosalfredocamacho@gmail.com /
ccamachog@avathartech.com

Twitter: ccamachog

Weitere ähnliche Inhalte

Was ist angesagt?

Test Programación Orientada a Objetos
Test Programación Orientada a  ObjetosTest Programación Orientada a  Objetos
Test Programación Orientada a ObjetosLuis Arturo Vargas
 
Análisis estático de código en Java
Análisis estático de código en JavaAnálisis estático de código en Java
Análisis estático de código en JavaCésar Hernández
 
Swift migration. the true history
Swift migration. the true historySwift migration. the true history
Swift migration. the true historyidealistacreamcode
 
J2me
J2meJ2me
J2me1 2d
 
Curso Basico Java
Curso Basico JavaCurso Basico Java
Curso Basico JavaCarlos Luna
 
Programacion orientada a objetos 2
Programacion orientada a objetos 2Programacion orientada a objetos 2
Programacion orientada a objetos 2mellcv
 
Docker y Kubernetes, en busca de la alta disponibilidad
Docker y Kubernetes, en busca de la alta disponibilidadDocker y Kubernetes, en busca de la alta disponibilidad
Docker y Kubernetes, en busca de la alta disponibilidadÓscar De Arriba González
 
2. criptografiìa con java
2. criptografiìa con java2. criptografiìa con java
2. criptografiìa con java1 2d
 
Curso Kubernetes CodeURJC
Curso Kubernetes CodeURJCCurso Kubernetes CodeURJC
Curso Kubernetes CodeURJCMicael Gallego
 

Was ist angesagt? (13)

Test Programación Orientada a Objetos
Test Programación Orientada a  ObjetosTest Programación Orientada a  Objetos
Test Programación Orientada a Objetos
 
Test Driven Development
Test Driven DevelopmentTest Driven Development
Test Driven Development
 
Análisis estático de código en Java
Análisis estático de código en JavaAnálisis estático de código en Java
Análisis estático de código en Java
 
TDD Course (Spanish)
TDD Course (Spanish)TDD Course (Spanish)
TDD Course (Spanish)
 
Swift migration. the true history
Swift migration. the true historySwift migration. the true history
Swift migration. the true history
 
J2me
J2meJ2me
J2me
 
Curso Basico Java
Curso Basico JavaCurso Basico Java
Curso Basico Java
 
Sun java basico
Sun   java basicoSun   java basico
Sun java basico
 
Programacion orientada a objetos 2
Programacion orientada a objetos 2Programacion orientada a objetos 2
Programacion orientada a objetos 2
 
Docker y Kubernetes, en busca de la alta disponibilidad
Docker y Kubernetes, en busca de la alta disponibilidadDocker y Kubernetes, en busca de la alta disponibilidad
Docker y Kubernetes, en busca de la alta disponibilidad
 
BDD y tests automatizados
BDD y tests automatizadosBDD y tests automatizados
BDD y tests automatizados
 
2. criptografiìa con java
2. criptografiìa con java2. criptografiìa con java
2. criptografiìa con java
 
Curso Kubernetes CodeURJC
Curso Kubernetes CodeURJCCurso Kubernetes CodeURJC
Curso Kubernetes CodeURJC
 

Ähnlich wie Grails 2013 - PUCMM - Santiago - Sistemas

Vaadin y Grails Barcamp 2013
Vaadin y Grails Barcamp 2013Vaadin y Grails Barcamp 2013
Vaadin y Grails Barcamp 2013Carlos Camacho
 
Web framework ligeros y micros en java barcamp 2014
Web framework ligeros y micros en java   barcamp 2014Web framework ligeros y micros en java   barcamp 2014
Web framework ligeros y micros en java barcamp 2014Carlos Camacho
 
Seminario Spring Roo. Monitorización con Spring Insight
Seminario Spring Roo. Monitorización con Spring InsightSeminario Spring Roo. Monitorización con Spring Insight
Seminario Spring Roo. Monitorización con Spring InsightParadigma Digital
 
VLCTechFest - Simplificando Controladores: Una introducción a Action-Domain ...
VLCTechFest -  Simplificando Controladores: Una introducción a Action-Domain ...VLCTechFest -  Simplificando Controladores: Una introducción a Action-Domain ...
VLCTechFest - Simplificando Controladores: Una introducción a Action-Domain ...Miguel Ángel Sánchez Chordi
 
Charla Atributos de calidad con .Net
Charla Atributos de calidad con .NetCharla Atributos de calidad con .Net
Charla Atributos de calidad con .NetCarlos Paez
 
Desarrollo con Java y metodologías agiles
Desarrollo con Java y metodologías agilesDesarrollo con Java y metodologías agiles
Desarrollo con Java y metodologías agilesJobsket
 
Herramientas Ágiles para Desarrollo
Herramientas Ágiles para DesarrolloHerramientas Ágiles para Desarrollo
Herramientas Ágiles para DesarrolloGastón Guillerón
 
Herramientas agilesdesarrollo
Herramientas agilesdesarrolloHerramientas agilesdesarrollo
Herramientas agilesdesarrollogabrielpiccoli
 
¿Cómo poner software de calidad en manos del usuario de forma rápida?
¿Cómo poner software de calidad en manos del usuario de forma rápida?¿Cómo poner software de calidad en manos del usuario de forma rápida?
¿Cómo poner software de calidad en manos del usuario de forma rápida?Micael Gallego
 
Creando Aplicaciones Web en el 2015
 Creando Aplicaciones Web en el 2015 Creando Aplicaciones Web en el 2015
Creando Aplicaciones Web en el 2015Globant
 
Probando aplicaciones AngularJS
Probando aplicaciones AngularJSProbando aplicaciones AngularJS
Probando aplicaciones AngularJSRodrigo Pimentel
 
Gwt seminario java_hispano_manolocarrasco
Gwt seminario java_hispano_manolocarrascoGwt seminario java_hispano_manolocarrasco
Gwt seminario java_hispano_manolocarrascoManuel Carrasco Moñino
 
¿Grails + DDD + Eventsourcing + CQRS?
¿Grails + DDD + Eventsourcing + CQRS?¿Grails + DDD + Eventsourcing + CQRS?
¿Grails + DDD + Eventsourcing + CQRS?Jorge Franco Leza
 

Ähnlich wie Grails 2013 - PUCMM - Santiago - Sistemas (20)

Grails barcamp 2013
Grails barcamp 2013Grails barcamp 2013
Grails barcamp 2013
 
Vaadin y Grails Barcamp 2013
Vaadin y Grails Barcamp 2013Vaadin y Grails Barcamp 2013
Vaadin y Grails Barcamp 2013
 
Web framework ligeros y micros en java barcamp 2014
Web framework ligeros y micros en java   barcamp 2014Web framework ligeros y micros en java   barcamp 2014
Web framework ligeros y micros en java barcamp 2014
 
Seminario Spring Roo. Monitorización con Spring Insight
Seminario Spring Roo. Monitorización con Spring InsightSeminario Spring Roo. Monitorización con Spring Insight
Seminario Spring Roo. Monitorización con Spring Insight
 
VLCTechFest - Simplificando Controladores: Una introducción a Action-Domain ...
VLCTechFest -  Simplificando Controladores: Una introducción a Action-Domain ...VLCTechFest -  Simplificando Controladores: Una introducción a Action-Domain ...
VLCTechFest - Simplificando Controladores: Una introducción a Action-Domain ...
 
Charla Atributos de calidad con .Net
Charla Atributos de calidad con .NetCharla Atributos de calidad con .Net
Charla Atributos de calidad con .Net
 
Desarrollo con Java y metodologías agiles
Desarrollo con Java y metodologías agilesDesarrollo con Java y metodologías agiles
Desarrollo con Java y metodologías agiles
 
Herramientas Ágiles para Desarrollo
Herramientas Ágiles para DesarrolloHerramientas Ágiles para Desarrollo
Herramientas Ágiles para Desarrollo
 
Herramientas agilesdesarrollo
Herramientas agilesdesarrolloHerramientas agilesdesarrollo
Herramientas agilesdesarrollo
 
¿Cómo poner software de calidad en manos del usuario de forma rápida?
¿Cómo poner software de calidad en manos del usuario de forma rápida?¿Cómo poner software de calidad en manos del usuario de forma rápida?
¿Cómo poner software de calidad en manos del usuario de forma rápida?
 
Gwt I - entendiendo gwt
Gwt I - entendiendo gwtGwt I - entendiendo gwt
Gwt I - entendiendo gwt
 
Creando Aplicaciones Web en el 2015
 Creando Aplicaciones Web en el 2015 Creando Aplicaciones Web en el 2015
Creando Aplicaciones Web en el 2015
 
Arquitectura
Arquitectura Arquitectura
Arquitectura
 
Meetup Oracle Technology MAD_BCN: 6.2 DevOps y DataOps
Meetup Oracle Technology MAD_BCN: 6.2 DevOps y DataOpsMeetup Oracle Technology MAD_BCN: 6.2 DevOps y DataOps
Meetup Oracle Technology MAD_BCN: 6.2 DevOps y DataOps
 
Probando aplicaciones AngularJS
Probando aplicaciones AngularJSProbando aplicaciones AngularJS
Probando aplicaciones AngularJS
 
Git Flow y GitOps
Git Flow y GitOpsGit Flow y GitOps
Git Flow y GitOps
 
Gwt seminario java_hispano_manolocarrasco
Gwt seminario java_hispano_manolocarrascoGwt seminario java_hispano_manolocarrasco
Gwt seminario java_hispano_manolocarrasco
 
Conociendo Nuestro Fua interno
Conociendo Nuestro Fua internoConociendo Nuestro Fua interno
Conociendo Nuestro Fua interno
 
1127082.ppt
1127082.ppt1127082.ppt
1127082.ppt
 
¿Grails + DDD + Eventsourcing + CQRS?
¿Grails + DDD + Eventsourcing + CQRS?¿Grails + DDD + Eventsourcing + CQRS?
¿Grails + DDD + Eventsourcing + CQRS?
 

Kürzlich hochgeladen

Desarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfDesarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfJulian Lamprea
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan JosephBRAYANJOSEPHPEREZGOM
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíassuserf18419
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIAWilbisVega
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfsoporteupcology
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...silviayucra2
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITMaricarmen Sánchez Ruiz
 
9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudianteAndreaHuertas24
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxLolaBunny11
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx241521559
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricKeyla Dolores Méndez
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveFagnerLisboa3
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)GDGSucre
 

Kürzlich hochgeladen (13)

Desarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfDesarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdf
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdf
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptx
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 

Grails 2013 - PUCMM - Santiago - Sistemas

  • 1. Ciclos Más Cortos: Desarrollo Web Ágil con Grails
  • 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. 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. Presentación (un poco más serio) ● Algunas Empresas: – Cementos Cibao. – Edenorte. – Reefer Services. – Marítima Dominicana. – StoneWood. – Geocom. – PyC Servicios – NewSoft. – NewtonSoft
  • 5. Presentación (un poco más serio) ● Algunos API, Frameworks, Motores :
  • 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. ¿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
  • 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. ¿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. Algunas Metodologías ● Indican la forma y proceso para manejar un proyecto ágil: – eXtreme Programming (XP). – SCRUM. – Feature-driven development (FDD).
  • 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
  • 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, Don't Repeat Yourself). ● Inspirado en frameworks como Ruby on Rails y Django
  • 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. ¿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); } }
  • 19. ¿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.
  • 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. Ejemplo - Configuración import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; Importar clases import 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. 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 } }
  • 27. Fuertemente Integrado Contenedor MVC GSP (Vista) Servlet GORM Base de datos I18n Build Prueba Documentación
  • 28. ¿Quiénes Utilizan Grails? Fuente: http://grails.org/websites
  • 30.
  • 31. Flujo de peticiones URL Mapeo Controlador Vista Dominios Servicios Usuario Interacción otros componentes
  • 32. 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.
  • 33. Controladores ● Representan las clases encargada de procesar las peticiones de los clientes. ● Representa el controlador dentro del patrón MVC.
  • 34. 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.
  • 35. Servicios ● Artefacto para manejar las reglas de negocio. ● Gestionas la transacciones entre el controlador y las clases de dominios.
  • 36. Taglibs ● Permite encapsular componentes con el objetivo de ser reutilizado. ● Uso simplificado contrario a otras tecnologías.
  • 37. Test ● Soporta pruebas unitarias y de integración. ● Las pruebas unitarias son componentes atómicos, buscan no depender de otras partes.
  • 38. 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
  • 39. 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)