51
Web Frameworks Ligeros y Micros Sobre Java Ing. Carlos Camacho Santiago, República Dominicana, 29/11/2014 Barcamp.org.do

Web framework ligeros y micros en java barcamp 2014

Embed Size (px)

DESCRIPTION

Presentación enfocada a mostrar las funcionalidades más importante de los micro framework Spark y Ratpack. Dando una inducción a los conceptos básicos en su utilización del protocolo HTTP y los servicios REST. Impartida en la segunda edición en el Barcamp 2014, Pontificia Universidad Católica Madre y Maestra (PUCMM), Santiago de los Caballeros, República Dominicana.

Citation preview

Page 1: Web framework ligeros y micros en java   barcamp 2014

Web Frameworks Ligeros y Micros Sobre Java

Ing. Carlos Camacho

Santiago, República Dominicana, 29/11/2014Barcamp.org.do

Page 2: Web framework ligeros y micros en java   barcamp 2014

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)

Page 3: Web framework ligeros y micros en java   barcamp 2014

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 7 años de experiencia desarrollo de sistemas en tecnología Java (JSE y JEE).

– 4 años de implementación en sistemas basados en Groovy y Grails.

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

– Fundación Código Libre Santiago - Miembro Fundador.

– Presidente AvatharTech.

Page 4: Web framework ligeros y micros en java   barcamp 2014

Objetivos

● Inducción protocolo HTTP.● Inducción REST.● Utilización micro framework web en la JVM.

Page 5: Web framework ligeros y micros en java   barcamp 2014

Agenda

● Protocolo HTTP.● Servicios REST.● Diferencia framework web pesados, ligeros y

Micros.● Framework Ligeros:

– Spark → Java

– Ratpack → Groovy

Page 6: Web framework ligeros y micros en java   barcamp 2014

Protocolo HTTP

Page 7: Web framework ligeros y micros en java   barcamp 2014

HyperText Transfer Protocol

● Protocolo utilizado en cada transacción de World Wide Web.

● Orientado a transacción● Características técnicas:

o TCPo IPo Puertos: 80 y 443 (SSL)

● Sin estado● Transacción sobre recursos (URL)● Escalable● Controlado por la W3C.

Page 8: Web framework ligeros y micros en java   barcamp 2014

Uniform Resource Locator (URL)

● Mecanismo para encontrar recursos.● La dirección es única.● Trabaja de la mano con el servicio de DNS

(Domain Name Services)● El formato Utilizado es:

o protocolo://dirección:puerto/contexto/ruta_recurso

Page 9: Web framework ligeros y micros en java   barcamp 2014

Peticiones HTTP

● Donde SP, representa Espacio en Blanco.● CRLF, cambio de línea y retorno de carro.● Métodos: Get, Post, Header, Put, Delete, Trace,

Options, Connect y Patch.

● Las Cabeceras o Headers, información necesaria o complementaria para procesar la petición.

● Valores entre paréntesis son opcionales y *, pueden repetirse.

Page 10: Web framework ligeros y micros en java   barcamp 2014

Ejemplo Petición Http

● En el navegador Chrome, abrir la herramienta de desarrollador.

● Visitar a http://www.pucmm.edu.do/

Page 11: Web framework ligeros y micros en java   barcamp 2014

Respuesta HTTP

● Código de estado, indica si la transacción fue ejecutada de manera correcta.

● El cuerpo del mensaje, corresponde al valor retornado por el servidor.

Page 12: Web framework ligeros y micros en java   barcamp 2014

Códigos de Estado

● 1xx: Mensajes.● 2xx: Operación realizada con éxito.

o 200: Ok.● 3xx: Redirección.

o 304: No modificado.● 4xx: Error por el cliente.

o 404: No encontrado.● 5xx: Error por el servidor.

o 500: Error Interno.

Page 13: Web framework ligeros y micros en java   barcamp 2014

Ejemplo Respuesta Http

● En el navegador Chrome, abrir la herramienta de desarrollador.

● Visitar a http://www.pucmm.edu.do/

Page 14: Web framework ligeros y micros en java   barcamp 2014

Conversación HTTP

Page 15: Web framework ligeros y micros en java   barcamp 2014

¿Sin Estado?

● Stateless Protocol● No guarda información entre transacción,

cada petición sigue el mismo proceso.● Una vez entregada la información la

conexión se cierra.● Permite escalar con mucha facilidad.

Page 16: Web framework ligeros y micros en java   barcamp 2014

Servicios REST

Page 17: Web framework ligeros y micros en java   barcamp 2014

¿Qué es REST?

● REST, REpresentational State Transfer, Es un estilo de arquitectura de software distribuido.

● Definición simple, permitiendo una fácil integración entre servidor y cliente.

● Presentado por Roy Fielding en el 2000, en su tesis doctoral.

Piensa en REST como:

“Cuando un navegador obtiene y visualiza un elemento de una página html, está obteniendo la representación del estado actual de un recurso.”

