1. Libros y videos
  2. Java
  3. Desarrollo de aplicaciones web
Extrait - Java Los fundamentos del lenguaje (con ejercicios prácticos corregidos ) (2ª edición)
Extractos del libro
Java Los fundamentos del lenguaje (con ejercicios prácticos corregidos ) (2ª edición) Volver a la página de compra del libro

Desarrollo de aplicaciones web

Introducción

Hasta ahora, todos los ejemplos de código que hemos creado funcionan exclusivamente en modo textual. La información se muestra en una consola y también se introduce desde ella. Este modo de funcionamiento, aunque sencillo, es ideal para descubrir los fundamentos de un lenguaje de programación como Java.

Sin embargo, en el mundo real, muchas aplicaciones interactúan con sus usuarios no a través de una consola, sino a través de una interfaz de usuario accesible desde un navegador web. Este tipo de aplicación, comúnmente conocida como aplicación web, se basa en el intercambio de datos entre un servidor y un cliente. La función del servidor es escuchar las solicitudes del cliente, procesar la información recibida y devolver las respuestas adecuadas.

A continuación, se muestra una representación gráfica de una acción típica del usuario en una aplicación web con una arquitectura cliente/servidor:

images/cap5_pag384.png

Los servicios web modernos, ya sean sitios web, aplicaciones móviles o videojuegos en línea, siguen más o menos este esquema de solicitud/respuesta.

En este capítulo, exploraremos los principios fundamentales del desarrollo web con Java. No utilizaremos frameworks ni librerías complejas, solo el JDK, con el fin de familiarizarle con conceptos básicos como la gestión de solicitudes y respuestas....

Conceptos básicos para comprender la web

En este capítulo, exploraremos los principios fundamentales que permiten comprender el funcionamiento de las aplicaciones web modernas. Descubriremos qué es un API, cómo encaja en las interacciones entre aplicaciones y por qué desempeña un papel esencial en el desarrollo de software.

A continuación, presentaremos brevemente el protocolo HTTP y su importancia en los ecosistemas web modernos para que puedas comprender de forma concreta cómo interactuar con una aplicación web desde un terminal o un navegador.

1. ¿Qué es un API?

Un API o interfaz de programación de aplicaciones (Application Programming Interface), es un conjunto de reglas y mecanismos que permiten que dos aplicaciones se comuniquen entre sí. En lugar de manipular directamente los datos o las funcionalidades de un programa, una aplicación puede utilizar un API para interactuar con él de una manera controlada y predefinida.

Para ello, ponemos a disposición de nuestras aplicaciones cliente (las que van a consumir o manipular nuestros datos) una interfaz, es decir, un dispositivo, una organización lógica, para realizar estas acciones. A esto se le denomina contrato de interfaz.

Ejemplo sencillo de API

Imaginemos que reserva un billete de avión por Internet. Cuando introduce las fechas y los destinos, el sitio web envía esta información a un API que consulta una base de datos u otro...

Creación de un servidor web con el JDK

1. Presentación de la clase HttpServer

La clase HttpServer del JDK, disponible en el paquete com.sun.net.httpserver, permite crear un servidor HTTP básico sin dependencias externas. Es ideal para descubrir los conceptos fundamentales del desarrollo web en Java, centrándose en las herramientas nativas del lenguaje.

Esta clase implementa un servidor HTTP sencillo. Un HttpServer se asocia a una dirección IP y a un número de puerto y escucha las conexiones TCP entrantes de los clientes en esa dirección. La subclase HttpsServer implementa un servidor capaz de procesar solicitudes HTTPS.

Se deben asociar uno o varios objetos HttpHandler a un servidor para poder procesar las solicitudes. Cada HttpHandler se registra con un URI raíz ( ) que representa la ubicación de la aplicación o el servicio en ese servidor. La asociación entre un gestor y un HttpServer se encapsula en un objeto HttpContext. Los HttpContext se crean llamando al siguiente método: createContext(String, HttpHandler).

Cualquier solicitud para la que no se encuentre ningún gestor se rechaza con una respuesta 404. Consulte la subsección Introducción al protocolo HTTP para comprender los diferentes estados HTTP.

La documentación de Oracle para la clase HttpServer está disponible en la siguiente dirección: https://docs.oracle.com/en/java/javase/21/docs/api/jdk.httpserver/com/sun/net/httpserver/HttpServer.html

Estos son los métodos esenciales para comprender y utilizar la clase HttpServer

  • create(InetSocketAddress address, int backlog): este método crea una instancia de servidor HTTP. Recibe como parámetros:

  • address: la dirección y el puerto en los que el servidor está a la escucha,

  • backlog: el número máximo de conexiones en espera.

Por ejemplo:

HttpServer server = HttpServer.create(new InetSocketAddress(8080), 0); 
  • createContext(String path, HttpHandler handler): este método permite definir lo que en la terminología de HttpServer se denomina "contexto". Un contexto representa una ruta específica del servidor (como una ruta URL) y está asociado a una lógica de procesamiento. El término "contexto" se utiliza aquí para reflejar el concepto más amplio de escenarios o áreas funcionales...

Módulo de logging

En esta sección, exploraremos el módulo java.logging, que permite añadir registros (“logs” en inglés) a sus aplicaciones Java. Los logs son esenciales para supervisar el comportamiento de una aplicación, depurar problemas y proporcionar información valiosa en producción.

Los logs se añaden al código fuente de un programa para mostrar texto, tal y como hemos hecho a lo largo del libro mediante System.out.println(). Sin embargo, el módulo java.logging ofrece más funcionalidades que una simple llamada al método println(). En efecto, como veremos, existen varios niveles de registros que reflejan los diferentes comportamientos de un programa Java.

1. ¿Qué es el logging?

El logging consiste en registrar mensajes para documentar lo que hace una aplicación en un momento dado. Estos mensajes pueden contener diversa información, como por ejemplo:

  • el inicio o el final de un proceso,

  • un error o una excepción,

  • una acción del usuario o un evento del sistema.

Los registros permiten comprender lo que ocurre en una aplicación, tanto durante el desarrollo como en producción. En producción, esto significa que la aplicación se implementa y se utilizada por usuarios finales u otros sistemas en un entorno real, a menudo en un servidor o en una infraestructura externa. Se trata de una fase en la que los logs desempeñan un papel crucial para supervisar el rendimiento y diagnosticar problemas.

El módulo java.util.logging, incluido en el JDK, proporciona un completo sistema de gestión de logs. La clase principal...