SlideShare une entreprise Scribd logo
1  sur  51
Web Frameworks Ligeros y Micros 
Sobre Java 
Ing. Carlos Camacho 
Santiago, República Dominicana, 29/11/2014 
Barcamp.org.do
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 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.
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: 
– Spark → Java 
– Ratpack → Groovy
Protocolo HTTP
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.
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
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.
Ejemplo Petición Http 
● En el navegador Chrome, abrir la 
herramienta de desarrollador. 
● Visitar a http://www.pucmm.edu.do/
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.
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.
Ejemplo Respuesta Http 
● En el navegador Chrome, abrir la 
herramienta de desarrollador. 
● Visitar a http://www.pucmm.edu.do/
Conversación HTTP
¿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.
Servicios REST
¿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.”
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.
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.
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.
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.
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}/{}
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
Frameworks
¿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.
¿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
¿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
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.
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).
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.
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.
Características 
● Disponible en repositorio Maven. 
● Motor de rutas. 
● Cookies. 
● Sesiones. 
● Filtros. 
● Excepciones. 
● Templates.
Hola Mundo Spark 
● Incluir la dependencia bajo Gradle: 
compile 'com.sparkjava:spark-core:2.0.0' 
● Crear clase con el siguiente código:
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) → {}
Ejemplo de Rutas
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.
Ejemplo de Cookies y Sesiones
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.
Ejemplo de Filtros
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.
Ejemplo de Plantilla
Presentación Proyecto SparkBarcamp
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.
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.
Hola Mundo Ratpack 
● Incluir la dependencia bajo Gradle: 
compile 'io.ratpack:ratpack-groovy:0.9.10' 
● Crear Script Groovy con el siguiente código:
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 los Servlet. 
● Ratpack utiliza Netty, soporte de llamadas no 
bloqueantes. Facilita el desarrollo de 
aplicaciones utilizando HTTP. 
● Spark mejor documentación.
¿Preguntas?
Contacto 
Email: carlosalfredocamacho@gmail.com / 
ccamachog@avathartech.com 
Twitter: ccamachog 
Github: vacax 
LinkedIn: ccamachog 
Muchas Gracias

Contenu connexe

Tendances

Tutorial Web Services en PHP, REST, SOAP
Tutorial Web Services en PHP, REST, SOAPTutorial Web Services en PHP, REST, SOAP
Tutorial Web Services en PHP, REST, SOAPElwin Huaman
 
Estudio comparativo de PHP, ASP.NET Y JAVA
Estudio comparativo de PHP, ASP.NET Y JAVAEstudio comparativo de PHP, ASP.NET Y JAVA
Estudio comparativo de PHP, ASP.NET Y JAVAHelmilpa
 
Drupal8 & Symfony2
Drupal8 & Symfony2Drupal8 & Symfony2
Drupal8 & Symfony2Magd Kudama
 
[ES] Introdución al desarrollo de aplicaciones web en java
[ES] Introdución al desarrollo de aplicaciones  web en java[ES] Introdución al desarrollo de aplicaciones  web en java
[ES] Introdución al desarrollo de aplicaciones web en javaEudris Cabrera
 

Tendances (9)

Tutorial Web Services en PHP, REST, SOAP
Tutorial Web Services en PHP, REST, SOAPTutorial Web Services en PHP, REST, SOAP
Tutorial Web Services en PHP, REST, SOAP
 
Estudio comparativo de PHP, ASP.NET Y JAVA
Estudio comparativo de PHP, ASP.NET Y JAVAEstudio comparativo de PHP, ASP.NET Y JAVA
Estudio comparativo de PHP, ASP.NET Y JAVA
 
Jdbc
JdbcJdbc
Jdbc
 
Drupal8 & Symfony2
Drupal8 & Symfony2Drupal8 & Symfony2
Drupal8 & Symfony2
 
Stack mean
Stack meanStack mean
Stack mean
 
[ES] Introdución al desarrollo de aplicaciones web en java
[ES] Introdución al desarrollo de aplicaciones  web en java[ES] Introdución al desarrollo de aplicaciones  web en java
[ES] Introdución al desarrollo de aplicaciones web en java
 
Presentacion curso de php
Presentacion curso de phpPresentacion curso de php
Presentacion curso de php
 
Curso introductorio a Raptor.js con Node.js
Curso introductorio a Raptor.js con Node.jsCurso introductorio a Raptor.js con Node.js
Curso introductorio a Raptor.js con Node.js
 
MEAN Stack
MEAN StackMEAN Stack
MEAN Stack
 

En vedette

Maxus Dijital Dünyaya Bakış Ağustos 2013
Maxus Dijital Dünyaya Bakış Ağustos 2013Maxus Dijital Dünyaya Bakış Ağustos 2013
Maxus Dijital Dünyaya Bakış Ağustos 2013Maxus Turkey
 