Page 18: Web framework ligeros y micros en java   barcamp 2014

Diseño API REST

● Se basan en cuatro principios:

o Utiliza los métodos HTTP de manera explícita.o No mantiene estado. (Como el protocolo

HTTP).o Expone las URI (Uniform Resource Identifier)

como directorios.o Transfiere formato definidos por el

programador, XML, JSON, entre otros.

Page 19: Web framework ligeros y micros en java   barcamp 2014

Métodos HTTP Explícita

● Se utiliza los métodos del protocolo HTTP, como asociación uno a uno con las operaciones de crear, leer, actualizar y borrar.

Page 20: Web framework ligeros y micros en java   barcamp 2014

Métodos Http Explícita - 1

● Si tenemos un servicio para la gestión de los estudiantes, corriendo en la siguiente dirección: http://localhost/rest/estudiante?buscar=”Carlos%”

Método Http Acción

POST Error

GET Retorna todos los estudiantes con el criterio de búsqueda.

PUT Error

DELETE Borra todos los estudiantes con el criterio de búsqueda.

Page 21: Web framework ligeros y micros en java   barcamp 2014

Métodos Http Explícita - 2

● Si tenemos un servicio para la gestión de los estudiantes, corriendo en la siguiente dirección: http://localhost/rest/estudiante?matricula=valor1&nombre=valor2&.

Método Http Acción

PUT Crear un estudiante

GET Retorna todos los estudiantes con el criterio de búsqueda.

POST Actualiza un estudiante

DELETE Borra todos los estudiantes con el criterio de búsqueda.

Page 22: Web framework ligeros y micros en java   barcamp 2014

URI en forma de directorios

● Las URI utilizadas en un servicios REST debe ser intuitiva, Auto-documentadas y fácil de implementar. Ejemplos:

o http://localhos/rest/estudiante/{matricula}o http://localhos/rest/estudiante/isc/2001/1136o http://localhos/rest/estudiante/resgistro/{año}/{mes}/{nombre

}

Page 23: Web framework ligeros y micros en java   barcamp 2014

Transfiere formatos

● Indica los datos que estaremos recibiendo y transfiriendo entre servidor y cliente.

● Indicando el MIME-TYPE se controla y se valida las peticiones.

o application/jsono application/xmlo application/htmlo plain/text

Page 24: Web framework ligeros y micros en java   barcamp 2014

Frameworks

Page 25: Web framework ligeros y micros en java   barcamp 2014

¿Framework?● “Un conjunto estandarizado de conceptos,

prácticas y criterios para enfocar un tipo de problemática particular que sirve como referencia, para enfrentar y resolver nuevos problemas de índole similar.” Wikipedia, 2014

● Puntos importantes:– Estandarización de conceptos.

– Referencia para resolver problemas en concreto.

– Disminución de la curva de aprendizaje.

– Agilizar el tiempo de desarrollo.

Page 26: Web framework ligeros y micros en java   barcamp 2014

¿Framework Web?

● Es un conjunto de componente orientado al desarrollo de aplicaciones Web, interactuando con el protocolo HTTP.

Listado de Frameworks Web por Lenguaje de Programación

Lenguaje Cantidad

ASP.NET 6

C++ 4

Haskell 3

Java 34

JavaScritp 9

Scala 3

Perl 5

PHP 26

Python 16

Ruby 7

http://en.wikipedia.org/wiki/Comparison_of_web_application_frameworks

Page 27: Web framework ligeros y micros en java   barcamp 2014

¿Framework Pesados, Ligeros y Micros?

● Es una categoría de los framework en función:– A sus dependencias de clases o librerías.

– Escalabilidad.

– Manejo de carga.

– Bajo o alto acople.

– Visión para resolver un problema en contexto.

● La categoría de un framework puede variar en el tiempo.

http://en.wikipedia.org/wiki/Comparison_of_web_application_frameworks

Page 28: Web framework ligeros y micros en java   barcamp 2014

Framework Pesados● Son diseñados para abarcar la solución de problemas

de un amplio espectro:– Programación distribuida.

– Clúster de servidores de aplicaciones

– Manejo de transacciones

– Varios API | Módulos | JSR trabajando entre si.

– Proporcional al uso de recursos que demandan.

– Curva de aprendiza más pronunciada.

● En Java:– JEE 7

– Frameworks Full Stack.

Page 29: Web framework ligeros y micros en java   barcamp 2014

Framework Ligero

● Diseñados para trabajar problemas específicos**.

● Baja dependencias en librerías externas.● Curva de aprendizaje menos pronunciada.● Utiliza menos recursos.● Pueden utilizar o no contenedores (Servidores

de aplicaciones).

Page 30: Web framework ligeros y micros en java   barcamp 2014

Framework Micro

● Diseñados para un problema en concreto. (DSL)

● No están atados a patrones de arquitectura, como es el MVC (Model – View - Controller).

