Ir al contenido

Cómo iniciar un servidor web usando Java

·423 palabras·2 mins
Programación
Alejandro Duarte
Autor
Alejandro Duarte
Alejandro Duarte es un Ingeniero de Software, escritor publicado y galardonado. Actualmente, trabaja para MariaDB plc como Ingeniero de Relaciones con Desarrolladores (Developer Relations Engineer). Comenzó su trayectoria en programación a los 13 años con BASIC en una rudimentaria pantalla negra, para lugo rápidamente transitar a C, C++ y Java durante sus años académicos en la Universidad Nacional de Colombia. Trasladándose primero al Reino Unido y luego a Finlandia, Alejandro profundizó su participación en la comunidad de código abierto. Es reconocido en los círculos de Java, acreditado con artículos y videos que acumulan millones de vistas, y presentaciones en eventos internacionales.

Nota: Traducido de la versión original en Inglés.

¿Quieres iniciar un servidor HTTP básico para servir los archivos de un directorio en tu máquina usando Java? Si es así, aquí te explico cómo hacerlo.

Disponible desde Java 18
#

Un servidor web simple está disponible desde Java 18. Instala tu distribución favorita de JDK 18 o posterior. Si no tienes una favorita, te recomiendo Eclipse Temurin (18 estará disponible poco después de la fecha de publicación de este artículo). También recomiendo usar SDKMAN! si estás en sistemas operativos similares a Linux. Este software hace mucho más fácil manejar múltiples versiones de JDK en la misma máquina. Por ejemplo, para probar Java 18 el mismo día en que se lanzó la implementación de referencia, solo ejecuté lo siguiente:

$ sdk install java 18-open

También puedes instalar otras distribuciones. Consulta las opciones disponibles ejecutando:

$ sdk list java

Verifica que la versión correcta de JDK esté instalada y en uso:

$ java --version

Deberías ver algo como lo siguiente:

openjdk 18 2022-03-22
OpenJDK Runtime Environment (build 18+36-2087)
OpenJDK 64-Bit Server VM (build 18+36-2087, mixed mode, sharing)

Crea un ejemplo de archivo HTML
#

Crea un nuevo directorio para alojar los archivos que deseas servir. Aquí está cómo hacerlo usando Linux/macOS:

$ mkdir web-content

Dentro de este directorio, crea un nuevo archivo index.html con el siguiente contenido:

<!DOCTYPE html>
<html lang="es">
    <head>
        <meta charset="utf-8">
        <title>Servidor HTTP de Java</title>
    </head>
    <body>
        <h1>¡Hola! 👋</h1>
        <p>
            Este contenido fue servido por el
            servidor básico HTTP de Java.
        </p>
    </body>
</html>

Consejo: Si estás en macOS, puedes copiar el fragmento de código anterior y crear el archivo con el texto copiado usando el siguiente comando: pbpaste > index.html.

Inicia el servidor
#

Inicia el servidor web HTTP:

$ jwebserver

Dirige tu navegador a  http://localhost:8000 y mira el archivo HTML renderizado:

Por defecto, el servidor sirve los archivos en el directorio actual usando el puerto 8000. Puedes sobrescribir los valores predeterminados de la siguiente manera:

$ jwebserver -d /ruta/a/algún/directorio/ -p 9999

Esto servirá los archivos en /ruta/a/algún/directorio/ en  http://localhost:9999. Asegúrate de usar una ruta absoluta, de lo contrario, aparecerá un error.

Alternativamente, puedes ejecutar el servidor usando el comando java:

$ java -m jdk.httpserver

Para detener el servidor, presiona CTRL+C en la terminal.

Limitaciones
#

Al momento de escribir esto, el servidor web HTTP básico de Java tiene algunas limitaciones:

  • No se admite HTTPS
  • No se admite HTTP2 (solo HTTP 1.1)
  • Solo se admiten los métodos de solicitud HTTP GET y HEAD

Consulta JEP 408: Simple Web Server para más información.

¿Te gustó este artículo? Puedo ayudar a tu equipo a implementar soluciones similares. Contáctame para saber más.

Relacionados

¿Qué es JPA?
·366 palabras·2 mins
Programación Bases de Datos
Nota: Traducido de la versión original en Inglés. JPA significa Jakarta Persistence API (anteriormente, Java Persistence API).
¿Qué es un pool de conexiones de base de datos?
·274 palabras·2 mins
Programación Bases de Datos
Nota: Traducido de la versión original en Inglés. Un pool de conexiones de base de datos almacena conexiones de base de datos listas para usar.
Cómo ejecutar consultas SQL desde Java (y prevenir inyecciones SQL)
·250 palabras·2 mins
Programación Bases de Datos
Nota: Traducido de la versión original en Inglés. Para ejecutar consultas SQL en Java, necesitas un objeto Connection.