SlideShare ist ein Scribd-Unternehmen logo
1 von 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

Weitere ähnliche Inhalte

Was ist angesagt?

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
Jobsket
 
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
Sergio Gil
 
Java script(1)
Java script(1)Java script(1)
Java script(1)
trazco
 

Was ist angesagt? (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
 

Ähnlich wie Grails barcamp 2013

Gwt seminario java_hispano_manolocarrasco
Gwt seminario java_hispano_manolocarrascoGwt seminario java_hispano_manolocarrasco
Gwt seminario java_hispano_manolocarrasco
Manuel Carrasco Moñino
 
Tutorial de prolog
Tutorial de prologTutorial de prolog
Tutorial de prolog
Pedro Vera
 

Ähnlich wie 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
 

Kürzlich hochgeladen

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
FagnerLisboa3
 
Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdf
AnnimoUno1
 

Kürzlich hochgeladen (15)

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
 
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfRefrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
 
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
 
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
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
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
 
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
 
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 FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
 
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
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
presentacion de PowerPoint de la fuente de poder.pptx
presentacion de PowerPoint de la fuente de poder.pptxpresentacion de PowerPoint de la fuente de poder.pptx
presentacion de PowerPoint de la fuente de poder.pptx
 
Presentación de elementos de afilado con esmeril
Presentación de elementos de afilado con esmerilPresentación de elementos de afilado con esmeril
Presentación de elementos de afilado con esmeril
 
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxEL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
 
Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdf
 

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)