Skillnader mellan JAR- och WAR-paketering

Översikt

I den här snabba handledningen fokuserar vi på skillnaderna mellan JAR- och WAR-paketering i Java.

Först definierar vi varje paketeringsalternativ separat. Därefter sammanfattar vi deras skillnader.

JAR-paketering

Simpelt uttryckt är JAR – eller Java Archive – ett paketfilformat. JAR-filer har tillägget .jar och kan innehålla bibliotek, resurser och metadatafiler.

I huvudsak är det en komprimerad fil som innehåller de komprimerade versionerna av .class-filer och resurser från kompilerade Java-bibliotek och -program.

Till exempel, här är en enkel struktur för en JAR-fil:

META-INF/ MANIFEST.MFcom/ baeldung/ MyApplication.class

META-INF/MANIFEST.MF-filen kan innehålla ytterligare metadata om filerna som lagras i arkivet.

Vi kan skapa en JAR-fil med kommandot jar eller med verktyg som Maven.

WAR-paketering

WAR står för Web Application Archive eller Web Application Resource. Dessa arkivfiler har tillägget .war och används för att paketera webbapplikationer som vi kan distribuera på vilken Servlet/JSP-behållare som helst.

Här är ett exempel på en typisk WAR-filstruktur:

Invändigt har den en META-INF-katalog som innehåller användbar information i MANIFEST.MF om webbarkivet. META-INF-katalogen är privat och kan inte nås utifrån.

Å andra sidan innehåller den också den offentliga katalogen WEB-INF med alla statiska webbresurser, inklusive HTML-sidor, bilder och JS-filer. Dessutom innehåller den filen web.xml, servletklasser och bibliotek.

Vi kan använda samma verktyg och kommandon som vi använde för att bygga en JAR för att bygga ett .war-arkiv.

Nyckelskillnader

Vilka är då de viktigaste skillnaderna mellan de här två arkivtyperna?

Den första och mest uppenbara skillnaden är filtillägget. JAR-filer har tillägget .jar, medan WAR-filer har tillägget .war.

Den andra stora skillnaden är deras syfte och hur de fungerar. JAR-filer gör det möjligt för oss att paketera flera filer för att kunna använda dem som bibliotek, insticksprogram eller någon form av program. WAR-filer används däremot endast för webbapplikationer.

Arkivens struktur skiljer sig också åt. Vi kan skapa en JAR med vilken önskad struktur som helst. WAR har däremot en fördefinierad struktur med katalogerna WEB-INF och META-INF.

Finalt kan vi köra en JAR från kommandoraden om vi bygger den som en körbar JAR utan att använda ytterligare programvara. Eller så kan vi använda det som ett bibliotek. Däremot behöver vi en server för att köra en WAR.

Slutsats

I den här snabba artikeln jämförde vi Java-förpackningstyperna .jar och .war. Därvid noterade vi också att även om båda använder samma ZIP-filformat finns det flera viktiga skillnader.

Kom igång med Spring 5 och Spring Boot 2 genom kursen Lär dig Spring:

>> TITTA PÅ KURSEN

Lämna ett svar

Din e-postadress kommer inte publiceras.