SlideShare una empresa de Scribd logo
1 de 42
Desarrollo Web – Grails
Ing. Carlos Camacho
16/11/2013
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.

–

Coordinador de Sistemas, Reefer Services, S.A.S.

–

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
●

Introducción a Grails.
–
–

Groovy

–
●

Generales
Fundamentos

Demostración de funcionalidades en Grails.
Entrado en Materia
¿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 (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
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:
–
–

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
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:
–
–

Expresividad.

–

Flexibilidad.

–
●

Menos lineas de código

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?
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.
Curva de aprendizaje mínima.
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
tenemos la opción de Configurar.
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();
}
}
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 Confiable
¿Qué tenemos con Grails?
Fuertemente Integrado

MVC

GSP (Vista)

Contenedor
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
Vista

Controlador

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 en la vista (HTML)
con el objetivo de ser reutilizado.
Uso simplificado contrario a otras tecnologías (JSP).
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.
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
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)
Requerimientos Técnicos
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
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)
Aplicación Demo – En vivo
¿Preguntas?
Contacto
Email: carlosalfredocamacho@gmail.com /
ccamachog@avathartech.com
Twitter: ccamachog
Muchas Gracias

Más contenido relacionado

La actualidad más candente

Presentacion Ruby on Rails en Universidad Autónoma 2009
Presentacion Ruby on Rails en Universidad Autónoma 2009Presentacion Ruby on Rails en Universidad Autónoma 2009
Presentacion Ruby on Rails en Universidad Autónoma 2009Nelson Rojas Núñez
 
15a. Reunion de SpringHispano.org y grails.org.mx
15a. Reunion de SpringHispano.org y grails.org.mx15a. Reunion de SpringHispano.org y grails.org.mx
15a. Reunion de SpringHispano.org y grails.org.mxJose Juan R. Zuñiga
 
Jobsket.com, Grails en un proyecto real
Jobsket.com, Grails en un proyecto realJobsket.com, Grails en un proyecto real
Jobsket.com, Grails en un proyecto realJobsket
 
Dragome en JavaConf Buenos Aires 2014
Dragome en JavaConf Buenos Aires 2014 Dragome en JavaConf Buenos Aires 2014
Dragome en JavaConf Buenos Aires 2014 Fernando Petrola
 
Vaadin y Grails Barcamp 2013
Vaadin y Grails Barcamp 2013Vaadin y Grails Barcamp 2013
Vaadin y Grails Barcamp 2013Carlos Camacho
 
Buenas Prácticas de desarrollo en Ruby on Rails
Buenas Prácticas de desarrollo en Ruby on RailsBuenas Prácticas de desarrollo en Ruby on Rails
Buenas Prácticas de desarrollo en Ruby on RailsSergio Gil
 
Jobsket Spring 2GX Madrid
Jobsket Spring 2GX MadridJobsket Spring 2GX Madrid
Jobsket Spring 2GX MadridJobsket
 
Node JS (Francisco Cerdas)
Node JS (Francisco Cerdas)Node JS (Francisco Cerdas)
Node JS (Francisco Cerdas)PiXeL16
 
Herramientas y plugins para el desarrollo de aplicaciones cloud native para K...
Herramientas y plugins para el desarrollo de aplicaciones cloud native para K...Herramientas y plugins para el desarrollo de aplicaciones cloud native para K...
Herramientas y plugins para el desarrollo de aplicaciones cloud native para K...Micael Gallego
 
Introducción a NodeJS
Introducción a NodeJSIntroducción a NodeJS
Introducción a NodeJSBEEVA_es
 
WebRTC y Kurento en el T3cgFest 2015
WebRTC y Kurento en el T3cgFest 2015WebRTC y Kurento en el T3cgFest 2015
WebRTC y Kurento en el T3cgFest 2015Micael Gallego
 
Java script(1)
Java script(1)Java script(1)
Java script(1)trazco
 
Software libre para videoconferencias
Software libre para videoconferenciasSoftware libre para videoconferencias
Software libre para videoconferenciasMicael Gallego
 

La actualidad más candente (20)

Grails en SG08
Grails en SG08Grails en SG08
Grails en SG08
 
Grails en el Fonasol
Grails en el FonasolGrails en el Fonasol
Grails en el Fonasol
 
20170405 - Ecosistema Javascript
20170405 - Ecosistema Javascript20170405 - Ecosistema Javascript
20170405 - Ecosistema Javascript
 
Java poliglota
Java poliglotaJava poliglota
Java poliglota
 
Presentacion Ruby on Rails en Universidad Autónoma 2009
Presentacion Ruby on Rails en Universidad Autónoma 2009Presentacion Ruby on Rails en Universidad Autónoma 2009
Presentacion Ruby on Rails en Universidad Autónoma 2009
 
