Diferencia entre jar y war en Java

462

¿Cuál es la diferencia entre ay .jarun .wararchivo?
¿Es solo la extensión del archivo o hay algo más?

método de ayuda
fuente

Respuestas:

388

De Java Tips: Diferencia entre ear jar y war files :

Estos archivos son simplemente archivos comprimidos con la herramienta jar de Java. Estos archivos se crean para diferentes propósitos. Aquí está la descripción de estos archivos:

  • Archivos .jar: los archivos .jar contienen bibliotecas, recursos y archivos de accesorios como archivos de propiedades.

  • Archivos .war: el archivo war contiene la aplicación web que se puede implementar en cualquier contenedor de servlet / jsp. El archivo .war contiene jsp, html, javascript y otros archivos necesarios para el desarrollo de aplicaciones web.


Descripciones oficiales de Sun / Oracle:


Artículos de Wikipedia:

aioobe
fuente
10
Tengo una duda, ya que el jsp y los archivos de aplicaciones web adicionales no pueden estar en el archivo jar.
Emmanuel Angelo.R
@ EmmanuelAngelo.R Pueden: un archivo jar es solo un archivo zip. Si hará algo útil es otra cuestión, que depende del código que desea utilizar el archivo jar. Como un ejemplo interesante, el servidor Jenkins Continuous Integration se distribuye como un archivo WAR, que se puede ejecutar con "java -jar". Ver wiki.jenkins-ci.org/display/JENKINS/… para más detalles.
Thorbjørn Ravn Andersen
77

Un .wararchivo tiene una estructura específica en términos de dónde estarán ciertos archivos. Aparte de eso, sí, es solo un .jar.

TJ Crowder
fuente
40

Agrega componentes web a una aplicación J2EE en un paquete llamado archivo de aplicaciones web (WAR), que es un JAR similar al paquete utilizado para las bibliotecas de clases Java. Un WAR generalmente contiene otros recursos además de componentes web, que incluyen:

  • Clases de utilidad del lado del servidor (beans de base de datos, carritos de compras, etc.).
  • Recursos web estáticos (HTML, imágenes, archivos de sonido, etc.)
  • Clases del lado del cliente (applets y clases de utilidad)

Un WAR tiene una estructura de directorio jerárquica específica. El directorio de nivel superior de un WAR es la raíz del documento de la aplicación. La raíz del documento es donde se almacenan las páginas JSP, las clases y los archivos del lado del cliente y los recursos web estáticos.

( fuente )

Por lo tanto, un .war es un .jar, pero contiene componentes de aplicaciones web y se presenta de acuerdo con una estructura específica. Un .war está diseñado para implementarse en un servidor de aplicaciones web como Tomcat o Jetty o en un servidor Java EE como JBoss o Glassfish.

justkt
fuente
1
Entonces, ¿significa esto que si está creando una aplicación de servidor que solo usa sockets y no tiene ninguna interfaz de usuario, no hay necesidad de empaquetarla como un archivo de guerra?
bot_bot
De hecho, ahora estoy leyendo un poco más. No necesito Tomcat, puedo exportar el jar al servidor y ejecutarlo directamente desde allí.
bot_bot
40

WAR significa aplicación web ARchive

JAR significa Java ARchive

ingrese la descripción de la imagen aquí

Joby Wilson Mathews
fuente
y EAR es la aplicación Enterprise ARchive?
Financiador
15

Un .wararchivo es un Archivo de aplicación web que se ejecuta dentro de un servidor de aplicaciones, mientras que un .jarArchivo de aplicación Java ejecuta una aplicación de escritorio en la máquina de un usuario.

