2011-05-03 27 views

Respuesta

266

De Java Tips: Difference between ear jar and war files:

Estos archivos son simplemente archivos comprimidos utilizando la herramienta jar de Java. Estos archivos son creados para diferentes propósitos. Aquí es la descripción de estos archivos:

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

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

descripciones

Oficial Sun/Oracle:


artículos de Wikipedia:

+7

Estoy teniendo una duda como jsp y archivos adicionales de la aplicación web por qué no pueden estar en el archivo jar. –

+0

@ EmmanuelAngelo.R Pueden: un archivo jar es solo un archivo zip. Si va a hacer algo útil es otra cuestión, que depende del código que desea utilizar el archivo jar. Como un ejemplo interesante, el servidor de integración continua de Jenkins se distribuye como un archivo WAR, que se puede ejecutar con "java -jar". Consulte https://wiki.jenkins-ci.org/display/JENKINS/Starting+and+Accessing+Jenkins para obtener más detalles. –

3

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

10

Un archivo de la aplicación web que se ejecuta dentro de un servidor de aplicaciones mientras que .jar es Java Application Archive que ejecuta una aplicación de escritorio en la máquina de un usuario.

+5

La segunda declaración no es necesariamente cierta. Un jar también puede iniciar un servidor web incorporado, p. con Spring Boot. – whirlwin

+1

incluso esa afirmación no es del todo cierta. Un jar también puede ser una biblioteca de código para ser utilizado por otras aplicaciones. En otras palabras, puede que ni siquiera contenga una clase principal para correr. –

+0

@KevinWelker estuvo de acuerdo. Incluso en 2011 (cuando se escribió esta publicación), un jar todavía podría representar una biblioteca. Sin embargo, la bota de primavera no estaba disponible, así que puedo ver el hecho de que puedes insertar un servidor web en un contenedor como se mencionó en el torbellino. –

50

A .war file tiene una estructura específica en cuanto a dónde estarán determinados archivos. Aparte de eso, sí, es solo un .jar.

4

básicamente dos archivos comprimidos. war se usa para aplicaciones web con una estructura de directorio específica.

32

Para agregar componentes de Internet para una aplicación J2EE en un paquete llamado un archivo de aplicación web (WAR), que es un JAR similar al paquete utilizado para las bibliotecas de clases de Java. A WAR generalmente contiene otros recursos además de componentes web, incluidos:

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

Una guerra tiene una estructura jerárquica de directorios 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 archivos del lado del cliente y los recursos web estáticos.

(source)

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

+0

¿Significa esto que si está compilando una aplicación de servidor que solo usa sockets y no tiene ninguna UI, no hay necesidad de empaquetarla como un archivo war? –

+0

En realidad, ahora estoy leyendo un poco más. No necesito Tomcat, solo puedo exportar el jar al servidor y ejecutarlo directamente desde allí. –

9

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

7

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

.war file - Archivo de aplicaciones web destinado a ejecutarse dentro de un 'Servlet Container' 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 está allí para crear un módulo autónomo.

33

La principal diferencia entre un JAR y un WAR es que un JAR no es realmente un formato de propósito único, mientras que un WAR es. Con un archivo JAR, puede empaquetar muchas cosas diferentes. Por lo general, usted empaqueta las clases de Java, pero puede poner casi cualquier cosa en un archivo JAR, y puede crear archivos JAR que tengan los archivos y formatos de directorios que desee. Por ejemplo, Oracle (al menos en 8.1.x) usa realmente archivos JAR para distribuir el software de Oracle en los CD de instalación, e IBM los utiliza para distribuir una versión instalable de la documentación para WebSphere. Técnicamente, puede colocar páginas JSP, páginas HTML, clases de servlet, etc. en un JAR, pero generalmente no lo hace; utiliza un WAR.

Los archivos WAR son archivos JAR con un formato específico. Este formato se define en la especificación del servlet (que puede consultar en el sitio java.sun.com). Básicamente, el archivo WAR es un formato estándar para aplicaciones web que tiene directorios específicos y archivos específicos. Esto incluye un directorio WEB-INF, un archivo WEB-INF/web.xml utilizado para describir la aplicación, un directorio WEB-INF/lib para archivos JAR utilizados por la aplicación, y un directorio WEB-INF/classes para archivos de clase que no se distribuyen en un JAR. También pondría las páginas (JSP y HTML) en la GUERRA. Luego, puede distribuir su aplicación como un solo archivo, en lugar de como una colección de imágenes, páginas HTML y clases de Java.

+1

Pregunta rápida, estoy construyendo un pequeño servidor usando NIO, pero se trata de conexiones basadas en sockets con un protocolo personalizado, sin HTTP, sin UI, sin HTML, CSS, Javascript. Se conecta a una base de datos en el servidor para guardar el contenido recibido a través de las conexiones de socket. ¿Importa si está empaquetado como una jarra o una guerra? ¿Hay beneficios de rendimiento de construir una guerra si la estoy usando en un servidor tomcat incluso si se trata de conexiones de socket sin procesar? –

4

Los archivos jar (los archivos con una extensión .jar) están destinados a contener bibliotecas genéricas de clases de Java, recursos, archivos auxiliares, etc.Mientras que los archivos War (archivos con una extensión .war) están destinados a contener aplicaciones web completas. En este contexto, una aplicación web se define como un único grupo de archivos, clases, recursos, archivos .jar que se pueden empaquetar y acceder como un contexto de servlet.

5

EAR es un archivo de aplicación empresarial y puede contener archivos JAR ejb, archivos WAR y archivos RAR (conector). También pueden contener bibliotecas de terceros, pero debe saber cómo manipular los recursos de extensión de Java (por ejemplo, la directiva MANIFEST.MF Class-Path) para que funcione bien.

WAR es un archivo de aplicaciones web y contiene JSP, archivos servidos HTTP "normales" (HTML, imágenes, etc.), servlets, bibliotecas de etiquetas.

JAR es el archivo de la aplicación Java "normal", pero en este contexto generalmente contiene EJB en lugar de bibliotecas de códigos o aplicaciones ejecutables (por ejemplo, desde fuera de un contenedor de aplicaciones).

+0

"código del remitente hereuch"? – Noumenon

Cuestiones relacionadas