Unterschied zwischen Glas und Krieg in Java

462

Was ist der Unterschied zwischen einer .jarund einer .warDatei?
Ist es nur die Dateierweiterung oder gibt es noch etwas mehr?

Hilfsmethode
quelle

Antworten:

387

Von Java-Tipps: Unterschied zwischen Ohrgefäß- und Kriegsdateien :

Diese Dateien sind einfach komprimierte Dateien mit dem Java-JAR-Tool. Diese Dateien werden für verschiedene Zwecke erstellt. Hier ist die Beschreibung dieser Dateien:

  • JAR-Dateien: Die JAR-Dateien enthalten Bibliotheken, Ressourcen und Zubehördateien wie Eigenschaftendateien.

  • WAR-Dateien: Die War-Datei enthält die Webanwendung , die auf jedem Servlet- / JSP-Container bereitgestellt werden kann. Die .war-Datei enthält JSP-, HTML- , Javascript- und andere Dateien, die für die Entwicklung von Webanwendungen erforderlich sind.


Offizielle Sun / Oracle-Beschreibungen:


Wikipedia-Artikel:

aioobe
quelle
10
Ich habe Zweifel, wie die JSP und zusätzliche Webanwendungsdateien, warum kann nicht in JAR-Datei sein.
Emmanuel Angelo.R
@ EmmanuelAngelo.R Sie können - eine JAR-Datei ist nur eine Zip-Datei. Ob es irgendetwas Nützliches bringt, ist eine andere Sache, die von dem Code abhängt, den Sie für die JAR-Datei verwenden möchten. Als interessantes Beispiel wird der Jenkins Continuous Integration Server als WAR-Datei verteilt, die mit "java -jar" ausgeführt werden kann. Weitere Informationen finden Sie unter wiki.jenkins-ci.org/display/JENKINS/… .
Thorbjørn Ravn Andersen
77

Eine .warDatei hat eine bestimmte Struktur in Bezug darauf, wo sich bestimmte Dateien befinden. Davon abgesehen ist es nur ein .jar.

TJ Crowder
quelle
40

Sie fügen einer J2EE-Anwendung Webkomponenten in einem Paket hinzu, das als Webanwendungsarchiv (WAR) bezeichnet wird. Hierbei handelt es sich um eine JAR, die dem für Java-Klassenbibliotheken verwendeten Paket ähnelt. Ein WAR enthält normalerweise neben Webkomponenten noch andere Ressourcen, darunter:

  • Serverseitige Dienstprogrammklassen (Datenbank-Beans, Einkaufswagen usw.).
  • Statische Webressourcen (HTML-, Bild- und Audiodateien usw.)
  • Clientseitige Klassen (Applets und Utility-Klassen)

Ein WAR hat eine bestimmte hierarchische Verzeichnisstruktur. Das Verzeichnis der obersten Ebene einer WAR ist das Dokumentstammverzeichnis der Anwendung. Im Dokumentstamm werden JSP-Seiten, clientseitige Klassen und Archive sowie statische Webressourcen gespeichert.

( Quelle )

Ein .war ist also ein .jar, enthält jedoch Webanwendungskomponenten und ist nach einer bestimmten Struktur angeordnet. Eine .war-Datei kann auf einem Webanwendungsserver wie Tomcat oder Jetty oder einem Java EE-Server wie JBoss oder Glassfish bereitgestellt werden.

justkt
quelle
1
Bedeutet dies also, dass Sie keine Server-App als War-Datei verpacken müssen, wenn Sie eine Server-App erstellen, die nur Sockets verwendet und keine Benutzeroberfläche hat?
Bot_bot
Eigentlich lese ich jetzt ein bisschen mehr, ich brauche Tomcat nicht, ich kann das Glas einfach auf den Server exportieren und es direkt von dort aus ausführen.
Bot_bot
40

WAR steht für Webanwendung ARchive

JAR steht für Java ARchive

Geben Sie hier die Bildbeschreibung ein

Joby Wilson Mathews
quelle
und EAR ist Enterprise Application ARchive?
Funder
15

Eine .warDatei ist ein Webanwendungsarchiv, das auf einem Anwendungsserver ausgeführt wird, während ein .jarJava-Anwendungsarchiv eine Desktopanwendung auf dem Computer eines Benutzers ausführt.