Ríos África
Ríos ÁfricaRíos África
Ríos Áfricaiesasorey
 
Eurosport mediakit english
Eurosport mediakit englishEurosport mediakit english
Eurosport mediakit englishAC&M Group
 
123RF Stock Photos Plugin for Joomla Manual Documentation
123RF Stock Photos Plugin for Joomla  Manual Documentation123RF Stock Photos Plugin for Joomla  Manual Documentation
123RF Stock Photos Plugin for Joomla Manual DocumentationInmagine Group
 
HEC MBA High Tech Careers by Andre Dan
HEC MBA High Tech Careers   by Andre DanHEC MBA High Tech Careers   by Andre Dan
HEC MBA High Tech Careers by Andre DanAndré Dan
 
Preventing the impact of seawater transfer on feed intake in salmon
Preventing the impact of seawater transfer on feed intake in salmonPreventing the impact of seawater transfer on feed intake in salmon
Preventing the impact of seawater transfer on feed intake in salmonInternational Aquafeed
 
Scratchpads Intro: Swiss Orchid Foundation
Scratchpads Intro: Swiss Orchid FoundationScratchpads Intro: Swiss Orchid Foundation
Scratchpads Intro: Swiss Orchid FoundationEdward Baker
 
Asesorias legales prepagadas
Asesorias legales prepagadasAsesorias legales prepagadas
Asesorias legales prepagadasAlier Ramirez
 
Florida Library Association 2016 Conference Guide
Florida Library Association 2016 Conference GuideFlorida Library Association 2016 Conference Guide
Florida Library Association 2016 Conference GuideMaria Gebhardt
 
Conte En Pau i l'estel de colors
Conte En Pau i l'estel de colorsConte En Pau i l'estel de colors
Conte En Pau i l'estel de colorsCristina Duarte
 
Conceptos básicos del corán. spanish. español
Conceptos básicos del corán. spanish. españolConceptos básicos del corán. spanish. español
Conceptos básicos del corán. spanish. españolHarunyahyaSpanish
 
Entrevista a Luis Galindo - Reilusionarse
Entrevista a Luis Galindo - ReilusionarseEntrevista a Luis Galindo - Reilusionarse
Entrevista a Luis Galindo - ReilusionarseMontse de Paz
 
Research 141114100640-conversion-gate02
Research 141114100640-conversion-gate02Research 141114100640-conversion-gate02
Research 141114100640-conversion-gate02HannahMizen
 

En vedette (20)

Maxus Dijital Dünyaya Bakış Ağustos 2013
Maxus Dijital Dünyaya Bakış Ağustos 2013Maxus Dijital Dünyaya Bakış Ağustos 2013
Maxus Dijital Dünyaya Bakış Ağustos 2013
 
Complain less
Complain lessComplain less
Complain less
 
McClymond - CV - 010117
McClymond - CV - 010117McClymond - CV - 010117
McClymond - CV - 010117
 
Ríos África
Ríos ÁfricaRíos África
Ríos África
 
Eurosport mediakit english
Eurosport mediakit englishEurosport mediakit english
Eurosport mediakit english
 
IA Robotica
IA RoboticaIA Robotica
IA Robotica
 
123RF Stock Photos Plugin for Joomla Manual Documentation
123RF Stock Photos Plugin for Joomla  Manual Documentation123RF Stock Photos Plugin for Joomla  Manual Documentation
123RF Stock Photos Plugin for Joomla Manual Documentation
 
HEC MBA High Tech Careers by Andre Dan
HEC MBA High Tech Careers   by Andre DanHEC MBA High Tech Careers   by Andre Dan
HEC MBA High Tech Careers by Andre Dan
 
E29
E29E29
E29
 
Preventing the impact of seawater transfer on feed intake in salmon
Preventing the impact of seawater transfer on feed intake in salmonPreventing the impact of seawater transfer on feed intake in salmon
Preventing the impact of seawater transfer on feed intake in salmon
 
Scratchpads Intro: Swiss Orchid Foundation
Scratchpads Intro: Swiss Orchid FoundationScratchpads Intro: Swiss Orchid Foundation
Scratchpads Intro: Swiss Orchid Foundation
 
Asesorias legales prepagadas
Asesorias legales prepagadasAsesorias legales prepagadas
Asesorias legales prepagadas
 
Restaurante LOGAN
Restaurante LOGANRestaurante LOGAN
Restaurante LOGAN
 
02 13 original rosa ignea www.gftaognosticaespiritual.org
02 13 original rosa ignea www.gftaognosticaespiritual.org02 13 original rosa ignea www.gftaognosticaespiritual.org
02 13 original rosa ignea www.gftaognosticaespiritual.org
 
Informe Caso 3
Informe Caso 3Informe Caso 3
Informe Caso 3
 