15a. Reunion de SpringHispano.org y grails.org.mx
15a. Reunion de SpringHispano.org y grails.org.mx15a. Reunion de SpringHispano.org y grails.org.mx
15a. Reunion de SpringHispano.org y grails.org.mx
 
Introducción a Ruby on rails
Introducción a Ruby on railsIntroducción a Ruby on rails
Introducción a Ruby on rails
 
Jobsket.com, Grails en un proyecto real
Jobsket.com, Grails en un proyecto realJobsket.com, Grails en un proyecto real
Jobsket.com, Grails en un proyecto real
 
Dragome en JavaConf Buenos Aires 2014
Dragome en JavaConf Buenos Aires 2014 Dragome en JavaConf Buenos Aires 2014
Dragome en JavaConf Buenos Aires 2014
 
Charla grails
Charla grailsCharla grails
Charla grails
 
Vaadin y Grails Barcamp 2013
Vaadin y Grails Barcamp 2013Vaadin y Grails Barcamp 2013
Vaadin y Grails Barcamp 2013
 
Buenas Prácticas de desarrollo en Ruby on Rails
Buenas Prácticas de desarrollo en Ruby on RailsBuenas Prácticas de desarrollo en Ruby on Rails
Buenas Prácticas de desarrollo en Ruby on Rails
 
Jobsket Spring 2GX Madrid
Jobsket Spring 2GX MadridJobsket Spring 2GX Madrid
Jobsket Spring 2GX Madrid
 
Node JS (Francisco Cerdas)
Node JS (Francisco Cerdas)Node JS (Francisco Cerdas)
Node JS (Francisco Cerdas)
 
¿Por qué ruby on rails?
¿Por qué ruby on rails?¿Por qué ruby on rails?
¿Por qué ruby on rails?
 
Herramientas y plugins para el desarrollo de aplicaciones cloud native para K...
Herramientas y plugins para el desarrollo de aplicaciones cloud native para K...Herramientas y plugins para el desarrollo de aplicaciones cloud native para K...
Herramientas y plugins para el desarrollo de aplicaciones cloud native para K...
 
Introducción a NodeJS
Introducción a NodeJSIntroducción a NodeJS
Introducción a NodeJS
 
WebRTC y Kurento en el T3cgFest 2015
WebRTC y Kurento en el T3cgFest 2015WebRTC y Kurento en el T3cgFest 2015
WebRTC y Kurento en el T3cgFest 2015
 
Java script(1)
Java script(1)Java script(1)
Java script(1)
 
Software libre para videoconferencias
Software libre para videoconferenciasSoftware libre para videoconferencias
Software libre para videoconferencias
 

Similar a Grails barcamp 2013

Grails 2013 - PUCMM - Santiago - Sistemas
Grails 2013 - PUCMM - Santiago - SistemasGrails 2013 - PUCMM - Santiago - Sistemas
Grails 2013 - PUCMM - Santiago - SistemasCarlos 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
 
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
 
Gwt seminario java_hispano_manolocarrasco
Gwt seminario java_hispano_manolocarrascoGwt seminario java_hispano_manolocarrasco
Gwt seminario java_hispano_manolocarrascoManuel Carrasco Moñino
 
Lenguaje Java
Lenguaje JavaLenguaje Java
Lenguaje Javapbcanessa
 
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
 
¿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
 
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
 
¿Grails + DDD + Eventsourcing + CQRS?
¿Grails + DDD + Eventsourcing + CQRS?¿Grails + DDD + Eventsourcing + CQRS?
¿Grails + DDD + Eventsourcing + CQRS?Jorge Franco Leza
 
Tutorial de prolog
Tutorial de prologTutorial de prolog
Tutorial de prologPedro Vera
 
Conceptos básicos y aplicaciones prácticas de programación para SEO
Conceptos básicos y aplicaciones prácticas de programación para SEOConceptos básicos y aplicaciones prácticas de programación para SEO
Conceptos básicos y aplicaciones prácticas de programación para SEOnacho mascort
 
Introducción a RubyOnRails
Introducción a RubyOnRailsIntroducción a RubyOnRails
Introducción a RubyOnRailsPablo Marrero
 

Similar a Grails barcamp 2013 (20)

Grails 2013 - PUCMM - Santiago - Sistemas
Grails 2013 - PUCMM - Santiago - SistemasGrails 2013 - PUCMM - Santiago - Sistemas
Grails 2013 - PUCMM - Santiago - Sistemas
 
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
 
Gwt I - entendiendo gwt
Gwt I - entendiendo gwtGwt I - entendiendo gwt
Gwt I - entendiendo gwt
 
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 ...
 
Gwt seminario java_hispano_manolocarrasco
Gwt seminario java_hispano_manolocarrascoGwt seminario java_hispano_manolocarrasco
Gwt seminario java_hispano_manolocarrasco
 
Aprendiendo GWT
Aprendiendo GWTAprendiendo GWT
Aprendiendo GWT
 