● En el contexto Web:– Implementan protocolo HTTP.

– Orientado a servicios REST.

– Pueden implementar manejo de plantillas.

– Poca dependencia en librerías.

Page 31: Web framework ligeros y micros en java   barcamp 2014
Page 32: Web framework ligeros y micros en java   barcamp 2014

Spark

● Inspirado en Sinatra (Ruby).● Permite trabajar con el protocolo HTTP en

minutos.● Enfocado resolver problemas de integración y

aplicaciones web para un problema en concreto.

● API rediseñada para trabajar en Java 8 con los lambdas.

● Basado en Servlets.

Page 33: Web framework ligeros y micros en java   barcamp 2014

Características

● Disponible en repositorio Maven.● Motor de rutas.● Cookies.● Sesiones.● Filtros.● Excepciones.● Templates.

Page 34: Web framework ligeros y micros en java   barcamp 2014

Hola Mundo Spark

● Incluir la dependencia bajo Gradle:

compile 'com.sparkjava:spark-core:2.0.0'

● Crear clase con el siguiente código:

Page 35: Web framework ligeros y micros en java   barcamp 2014

Manejo de Rutas

● Se definen por tres simples elementos:– Método HTTP → get, post, put, delete, options.

– Ruta → /barcamp /barcamp/2014

– Función callback → (request, response) → {}

Page 36: Web framework ligeros y micros en java   barcamp 2014

Ejemplo de Rutas

Page 37: Web framework ligeros y micros en java   barcamp 2014

Trazabilidad de Peticiones

● Cookies: Pequeña información (4KB) enviada por un sitio web y almacenada en el navegador del cliente. Cada vez que se realiza una petición la información es enviada nuevamente al sitio web.

● Sesiones: Crea un identificar único en el servidor para la primera petición de un usuario, enviado dicho ID mediante una Cookie al cliente. En el servidor es creado un ambito de variable que tiene vigencia mientras la sesión este disponible.

Page 38: Web framework ligeros y micros en java   barcamp 2014

Ejemplo de Cookies y Sesiones

Page 39: Web framework ligeros y micros en java   barcamp 2014

Filtros

● Son elementos que permites interceptar las llamadas antes de alcanzar el recurso solicitado y después de procesarlo.

● Son utilizados para controlar elementos transversales de nuestra aplicación, como son:– Seguridad.

– Registro de log.

– Agregar o cambiar Header del protocolo HTTP.

Page 40: Web framework ligeros y micros en java   barcamp 2014

Ejemplo de Filtros

Page 41: Web framework ligeros y micros en java   barcamp 2014

Plantillas

● Implementa un patrón de arquitectura Modelo – Vista, separando elementos de la vista con el modelo de datos.

● Permite trabajar en paginas más vistosas incluyendo CSS, JavaScritp e Imágenes.

● Spark implementa varios motores de plantilla:– Freemarker.

– Velocity.

– Mustache.

Page 42: Web framework ligeros y micros en java   barcamp 2014

Ejemplo de Plantilla

Page 43: Web framework ligeros y micros en java   barcamp 2014

Presentación Proyecto SparkBarcamp

Page 44: Web framework ligeros y micros en java   barcamp 2014
Page 45: Web framework ligeros y micros en java   barcamp 2014

Ratpack

● Inspirado en Sinatra (Ruby).● Construido sobre Netty**.● Escrito en Java.● Optimizado para Groovy.● Alto rendimiento.● Integración Google Guice. (Opcional)● Integración Gradle. (Opcional)● No utiliza contenedor de Servlets.● Utiliza pocos recursos.

Page 46: Web framework ligeros y micros en java   barcamp 2014

Ratpack & Netty

● Netty es un framework NIO (Non-blocking I/O) para aplicaciones que requieran el manejo de protocolo de red, TCP, UDP, FTP, SMTP, RSTP, HTTP, entre otros.

● Netty simplifica el desarrollo de aplicaciones asincronas (Event-driven)

● Ratpack utiliza a Netty para simplificar el desarrollo de aplicaciones bajo el protocolo HTTP.

Page 47: Web framework ligeros y micros en java   barcamp 2014

Hola Mundo Ratpack

● Incluir la dependencia bajo Gradle:

compile 'io.ratpack:ratpack-groovy:0.9.10'

● Crear Script Groovy con el siguiente código:

Page 48: Web framework ligeros y micros en java   barcamp 2014

Presentación Proyecto RatPackBarcamp

Page 49: Web framework ligeros y micros en java   barcamp 2014

Spark o Ratpack

● Ambos están diseñados para trabajar con Java 8.

● Spark es una envoltura a los funcionalidades de los Servlet.

● Ratpack utiliza Netty, soporte de llamadas no bloqueantes. Facilita el desarrollo de aplicaciones utilizando HTTP.

● Spark mejor documentación.

Page 50: Web framework ligeros y micros en java   barcamp 2014

¿Preguntas?