Justin Niessner
quelle
14
Die zweite Aussage ist nicht unbedingt wahr. Ein JAR kann auch einen eingebetteten Webserver starten, z. B. mit Spring Boot.
Whirlwin
4
selbst diese Aussage ist nicht ganz richtig. Ein Glas kann auch nur eine Codebibliothek sein, die von anderen Anwendungen verwendet wird. Mit anderen Worten, es enthält möglicherweise nicht einmal eine Hauptklasse zum Ausführen.
Kevin Welker
@ KevinWelker stimmte zu. Selbst im Jahr 2011 (als dieser Beitrag geschrieben wurde) konnte ein Glas nur eine Bibliothek darstellen. Spring Boot gab es jedoch nicht, so dass ich die Tatsache übersehen kann, dass Sie einen Webserver in ein Glas einbetten können, wie es der erwähnte Wirbelwind tut.
intrepistar_88
@ Kevin Welker, nicht "nicht ganz", ich würde "nicht alle Wahrheit" sagen, da Whirlwin gerade eine Ausnahme erwähnt hat, die völlig wahr ist, nicht wahr?
Alexei Martianov
12

Eine War-Datei ist eine spezielle JAR-Datei, die zum Packen einer Webanwendung verwendet wird, um die Bereitstellung auf einem Anwendungsserver zu vereinfachen. Der Inhalt der Kriegsdatei muss einer definierten Struktur folgen.

Vincent Ramdhanie
quelle
10

.jar und .war sind beide komprimierte archivierte Dateien. Beide können die optionale Manifestdatei META-INF / MANIFEST.MF enthalten, die informative Informationen wie die Versionierung und Anweisungsattribute wie Klassenpfad und Hauptklasse für die JVM enthält, die sie ausführen wird.

.war-Datei - Webanwendungsarchiv, das in einem 'Servlet-Container' ausgeführt werden soll und möglicherweise andere JAR-Dateien (im Verzeichnis WEB-INF / lib) enthält, kompilierte Klassen (im Verzeichnis WEB-INF / classes (Servlet geht auch dorthin)) .jsp Dateien Bilder, Dateien usw. Alle WAR-Inhalte, die vorhanden sind, um ein in sich geschlossenes Modul zu erstellen.

Haim Sulam
quelle
5

Grundsätzlich beide komprimierten Archive. war wird für Webanwendungen mit einer bestimmten Verzeichnisstruktur verwendet.

fmucar
quelle
4

Krieg und Glas sind Archive für Java-Dateien. Krieg ist Webarchiv und sie laufen auf Webserver. jar ist Java-Archiv.

Nyanev
quelle
1

Krieg -

Java-basierte Webanwendungen verteilen. Ein WAR hat dieselbe Dateistruktur wie eine JAR-Datei. Hierbei handelt es sich um eine einzelne komprimierte Datei, die mehrere darin gebündelte Dateien enthält.

Krug -

Die JAR-Dateien enthalten Bibliotheken, Ressourcen und Zubehördateien wie Eigenschaftendateien.

WAR-Dateien werden verwendet, um JSPs, Servlets, Java-Klassendateien, XML-Dateien, Javascript-Bibliotheken, JAR-Bibliotheken, statische Webseiten und andere zum Ausführen der Anwendung erforderliche Ressourcen zu kombinieren.

Akitha_MJ
quelle
0

Jar : - jar enthält nur .class war : - war enthält html, js, css und .class auch jsp und servlets seiten

Thermische IT
quelle
0

Mit JAR-Dateien können mehrere Dateien gepackt werden, um sie als Bibliothek, Plugin oder Anwendung zu verwenden. Andererseits werden WAR-Dateien nur für Webanwendungen verwendet.

JAR kann mit jeder gewünschten Struktur erstellt werden. Im Gegensatz dazu hat WAR eine vordefinierte Struktur mit den Verzeichnissen WEB-INF und META-INF.

Mit einer JAR-Datei kann Java Runtime Environment (JRE) eine gesamte Anwendung einschließlich der Klassen und der zugehörigen Ressourcen in einer einzigen Anforderung bereitstellen. Andererseits ermöglicht eine WAR-Datei das einfache Testen und Bereitstellen einer Webanwendung.

Abdul Alim Shakir
quelle
0

Eine JAR-Dateierweiterung ist .jar und wird mit dem Befehl jar an der Eingabeaufforderung erstellt (so wie der Befehl javac ausgeführt wird). Im Allgemeinen enthält eine JAR-Datei Java-bezogene Ressourcen wie Bibliotheken, Klassen usw. Die JAR-Datei ähnelt einer Winzip-Datei, mit der Ausnahme, dass Jar-Dateien plattformunabhängig sind.

Eine WAR-Datei ist einfach eine JAR-Datei, enthält jedoch nur webbezogene Java-Dateien wie Servlets, JSP, HTML.

Zum Ausführen einer WAR-Datei ist ein Webserver oder Webcontainer erforderlich, z. B. Tomcat oder Weblogic oder Websphere. Um eine JAR-Datei auszuführen, reicht ein einfaches JDK aus.

Animesh Jaiswal
quelle