Lenguaje java
Lenguaje javaLenguaje java
Lenguaje java
 
Lenguaje Java
Lenguaje JavaLenguaje Java
Lenguaje Java
 
Pucela testingdays testing_en_php
Pucela testingdays testing_en_phpPucela testingdays testing_en_php
Pucela testingdays testing_en_php
 
Semana 2 Configuración entorno de desarrollo
Semana 2   Configuración entorno de desarrolloSemana 2   Configuración entorno de desarrollo
Semana 2 Configuración entorno de desarrollo
 
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
 
¿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?
 
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
 
Arquitectura
Arquitectura Arquitectura
Arquitectura
 
¿Grails + DDD + Eventsourcing + CQRS?
¿Grails + DDD + Eventsourcing + CQRS?¿Grails + DDD + Eventsourcing + CQRS?
¿Grails + DDD + Eventsourcing + CQRS?
 
Fondo1 (2)
Fondo1 (2)Fondo1 (2)
Fondo1 (2)
 
Tutorial de prolog
Tutorial de prologTutorial de prolog
Tutorial de prolog
 
Conceptos básicos y aplicaciones prácticas de programación para SEO
Conceptos básicos y aplicaciones prácticas de programación para SEOConceptos básicos y aplicaciones prácticas de programación para SEO
Conceptos básicos y aplicaciones prácticas de programación para SEO
 
Introducción a groovy & grails
Introducción a groovy & grailsIntroducción a groovy & grails
Introducción a groovy & grails
 
Introducción a RubyOnRails
Introducción a RubyOnRailsIntroducción a RubyOnRails
Introducción a RubyOnRails
 

Último

Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxNombre Apellidos
 
Excel (1) tecnologia.pdf trabajo Excel taller
Excel  (1) tecnologia.pdf trabajo Excel tallerExcel  (1) tecnologia.pdf trabajo Excel taller
Excel (1) tecnologia.pdf trabajo Excel tallerValentinaTabares11
 
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOAREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOnarvaezisabella21
 
Los Microcontroladores PIC, Aplicaciones
Los Microcontroladores PIC, AplicacionesLos Microcontroladores PIC, Aplicaciones
Los Microcontroladores PIC, AplicacionesEdomar AR
 
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del PerúRed Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del PerúCEFERINO DELGADO FLORES
 
Tecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxTecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxGESTECPERUSAC
 
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxEl_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxAlexander López
 
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxModelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxtjcesar1
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxAlexander López
 
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptTEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptJavierHerrera662252
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.241514949
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx241523733
 
Mapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMidwarHenryLOZAFLORE
 
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptLUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptchaverriemily794
 
Trabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfTrabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfedepmariaperez
 
El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son241514984
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx241522327
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA241531640
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxazmysanros90
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxaylincamaho
 

Último (20)

Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
 
Excel (1) tecnologia.pdf trabajo Excel taller
Excel  (1) tecnologia.pdf trabajo Excel tallerExcel  (1) tecnologia.pdf trabajo Excel taller
Excel (1) tecnologia.pdf trabajo Excel taller
 
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOAREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
 
Los Microcontroladores PIC, Aplicaciones
Los Microcontroladores PIC, AplicacionesLos Microcontroladores PIC, Aplicaciones
Los Microcontroladores PIC, Aplicaciones
 
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del PerúRed Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
 
Tecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxTecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptx
 
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxEl_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
 
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxModelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
 
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptTEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx
 
Mapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptx
 
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptLUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
 
Trabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfTrabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdf
 
El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptx
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
 

Grails barcamp 2013

  • 1. Desarrollo Web – Grails Ing. Carlos Camacho 16/11/2013
  • 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. – Coordinador de Sistemas, Reefer Services, S.A.S. – 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 :
  • 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
  • 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
  • 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. ¿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 código, más expresivo y flexible. Curva de aprendizaje mínima.
  • 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. 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. 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
  • 24. Fuertemente Integrado MVC GSP (Vista) Contenedor Servlet GORM Base de datos I18n Build Prueba Documentación
  • 25. ¿Quiénes Utilizan Grails? Fuente: http://grails.org/websites
  • 27.
  • 29. 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.
  • 30. Controladores ● ● Representan las clases encargada de procesar las peticiones de los clientes. Representa el controlador dentro del patrón MVC.
  • 31. 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.
  • 32. Servicios ● ● Artefacto para manejar las reglas de negocio. Gestionas la transacciones entre el controlador y las clases de dominios.
  • 33. Taglibs ● ● Permite encapsular componentes en la vista (HTML) con el objetivo de ser reutilizado. Uso simplificado contrario a otras tecnologías (JSP).
  • 34. Test ● ● Soporta pruebas unitarias y de integración. Las pruebas unitarias son componentes atómicos, buscan no depender de otras partes.
  • 35. 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
  • 36. 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)
  • 38. 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
  • 39. 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)