Différence entre pot et guerre en Java

462

Quelle est la différence entre un .jaret un .warfichier?
Est-ce seulement l'extension du fichier ou y a-t-il quelque chose de plus?

méthode d'aide
la source

Réponses:

388

De Java Tips: Différence entre le bocal d'oreille et les fichiers de guerre :

Ces fichiers sont simplement des fichiers compressés à l'aide de l'outil java jar. Ces fichiers sont créés à des fins différentes. Voici la description de ces fichiers:

  • Fichiers .jar: les fichiers .jar contiennent des fichiers de bibliothèques, de ressources et d'accessoires comme des fichiers de propriétés.

  • Fichiers .war: le fichier war contient l'application Web qui peut être déployée sur n'importe quel conteneur servlet / jsp. Le fichier .war contient jsp, html, javascript et autres fichiers nécessaires au développement d'applications Web.


Descriptions officielles Sun / Oracle:


Articles Wikipédia:

aioobe
la source
10
J'ai un doute en tant que jsp et fichiers d'application Web supplémentaires pourquoi je ne peux pas être dans le fichier jar.
Emmanuel Angelo.R
@ EmmanuelAngelo.R Ils peuvent - un fichier jar est juste un fichier zip. S'il fait quelque chose d'utile, c'est une autre affaire, qui dépend du code que vous souhaitez utiliser le fichier jar. À titre d'exemple intéressant, le serveur d'intégration continue Jenkins est distribué sous forme de fichier WAR, qui peut être exécuté avec "java -jar". Voir wiki.jenkins-ci.org/display/JENKINS/… pour plus de détails.
Thorbjørn Ravn Andersen
77

Un .warfichier a une structure spécifique en termes de l'emplacement de certains fichiers. A part ça, oui, c'est juste un .jar.

TJ Crowder
la source
40

Vous ajoutez des composants Web à une application J2EE dans un package appelé archive d'application Web (WAR), qui est un JAR similaire au package utilisé pour les bibliothèques de classes Java. Un WAR contient généralement d'autres ressources en plus des composants Web, notamment:

  • Classes d'utilitaires côté serveur (beans de base de données, paniers d'achat, etc.).
  • Ressources Web statiques (fichiers HTML, images et sons, etc.)
  • Classes côté client (applets et classes utilitaires)

Un WAR a une structure de répertoires hiérarchique spécifique. Le répertoire de niveau supérieur d'un WAR est la racine du document de l'application. La racine du document est l'emplacement de stockage des pages JSP, des classes et archives côté client et des ressources Web statiques.

( source )

Un .war est donc un .jar, mais il contient des composants d'application Web et est disposé selon une structure spécifique. Un .war est conçu pour être déployé sur un serveur d'applications Web tel que Tomcat ou Jetty ou un serveur Java EE tel que JBoss ou Glassfish.

justkt
la source
1
Cela signifie-t-il donc que si vous créez une application serveur qui utilise uniquement des sockets et n'a pas d'interface utilisateur, il n'est pas nécessaire de la regrouper en fichier de guerre?
bot_bot
En fait, maintenant je lis un peu plus, je n'ai pas besoin de Tomcat, je peux simplement exporter le pot sur le serveur et l'exécuter directement à partir de là.
bot_bot
40

WAR signifie application Web ARchive

JAR signifie Java ARchive

entrez la description de l'image ici

Joby Wilson Mathews
la source
et EAR est ARchive d'application d'entreprise?
Funder
15

Un .warfichier est une archive d'application Web qui s'exécute à l'intérieur d'un serveur d'applications tandis qu'une .jararchive d'application Java est qui exécute une application de bureau sur la machine d'un utilisateur.

