Forskelle mellem JAR og WAR emballage

1. Oversigt

I denne hurtige vejledning vi fokuserer på forskellene mellem JAR- og WAR-emballage i Java.

Først definerer vi hver emballagemulighed separat. Derefter opsummerer vi deres forskelle.

2. JAR-emballage

Kort sagt, JAR - eller Java Archive - er et pakkefilformat. JAR-filer har .krukke udvidelse og kan indeholde biblioteker, ressourcer og metadatafiler.

I det væsentlige er det en zip-fil, der indeholder de komprimerede versioner af .klasse filer og ressourcer fra kompilerede Java-biblioteker og applikationer.

For eksempel er her en simpel JAR-filstruktur:

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

Det META-INF / MANIFEST.MF filen kan indeholde yderligere metadata om de filer, der er gemt i arkivet.

Vi kan oprette en JAR-fil ved hjælp af krukke kommando eller med værktøjer som Maven.

3. WAR-emballage

WAR står for Web Application Archive eller Web Application Resource. Disse arkivfiler har .krig udvidelse og er bruges til at pakke webapplikationer som vi kan implementere på enhver Servlet / JSP container.

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

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

Indvendigt har den en META-INF bibliotek med nyttige oplysninger i MANIFEST.MF om webarkivet. Det META-INF bibliotek er privat og kan ikke tilgås udefra.

På den anden side indeholder den også WEB-INF offentlig bibliotek med alle de statiske webressourcer, inklusive HTML-sider, billeder og JS-filer. Desuden indeholder den web.xml fil, servletklasser og biblioteker.

Vi kan bruge de samme værktøjer og kommandoer, som vi brugte til at bygge en JAR til at bygge en .krig arkiv.

4. Nøgleforskelle

Så hvad er de vigtigste forskelle mellem disse to arkivtyper?

Den første og mest åbenlyse forskel er filtypenavn. JAR'er har .krukke udvidelse, mens WAR-filen har .krig udvidelse.

Den anden største forskel er deres formål og den måde, de fungerer på. JAR-filer giver os mulighed for at pakke flere filer for at kunne bruge det som et bibliotek, plugin eller enhver form for applikation. På den anden side bruges WAR-filer kun til webapplikationer.

Arkitekturen er også anderledes. Vi kan oprette en JAR med enhver ønsket struktur. I modsætning hertil har WAR en foruddefineret struktur med WEB-INF og META-INF mapper.

Endelig kan vi kør en JAR fra kommandolinjen hvis vi bygger det som en eksekverbar JAR uden at bruge yderligere software. Eller vi kan bruge det som et bibliotek. I modsætning hertil har vi har brug for en server til at udføre en WAR.

5. Konklusion

I denne hurtige artikel sammenlignede vi .krukke og .krig Java emballeringstyper. Ved at gøre dette bemærkede vi også, at mens begge bruger det samme ZIP-filformat, er der flere vigtige forskelle.


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