Florida Library Association 2016 Conference Guide
Florida Library Association 2016 Conference GuideFlorida Library Association 2016 Conference Guide
Florida Library Association 2016 Conference Guide
 
Conte En Pau i l'estel de colors
Conte En Pau i l'estel de colorsConte En Pau i l'estel de colors
Conte En Pau i l'estel de colors
 
Conceptos básicos del corán. spanish. español
Conceptos básicos del corán. spanish. españolConceptos básicos del corán. spanish. español
Conceptos básicos del corán. spanish. español
 
Entrevista a Luis Galindo - Reilusionarse
Entrevista a Luis Galindo - ReilusionarseEntrevista a Luis Galindo - Reilusionarse
Entrevista a Luis Galindo - Reilusionarse
 
Research 141114100640-conversion-gate02
Research 141114100640-conversion-gate02Research 141114100640-conversion-gate02
Research 141114100640-conversion-gate02
 

Similaire à Web Frameworks Java Ligeros

Grails 2013 - PUCMM - Santiago - Sistemas
Grails 2013 - PUCMM - Santiago - SistemasGrails 2013 - PUCMM - Santiago - Sistemas
Grails 2013 - PUCMM - Santiago - SistemasCarlos Camacho
 
Manual 2014 i 04 lenguaje de programación ii (0870)
Manual 2014 i 04 lenguaje de programación ii (0870)Manual 2014 i 04 lenguaje de programación ii (0870)
Manual 2014 i 04 lenguaje de programación ii (0870)Robert Rayco Quiroz
 
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
 
Curso: Programación Web con Tecnología Java
Curso:  	Programación Web con Tecnología JavaCurso:  	Programación Web con Tecnología Java
Curso: Programación Web con Tecnología Javaalvaro alcocer sotil
 
Cómo crear un RESTful API con Go
Cómo crear un RESTful API con GoCómo crear un RESTful API con Go
Cómo crear un RESTful API con GoSoftware Guru
 
2. Revision de Tecnologias Web.pdf
2. Revision de Tecnologias Web.pdf2. Revision de Tecnologias Web.pdf
2. Revision de Tecnologias Web.pdfCarlosDavidMontellan
 
Adaptación de JMeter para la minería de datos de estructuras de páginas web.
Adaptación de JMeter para la minería de datos de estructuras de páginas web.Adaptación de JMeter para la minería de datos de estructuras de páginas web.
Adaptación de JMeter para la minería de datos de estructuras de páginas web.Agustín Sabater
 
Tecnologías web.pptx
Tecnologías web.pptxTecnologías web.pptx
Tecnologías web.pptxGabrielCarbas
 
J2 Ee Para Seres Humanos Slides
J2 Ee Para Seres Humanos SlidesJ2 Ee Para Seres Humanos Slides
J2 Ee Para Seres Humanos Slidesmundojava
 
Introducción al desarrollo web moderno
Introducción al desarrollo web modernoIntroducción al desarrollo web moderno
Introducción al desarrollo web modernoSebastián Rocco
 
Django - Curso Básico - Principales Conceptos
Django - Curso Básico - Principales ConceptosDjango - Curso Básico - Principales Conceptos
Django - Curso Básico - Principales ConceptosGeorge Navarro Gomez
 
Django - Curso Básico - Principales Conceptos
Django - Curso Básico - Principales ConceptosDjango - Curso Básico - Principales Conceptos
Django - Curso Básico - Principales ConceptosGeorge Navarro Gomez
 
Introducción a Tomcat
Introducción a TomcatIntroducción a Tomcat
Introducción a TomcatIker Canarias
 
Drupal 8 WorkShop - e-Ghost 2015
Drupal 8 WorkShop - e-Ghost 2015  Drupal 8 WorkShop - e-Ghost 2015
Drupal 8 WorkShop - e-Ghost 2015 Keopx
 

Similaire à Web Frameworks Java Ligeros (20)

Grails barcamp 2013
Grails barcamp 2013Grails barcamp 2013
Grails barcamp 2013
 
Grails 2013 - PUCMM - Santiago - Sistemas
Grails 2013 - PUCMM - Santiago - SistemasGrails 2013 - PUCMM - Santiago - Sistemas
Grails 2013 - PUCMM - Santiago - Sistemas
 
Manual 2014 i 04 lenguaje de programación ii (0870)
Manual 2014 i 04 lenguaje de programación ii (0870)Manual 2014 i 04 lenguaje de programación ii (0870)
Manual 2014 i 04 lenguaje de programación ii (0870)
 
S7-DAW-2022S1.pptx
S7-DAW-2022S1.pptxS7-DAW-2022S1.pptx
S7-DAW-2022S1.pptx
 
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 ...
 
S3-DAW-2022S1.pptx
S3-DAW-2022S1.pptxS3-DAW-2022S1.pptx
S3-DAW-2022S1.pptx
 