Justin Niessner
la source
14
La deuxième affirmation n'est pas nécessairement vraie. Un bocal peut également démarrer un serveur Web intégré, par exemple avec Spring Boot.
whirlwin
4
même cette affirmation n'est pas entièrement vraie. Un bocal peut également être simplement une bibliothèque de code à utiliser par d'autres applications. En d'autres termes, il peut même ne pas contenir de classe principale pour l'exécution.
Kevin Welker
@KevinWelker a accepté. Même en 2011 (lorsque cet article a été écrit), un pot pouvait toujours représenter une bibliothèque. Cependant, Spring Boot n'était pas là, donc je peux voir le fait que vous pouvez intégrer un serveur Web dans un pot comme le tourbillon mentionné.
intrepistar_88
@Kevin Welker, pas "pas entièrement", je dirais "pas toute la vérité" comme Whirlwin vient de mentionner une exception, ce qui est tout à fait vrai, n'est-ce pas?
Alexei Martianov
12

Un fichier war est un fichier jar spécial qui est utilisé pour empaqueter une application Web pour faciliter son déploiement sur un serveur d'applications. Le contenu du fichier de guerre doit suivre une structure définie.

Vincent Ramdhanie
la source
10

.jar et .war sont tous deux des fichiers archivés zippés. Les deux peuvent avoir le fichier manifeste META-INF / MANIFEST.MF facultatif qui contient des informations informatives comme le versioning, et des attributs pédagogiques comme classpath et main-class pour la JVM qui l'exécutera.

Fichier .war - Web Application Archive destiné à être exécuté dans un 'Servlet Container' et peut inclure d'autres fichiers jar (dans le répertoire WEB-INF / lib) des classes compilées (dans WEB-INF / classes (le servlet y va aussi)) .jsp fichiers images, fichiers etc. Tout le contenu WAR qui est là afin de créer un module autonome.

Haim Sulam
la source
5

Fondamentalement, les deux archives compressées. war est utilisé pour les applications Web avec une structure de répertoires spécifique.

fmucar
la source
4

war et jar sont des archives pour les fichiers java. la guerre est une archive Web et ils fonctionnent sur un serveur Web. jar est une archive java.

nyanev
la source
1

Guerre -

distribuer des applications Web basées sur Java. Un WAR a la même structure de fichier qu'un fichier JAR, qui est un fichier compressé unique qui contient plusieurs fichiers regroupés à l'intérieur.

Pot -

Les fichiers .jar contiennent des bibliothèques, des ressources et des fichiers d'accessoires comme des fichiers de propriétés.

Les fichiers WAR sont utilisés pour combiner les JSP, les servlets, les fichiers de classe Java, les fichiers XML, les bibliothèques javascript, les bibliothèques JAR, les pages Web statiques et toutes les autres ressources nécessaires pour exécuter l'application.

Akitha_MJ
la source
0

Jar : - jar contient uniquement .class war : - war contient html, js, css et .class ainsi que jsp et pages de servlets

Thermal IT
la source
0

Les fichiers JAR permettent de regrouper plusieurs fichiers afin de les utiliser comme bibliothèque, plugin ou tout type d'application. En revanche, les fichiers WAR sont utilisés uniquement pour les applications Web.

JAR peut être créé avec n'importe quelle structure souhaitée. En revanche, WAR a une structure prédéfinie avec les répertoires WEB-INF et META-INF.

Un fichier JAR permet à Java Runtime Environment (JRE) de déployer une application entière, y compris les classes et les ressources associées dans une seule demande. En revanche, un fichier WAR permet de tester et de déployer facilement une application web.

Abdul Alim Shakir
la source
0

Une extension de fichier JAR est .jar et est créée avec la commande jar à partir de l'invite de commande (comme la commande javac est exécutée). Généralement, un fichier JAR contient des ressources liées à Java comme les bibliothèques, les classes, etc. Le fichier JAR est comme le fichier winzip, sauf que les fichiers Jar sont indépendants de la plateforme.

Un fichier WAR est simplement un fichier JAR mais ne contient que des fichiers Java liés au Web comme les servlets, JSP, HTML.

Pour exécuter un fichier WAR, un serveur Web ou un conteneur Web est requis, par exemple, Tomcat ou Weblogic ou Websphere. Pour exécuter un fichier JAR, un simple JDK suffit.

Animesh Jaiswal
la source