Ir al contenido principal

Instalando Apache NetBeans 10 y configurarlo con Jakarta EE

Java EE 8 | Server Push (Servlet 4.0) y MVC

En el anterior post habíamos visto un resumen de todas las nuevas características que tendrá Java EE 8. Aquí detallaremos un poco de Servlet 4.0 que consiste básicamente en la funcionalidad Server Push.

Servlet 4.0 Server Push


HTTP/2 viene con muchas características nuevas, y una de ellas es la que permite, con una sola petición, recibir todas las peticiones necesarias.

Por ejemplo, un HTML llama a varios .js y varias imágenes. Por cada tag que invoca a esos recursos (href o src) corresponda a una nueva petición que se hace desde el cliente al servidor web. Esto hace que el navegador trabaje más y que hayan más peticiones por cada página cargada. Se han intentando varias maneras de agilizar las peticiones por ejemplo usando caché, minimizando los .js o hasta hacer sprites de imágenes (una gran imagen se carga una vez y luego se usan pedazos para mostrar lo necesario).

Con HTTP/2 se puede hacer que: a una sola llamada al HTML, el servidor devuelva todas las peticiones necesarias.

Aquí tengo un ejemplo en ejecución. (Clic para ampliar la imagen)



Es un HTML que invoca a una imagen y a un javascript. En el lado izquierdo es la manera tradicional: tres peticiones realizadas por el navegador.

A la derecha se ve la petición usando Server Push: una petición, pero los dos recursos son devueltos como "regalo".

Ojo: El Server Push funciona sobre HTTPS. Así que asegúrense de que esté funcionando el protocolo respectivo.

Para este ejemplo lo ejecuté sobre GlassFish 5.0, y utilicé su protocolo preconfigurado https (puerto 8181)

El código fuente para generar el Server Push es el que sigue:
El HTML es simple. Lo que hago en este servlet es redireccionar la petición al HTML necesario.

MVC 1.0

Esta nueva característica ya fue hablada anteriormente. Consiste en separar en capas MVC una aplicación Web. Lo genial de esto es que no se necesitará conocer más tags o clases. Estará basado en la arquitectura JAX-RS. Esto también nos permitirá tener una misma clase endpoint de RESTful como controlador de MVC.

Más detalle de esto está en el post Java EE 8 - MVC 1.0 Allí hay ejemplos para ver con más detalle

Código fuente

El código fuente de esta ejemplo se encuentra aquí para que lo disfruten, bajo repositorio Git:

Bibliografía adicional

Considero que debemos revisar material adicional que nos ayude a entender más de todo esto:
Este post está basado en las publicaciones de Elder Moraes.

Comentarios

Entradas más populares de este blog

RESTful... la forma más ligera de hacer WebServices (Parte 1)

Quienes hayan usado SOAP para WebService, sabrán que es bien fácil de diseñar, pero algo complicado de consumir: se necesita toda una API para construir los clientes utilizando el WSDL. Por ejemplo, para PHP se necesita de la biblioteca NuSOAP. Entonces, para lograr el concepto de "lenguaje único XML" es un dolor de cabeza. Y más aún si el cliente es tan simple como JavaScript, manejar XML de SOAP provocaría suicidos masivos... o no usar WebServices.

Además, con SOAP se permite crear un solo servicio y ponerle varios métodos. Esto puede llevar a un mal diseño del servicio ya que podría tener un servicio que haga de todo: por ejemplo, un servicio de manejo de Clientes que permita también manejar Proveedores.

RESTful es una propuesta muy interesante de Roy Fielding que permite manejar los servicios web con métodos definidos, manteniendo la simpleza del protocolo como XML, pero que cada servicio sea identificado únicamente con un solo URI.

En este post veremos cómo crear un Ser…

¿Por valor o por referencia?

Esta es una pregunta existencial para todo programador Java. Cada uno encuentra una respuesta satisfactoria. Pero ahora veremos, basándonos en el libro para Certificación SCJP 1.5 de Katty Sierra, sobre la respuesta correcta.

Contraseñas encriptadas con Java

¿Quién no ha querido encriptar texto o archivo? Hay diversas maneras para hacer eso, por ejemplo, utilizando un diccionario donde se reemplazara cada caracter por un código.. y para poder desencriptarlo se debería utilizar el mismo diccionario para revertir el proceso. Pero si el diccionario cae en manos de alguien que no queremos que lo sepa, entonces estamos en peligro.
Cuando yo programaba en pascal, mi encriptación favorita era invirtiendo los bits... pero cualquiera también puede invertir los bits y listo.
Pero ya gente experta logró algoritmos de encriptación populares. Los más conocidos: MD5 y SHA.
En este post hablaremos cómo encriptar texto, sobretodo las contraseñas, utilizando MD5 o SHA.