Curso: Programación Web con Tecnología Java
Curso:  	Programación Web con Tecnología JavaCurso:  	Programación Web con Tecnología Java
Curso: Programación Web con Tecnología Java
 
ASP.NET MVC
ASP.NET MVCASP.NET MVC
ASP.NET MVC
 
5-Unidad 2: Diseño de Vista-2.2 Para Web
5-Unidad 2: Diseño de Vista-2.2 Para Web5-Unidad 2: Diseño de Vista-2.2 Para Web
5-Unidad 2: Diseño de Vista-2.2 Para Web
 
Cómo crear un RESTful API con Go
Cómo crear un RESTful API con GoCómo crear un RESTful API con Go
Cómo crear un RESTful API con Go
 
Semana 7 Servicios Web REST con MongoDB final
Semana 7   Servicios Web REST con MongoDB finalSemana 7   Servicios Web REST con MongoDB final
Semana 7 Servicios Web REST con MongoDB final
 
2. Revision de Tecnologias Web.pdf
2. Revision de Tecnologias Web.pdf2. Revision de Tecnologias Web.pdf
2. Revision de Tecnologias Web.pdf
 
Adaptación de JMeter para la minería de datos de estructuras de páginas web.
Adaptación de JMeter para la minería de datos de estructuras de páginas web.Adaptación de JMeter para la minería de datos de estructuras de páginas web.
Adaptación de JMeter para la minería de datos de estructuras de páginas web.
 
Tecnologías web.pptx
Tecnologías web.pptxTecnologías web.pptx
Tecnologías web.pptx
 
J2 Ee Para Seres Humanos Slides
J2 Ee Para Seres Humanos SlidesJ2 Ee Para Seres Humanos Slides
J2 Ee Para Seres Humanos Slides
 
Introducción al desarrollo web moderno
Introducción al desarrollo web modernoIntroducción al desarrollo web moderno
Introducción al desarrollo web moderno
 
Django - Curso Básico - Principales Conceptos
Django - Curso Básico - Principales ConceptosDjango - Curso Básico - Principales Conceptos
Django - Curso Básico - Principales Conceptos
 
Django - Curso Básico - Principales Conceptos
Django - Curso Básico - Principales ConceptosDjango - Curso Básico - Principales Conceptos
Django - Curso Básico - Principales Conceptos
 
Introducción a Tomcat
Introducción a TomcatIntroducción a Tomcat
Introducción a Tomcat
 
Drupal 8 WorkShop - e-Ghost 2015
Drupal 8 WorkShop - e-Ghost 2015  Drupal 8 WorkShop - e-Ghost 2015
Drupal 8 WorkShop - e-Ghost 2015
 

Web Frameworks Java Ligeros

  • 1. Web Frameworks Ligeros y Micros Sobre Java Ing. Carlos Camacho Santiago, República Dominicana, 29/11/2014 Barcamp.org.do
  • 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 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. Objetivos ● Inducción protocolo HTTP. ● Inducción REST. ● Utilización micro framework web en la JVM.
  • 5. Agenda ● Protocolo HTTP. ● Servicios REST. ● Diferencia framework web pesados, ligeros y Micros. ● Framework Ligeros: – Spark → Java – Ratpack → Groovy
  • 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. 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. 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. Ejemplo Petición Http ● En el navegador Chrome, abrir la herramienta de desarrollador. ● Visitar a http://www.pucmm.edu.do/
  • 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. 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. Ejemplo Respuesta Http ● En el navegador Chrome, abrir la herramienta de desarrollador. ● Visitar a http://www.pucmm.edu.do/
  • 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.
  • 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. 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. 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. 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. 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. 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. 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
  • 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. ¿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. ¿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. 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. 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. 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.
  • 32. 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.
  • 33. Características ● Disponible en repositorio Maven. ● Motor de rutas. ● Cookies. ● Sesiones. ● Filtros. ● Excepciones. ● Templates.
  • 34. Hola Mundo Spark ● Incluir la dependencia bajo Gradle: compile 'com.sparkjava:spark-core:2.0.0' ● Crear clase con el siguiente código:
  • 35. 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) → {}
  • 37. 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.
  • 38. Ejemplo de Cookies y Sesiones
  • 39. 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.
  • 41. 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.
  • 44.
  • 45. 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.
  • 46. 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.
  • 47. Hola Mundo Ratpack ● Incluir la dependencia bajo Gradle: compile 'io.ratpack:ratpack-groovy:0.9.10' ● Crear Script Groovy con el siguiente código:
  • 49. 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.
  • 51. Contacto Email: carlosalfredocamacho@gmail.com / ccamachog@avathartech.com Twitter: ccamachog Github: vacax LinkedIn: ccamachog Muchas Gracias