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
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.
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
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.
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.
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)