Justin Niessner
fuente
14
La segunda afirmación no es necesariamente cierta. Un jar también puede iniciar un servidor web incorporado, por ejemplo, con Spring Boot.
whirlwin
44
incluso esa afirmación no es del todo cierta. Un jar también puede ser simplemente una biblioteca de código para ser utilizado por otras aplicaciones. En otras palabras, puede que ni siquiera contenga una clase principal para ejecutar.
Kevin Welker
@KevinWelker estuvo de acuerdo. Incluso en 2011 (cuando se escribió esta publicación) un frasco podría representar una biblioteca. Sin embargo, el arranque de primavera no existía, por lo que puedo ver pasar por alto el hecho de que puede incrustar un servidor web en un frasco como el torbellino mencionado.
intrepistar_88
@Kevin Welker, no "no del todo", diría "no toda la verdad", ya que Whirlwin acaba de mencionar una excepción, que es totalmente cierto, ¿no?
Alexei Martianov el
12

Un archivo war es un archivo jar especial que se utiliza para empaquetar una aplicación web para facilitar su implementación en un servidor de aplicaciones. El contenido del archivo war debe seguir una estructura definida.

Vincent Ramdhanie
fuente
10

.jar y .war son archivos archivados comprimidos. Ambos pueden tener el archivo de manifiesto opcional META-INF / MANIFEST.MF que contiene información informativa como el control de versiones y atributos de instrucción como classpath y main-class para la JVM que lo ejecutará.

Archivo .war: archivo de aplicación web destinado a ejecutarse dentro de un 'Contenedor de servlet' y puede incluir otros archivos jar (en el directorio WEB-INF / lib) clases compiladas (en WEB-INF / classes (el servlet también va allí)) .jsp archivos de imágenes, archivos, etc. Todo el contenido WAR que existe para crear un módulo autónomo.

Haim Sulam
fuente
5

Básicamente ambos archivos comprimidos. war se usa para aplicaciones web con una estructura de directorios específica.

fmucar
fuente
4

war y jar son archivos para archivos java. war es un archivo web y se está ejecutando en un servidor web. jar es java archive.

nyanev
fuente
1

Guerra -

distribuir aplicaciones web basadas en Java. Un WAR tiene la misma estructura de archivos que un archivo JAR, que es un único archivo comprimido que contiene varios archivos agrupados dentro de él.

Tarro

Los archivos .jar contienen archivos de bibliotecas, recursos y accesorios como archivos de propiedades.

Los archivos WAR se usan para combinar JSP, servlets, archivos de clase Java, archivos XML, bibliotecas javascript, bibliotecas JAR, páginas web estáticas y cualquier otro recurso necesario para ejecutar la aplicación.

Akitha_MJ
fuente
0

Jar : - jar contiene solo .class war : - war contiene html, js, css y .class también páginas jsp y servlets

IT termal
fuente
0

Los archivos JAR permiten empaquetar múltiples archivos para usarlos como una biblioteca, complemento o cualquier tipo de aplicación. Por otro lado, los archivos WAR solo se usan para aplicaciones web.

JAR se puede crear con cualquier estructura deseada. Por el contrario, WAR tiene una estructura predefinida con directorios WEB-INF y META-INF.

Un archivo JAR permite que Java Runtime Environment (JRE) implemente una aplicación completa, incluidas las clases y los recursos asociados en una sola solicitud. Por otro lado, un archivo WAR permite probar e implementar una aplicación web fácilmente.

Abdul Alim Shakir
fuente
0

Una extensión de archivo JAR es .jar y se crea con el comando jar desde el símbolo del sistema (como se ejecuta el comando javac). Generalmente, un archivo JAR contiene recursos relacionados con Java como bibliotecas, clases, etc. El archivo JAR es como un archivo winzip, excepto que los archivos Jar son independientes de la plataforma.

Un archivo WAR es simplemente un archivo JAR pero contiene solo archivos Java relacionados con la Web como Servlets, JSP, HTML.

Para ejecutar un archivo WAR, se requiere un servidor web o un contenedor web, por ejemplo, Tomcat o Weblogic o Websphere. Para ejecutar un archivo JAR, basta con JDK simple.

Animesh Jaiswal
fuente