Differenze tra JAR e WAR Packaging

1. Panoramica

In questo breve tutorial, ci concentreremo sulle differenze tra i pacchetti JAR e WAR in Java.

Innanzitutto, definiremo ciascuna opzione di pacchettizzazione separatamente. Successivamente, riassumeremo le loro differenze.

2. Confezione JAR

In poche parole, JAR - o Java Archive - è un formato di file del pacchetto. I file JAR hanno l' estensione .jar e possono contenere librerie, risorse e file di metadati.

Essenzialmente, è un file zippato contenente le versioni compresse dei file .class e le risorse delle librerie e delle applicazioni Java compilate.

Ad esempio, ecco una semplice struttura di file JAR:

META-INF/ MANIFEST.MF com/ baeldung/ MyApplication.class 

Il file META-INF / MANIFEST.MF può contenere metadati aggiuntivi sui file memorizzati nell'archivio.

Possiamo creare un file JAR usando il comando jar o con strumenti come Maven.

3. Confezione WAR

WAR è l'acronimo di Web Application Archive o Web Application Resource. Questi file di archivio hanno l' estensione .war e vengono utilizzati per confezionare applicazioni web che possiamo distribuire su qualsiasi contenitore Servlet / JSP.

Ecco un esempio di layout di una tipica struttura di file WAR:

META-INF/ MANIFEST.MF WEB-INF/ web.xml jsp/ helloWorld.jsp classes/ static/ templates/ application.properties lib/ // *.jar files as libs

All'interno ha una directory META-INF che contiene informazioni utili nel MANIFEST.MF sull'archivio web. La directory META-INF è privata e non è possibile accedervi dall'esterno.

D'altra parte, contiene anche la directory pubblica WEB-INF con tutte le risorse web statiche, comprese pagine HTML, immagini e file JS. Inoltre, contiene il file web.xml , le classi servlet e le librerie.

Possiamo usare gli stessi strumenti e comandi che abbiamo usato per costruire un JAR per creare un archivio .war .

4. Differenze chiave

Quindi, quali sono le principali differenze tra questi due tipi di archivio?

La prima e più evidente differenza è l' estensione del file . I JAR hanno l' estensione .jar , mentre il file WAR ha l' estensione .war .

La seconda differenza principale è il loro scopo e il modo in cui funzionano . I file JAR ci consentono di impacchettare più file per utilizzarli come libreria, plugin o qualsiasi tipo di applicazione. D'altra parte, i file WAR vengono utilizzati solo per le applicazioni web.

Anche la struttura degli archivi è diversa. Possiamo creare un JAR con qualsiasi struttura desiderata. Al contrario, WAR ha una struttura predefinita con directory WEB-INF e META-INF .

Infine, possiamo eseguire un JAR dalla riga di comando se lo costruiamo come JAR eseguibile senza utilizzare software aggiuntivo. Oppure possiamo usarlo come libreria. Al contrario, abbiamo bisogno di un server per eseguire un WAR .

5. conclusione

In questo rapido articolo, abbiamo confrontato i tipi di pacchetti Java .jar e .war . In tal modo, abbiamo anche notato che sebbene entrambi utilizzino lo stesso formato di file ZIP, ci sono molte differenze importanti.