Web Frameworks Ligeros y Micros 
Sobre Java 
Ing. Carlos Camacho 
Santiago, República Dominicana, 29/11/2014 
Barcamp.org....
Presentación (un poco personal) 
● Carlos Camacho. 
– Profesor por vocación. 
– Pertenezco al lado oscuro de la fuerza (Da...
Presentación (un poco más serio) 
● Carlos Camacho. 
– Ingeniero Telemático. 
– Magíster Tecnología Educativa. 
– Profesor...
Objetivos 
● Inducción protocolo HTTP. 
● Inducción REST. 
● Utilización micro framework web en la JVM.
Agenda 
● Protocolo HTTP. 
● Servicios REST. 
● Diferencia framework web pesados, ligeros y 
Micros. 
● Framework Ligeros:...
Protocolo HTTP
HyperText Transfer Protocol 
● Protocolo utilizado en cada transacción de 
World Wide Web. 
● Orientado a transacción 
● C...
Uniform Resource Locator (URL) 
● Mecanismo para encontrar recursos. 
● La dirección es única. 
● Trabaja de la mano con e...
Peticiones HTTP 
● Donde SP, representa Espacio en Blanco. 
● CRLF, cambio de línea y retorno de carro. 
● Métodos: Get, P...
Ejemplo Petición Http 
● En el navegador Chrome, abrir la 
herramienta de desarrollador. 
● Visitar a http://www.pucmm.edu...
Respuesta HTTP 
● Código de estado, indica si la transacción fue ejecutada 
de manera correcta. 
● El cuerpo del mensaje, ...
Códigos de Estado 
● 1xx: Mensajes. 
● 2xx: Operación realizada con éxito. 
o 200: Ok. 
● 3xx: Redirección. 
o 304: No mod...
Ejemplo Respuesta Http 
● En el navegador Chrome, abrir la 
herramienta de desarrollador. 
● Visitar a http://www.pucmm.ed...
Conversación HTTP
¿Sin Estado? 
● Stateless Protocol 
● No guarda información entre transacción, 
cada petición sigue el mismo proceso. 
● U...
Servicios REST
¿Qué es REST? 
● REST, REpresentational State Transfer, Es un 
estilo de arquitectura de software distribuido. 
● Definici...
Diseño API REST 
● Se basan en cuatro principios: 
o Utiliza los métodos HTTP de manera explícita. 
o No mantiene estado. ...
Métodos HTTP Explícita 
● Se utiliza los métodos del protocolo HTTP, como 
asociación uno a uno con las operaciones de 
cr...
Métodos Http Explícita - 1 
● Si tenemos un servicio para la gestión de los 
estudiantes, corriendo en la siguiente direcc...
Métodos Http Explícita - 2 
● Si tenemos un servicio para la gestión de los 
estudiantes, corriendo en la siguiente direcc...
URI en forma de directorios 
● Las URI utilizadas en un servicios REST debe 
ser intuitiva, Auto-documentadas y fácil de 
...
Transfiere formatos 
● Indica los datos que estaremos recibiendo y 
transfiriendo entre servidor y cliente. 
● Indicando e...
Frameworks
¿Framework? 
● “Un conjunto estandarizado de conceptos, 
prácticas y criterios para enfocar un tipo de 
problemática parti...
¿Framework Web? 
● Es un conjunto de componente orientado al 
desarrollo de aplicaciones Web, interactuando 
con el protoc...
¿Framework Pesados, Ligeros y Micros? 
● Es una categoría de los framework en 
función: 
– A sus dependencias de clases o ...
Framework Pesados 
● Son diseñados para abarcar la solución de problemas 
de un amplio espectro: 
– Programación distribui...
Framework Ligero 
● Diseñados para trabajar problemas 
específicos**. 
● Baja dependencias en librerías externas. 
● Curva...
Framework Micro 
● Diseñados para un problema en concreto. 
(DSL) 
● No están atados a patrones de arquitectura, 
como es ...
Spark 
● Inspirado en Sinatra (Ruby). 
● Permite trabajar con el protocolo HTTP en 
minutos. 
● Enfocado resolver problema...
Características 
● Disponible en repositorio Maven. 
● Motor de rutas. 
● Cookies. 
● Sesiones. 
● Filtros. 
● Excepciones...
Hola Mundo Spark 
● Incluir la dependencia bajo Gradle: 
compile 'com.sparkjava:spark-core:2.0.0' 
● Crear clase con el si...
Manejo de Rutas 
● Se definen por tres simples elementos: 
– Método HTTP → get, post, put, delete, options. 
– Ruta → /bar...
Ejemplo de Rutas
Trazabilidad de Peticiones 
● Cookies: Pequeña información (4KB) enviada 
por un sitio web y almacenada en el 
navegador d...
Ejemplo de Cookies y Sesiones
Filtros 
● Son elementos que permites interceptar las 
llamadas antes de alcanzar el recurso 
solicitado y después de proc...
Ejemplo de Filtros
Plantillas 
● Implementa un patrón de arquitectura Modelo 
– Vista, separando elementos de la vista con 
el modelo de dato...
Ejemplo de Plantilla
Presentación Proyecto SparkBarcamp
Ratpack 
● Inspirado en Sinatra (Ruby). 
● Construido sobre Netty**. 
● Escrito en Java. 
● Optimizado para Groovy. 
● Alt...
Ratpack & Netty 
● Netty es un framework NIO (Non-blocking I/O) 
para aplicaciones que requieran el manejo de 
protocolo d...
Hola Mundo Ratpack 
● Incluir la dependencia bajo Gradle: 
compile 'io.ratpack:ratpack-groovy:0.9.10' 
● Crear Script Groo...
Presentación Proyecto RatPackBarcamp
Spark o Ratpack 
● Ambos están diseñados para trabajar con 
Java 8. 
● Spark es una envoltura a los funcionalidades 
de lo...
¿Preguntas?
Contacto 
Email: carlosalfredocamacho@gmail.com / 
ccamachog@avathartech.com 
Twitter: ccamachog 
Github: vacax 
LinkedIn:...
Web framework ligeros y micros en java   barcamp 2014
Web framework ligeros y micros en java   barcamp 2014
Nächste SlideShare
Wird geladen in …5
×

Web framework ligeros y micros en java barcamp 2014

686 Aufrufe

Veröffentlicht am

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.

Veröffentlicht in: Software
  • Als Erste(r) kommentieren

Web framework ligeros y micros en java barcamp 2014

  1. 1. Web Frameworks Ligeros y Micros Sobre Java Ing. Carlos Camacho Santiago, República Dominicana, 29/11/2014 Barcamp.org.do
  2. 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. 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 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.
  4. 4. Objetivos ● Inducción protocolo HTTP. ● Inducción REST. ● Utilización micro framework web en la JVM.
  5. 5. Agenda ● Protocolo HTTP. ● Servicios REST. ● Diferencia framework web pesados, ligeros y Micros. ● Framework Ligeros: – Spark → Java – Ratpack → Groovy
  6. 6. Protocolo HTTP
  7. 7. HyperText Transfer Protocol ● Protocolo utilizado en cada transacción de World Wide Web. ● Orientado a transacción ● Características técnicas: o TCP o IP o Puertos: 80 y 443 (SSL) ● Sin estado ● Transacción sobre recursos (URL) ● Escalable ● Controlado por la W3C.
  8. 8. 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
  9. 9. 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.
  10. 10. Ejemplo Petición Http ● En el navegador Chrome, abrir la herramienta de desarrollador. ● Visitar a http://www.pucmm.edu.do/
  11. 11. 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.
  12. 12. 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.
  13. 13. Ejemplo Respuesta Http ● En el navegador Chrome, abrir la herramienta de desarrollador. ● Visitar a http://www.pucmm.edu.do/
  14. 14. Conversación HTTP
  15. 15. ¿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.
  16. 16. Servicios REST
  17. 17. ¿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.”
  18. 18. 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.
  19. 19. 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.
  20. 20. 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.
  21. 21. 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.
  22. 22. 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/1136 o http://localhos/rest/estudiante/resgistro/{año}/{mes}/{}
  23. 23. 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/json o application/xml o application/html o plain/text
  24. 24. Frameworks
  25. 25. ¿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.
  26. 26. ¿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
  27. 27. ¿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
  28. 28. 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.
  29. 29. 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).
  30. 30. 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.
  31. 31. 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.
  32. 32. Características ● Disponible en repositorio Maven. ● Motor de rutas. ● Cookies. ● Sesiones. ● Filtros. ● Excepciones. ● Templates.
  33. 33. Hola Mundo Spark ● Incluir la dependencia bajo Gradle: compile 'com.sparkjava:spark-core:2.0.0' ● Crear clase con el siguiente código:
  34. 34. 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) → {}
  35. 35. Ejemplo de Rutas
  36. 36. 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.
  37. 37. Ejemplo de Cookies y Sesiones
  38. 38. 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.
  39. 39. Ejemplo de Filtros
  40. 40. 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.
  41. 41. Ejemplo de Plantilla
  42. 42. Presentación Proyecto SparkBarcamp
  43. 43. 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.
  44. 44. 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.
  45. 45. Hola Mundo Ratpack ● Incluir la dependencia bajo Gradle: compile 'io.ratpack:ratpack-groovy:0.9.10' ● Crear Script Groovy con el siguiente código:
  46. 46. Presentación Proyecto RatPackBarcamp
  47. 47. 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.
  48. 48. ¿Preguntas?
  49. 49. Contacto Email: carlosalfredocamacho@gmail.com / ccamachog@avathartech.com Twitter: ccamachog Github: vacax LinkedIn: ccamachog Muchas Gracias

×