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 Ingeniero de Software, escritor, Ingeniero de Relaciones con Desarrolladores en MariaDB y consultor en desarrollo de software. Ha programado computadores desde mediados de los 90s. Comenzando con BASIC, Alejandro transitó a C, C++ y Java durante sus años académicos en la Universidad Nacional de Colombia. Se mudó primero al Reino Unido y luego a Finlandia para profundizar su participación en la industria del código abierto. Alejandro es reconocido en círculos de Java y MariaDB.
Tabla de contenido

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
Una introducción a Jakarta Persistence API y su uso en aplicaciones Java.
¿Qué es un pool de conexiones de base de datos?
·273 palabras·2 mins
Programación Bases De Datos
Una explicación de los pools de conexiones de base de datos y cómo usarlos en aplicaciones Java.
Cómo ejecutar consultas SQL desde Java (y prevenir inyecciones SQL)
·250 palabras·2 mins
Programación Bases De Datos
Instrucciones sobre cómo ejecutar consultas SQL en Java y prevenir inyecciones SQL.