Diferencias entre el empaquetado JAR y WAR

Resumen

En este rápido tutorial, nos centraremos en las diferencias entre el empaquetado JAR y WAR en Java.

Primero, definiremos cada opción de empaquetado por separado. Después, resumiremos sus diferencias.

Empaquetado JAR

En pocas palabras, JAR – o Java Archive – es un formato de archivo de paquete. Los archivos JAR tienen la extensión .jar y pueden contener bibliotecas, recursos y archivos de metadatos.

Esencialmente, es un archivo comprimido que contiene las versiones comprimidas de los archivos .class y los recursos de las bibliotecas y aplicaciones Java compiladas.

Por ejemplo, esta es una estructura simple de archivo JAR:

META-INF/ MANIFEST.MFcom/ baeldung/ MyApplication.class

El archivo META-INF/MANIFEST.MF puede contener metadatos adicionales sobre los ficheros almacenados en el archivo.

Podemos crear un archivo JAR utilizando el comando jar o con herramientas como Maven.

Empaquetado WAR

WAR significa Web Application Archive o Web Application Resource. Estos ficheros de archivo tienen la extensión .war y se utilizan para empaquetar aplicaciones web que podemos desplegar en cualquier contenedor Servlet/JSP.

Aquí tenemos un ejemplo de la estructura de un fichero WAR típico:

En su interior tiene un directorio META-INF que contiene información útil en el MANIFEST.MF sobre el archivo web. El directorio META-INF es privado y no se puede acceder a él desde el exterior.

Por otro lado, también contiene el directorio público WEB-INF con todos los recursos web estáticos, incluyendo páginas HTML, imágenes y archivos JS. Además, contiene el archivo web.xml, las clases servlet y las bibliotecas.

Podemos utilizar las mismas herramientas y comandos que utilizamos para construir un JAR para construir un archivo .war.

Diferencias clave

Entonces, ¿cuáles son las diferencias clave entre estos dos tipos de archivo?

La primera y más obvia diferencia es la extensión del archivo. Los JAR tienen la extensión .jar, mientras que el archivo WAR tiene la extensión .war.

La segunda diferencia principal es su propósito y la forma en que funcionan. Los archivos JAR nos permiten empaquetar múltiples archivos para utilizarlos como biblioteca, plugin o cualquier tipo de aplicación. Por otro lado, los archivos WAR se utilizan únicamente para aplicaciones web.

La estructura de los archivos también es diferente. Podemos crear un JAR con cualquier estructura deseada. En cambio, los WAR tienen una estructura predefinida con los directorios WEB-INF y META-INF.

Por último, podemos ejecutar un JAR desde la línea de comandos si lo construimos como un JAR ejecutable sin utilizar software adicional. O bien, podemos utilizarlo como una biblioteca. En cambio, necesitamos un servidor para ejecutar un WAR.

Conclusión

En este rápido artículo, hemos comparado los tipos de empaquetado Java .jar y .war. Al hacerlo, también hemos observado que, aunque ambos utilizan el mismo formato de archivo ZIP, existen varias diferencias importantes.

Comienza con Spring 5 y Spring Boot 2, a través del curso Aprende Spring:

>> CONSULTA EL CURSO

Deja una respuesta

Tu dirección de correo electrónico no será publicada.