Forskjeller mellom JAR og WAR emballasje

1. Oversikt

I denne raske opplæringen, vi vil fokusere på forskjellene mellom JAR- og WAR-emballasje i Java.

Først definerer vi hvert emballasjealternativ separat. Etterpå oppsummerer vi forskjellene deres.

2. JAR Emballasje

Enkelt sagt, JAR - eller Java Archive - er et filformat. JAR-filer har .krukke utvidelse og kan inneholde biblioteker, ressurser og metadatafiler.

I hovedsak er det en zip-fil som inneholder komprimerte versjoner av .klasse filer og ressurser for kompilerte Java-biblioteker og applikasjoner.

Her er for eksempel en enkel JAR-filstruktur:

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

De META-INF / MANIFEST.MF filen kan inneholde flere metadata om filene som er lagret i arkivet.

Vi kan lage en JAR-fil ved hjelp av krukke kommando eller med verktøy som Maven.

3. WAR Emballasje

WAR står for Web Application Archive eller Web Application Resource. Disse arkivfilene har .krig utvidelse og er brukes til å pakke webapplikasjoner som vi kan distribuere på hvilken som helst Servlet / JSP container.

Her er et eksempel på layout av en typisk WAR-filstruktur:

META-INF / MANIFEST.MF WEB-INF / web.xml jsp / helloWorld.jsp klasser / statisk / maler / application.properties lib / // * .jar filer som libs

Innvendig har den en META-INF katalog som inneholder nyttig informasjon i MANIFEST.MF om nettarkivet. De META-INF katalogen er privat og er ikke tilgjengelig fra utsiden.

På den annen side inneholder den også WEB-INF offentlig katalog med alle de statiske nettressursene, inkludert HTML-sider, bilder og JS-filer. Videre inneholder den web.xml fil, servletklasser og biblioteker.

Vi kan bruke de samme verktøyene og kommandoene som vi brukte til å bygge en JAR for å bygge en .krig arkiv.

4. Viktige forskjeller

Så, hva er nøkkelforskjellene mellom disse to arkivetypene?

Den første og mest åpenbare forskjellen er filutvidelse. JAR har .krukke utvidelse, mens WAR-filen har .krig Utvidelse.

Den andre hovedforskjellen er deres formål og måten de fungerer på. JAR-filer tillater oss å pakke flere filer for å kunne bruke det som et bibliotek, et plugin-program eller en hvilken som helst applikasjon. På den annen side brukes WAR-filer bare for webapplikasjoner.

Arkitekturen er også annerledes. Vi kan lage en JAR med hvilken som helst ønsket struktur. I motsetning har WAR en forhåndsdefinert struktur med WEB-INF og META-INF kataloger.

Endelig kan vi kjør en JAR fra kommandolinjen hvis vi bygger den som en kjørbar JAR uten å bruke ekstra programvare. Eller vi kan bruke det som et bibliotek. I kontrast, vi trenger en server for å utføre en WAR.

5. Konklusjon

I denne raske artikkelen sammenlignet vi .krukke og .krig Java emballasjetyper. Ved å gjøre dette bemerket vi også at mens begge bruker samme ZIP-filformat, er det flere viktige forskjeller.


$config[zx-auto] not found$config[zx-overlay] not found