Różnica między słoikiem a wojną w Javie

462

Jaka jest różnica między plikiem .jara .warplikiem?
Czy to tylko rozszerzenie pliku, czy jest coś jeszcze?

helpermethod
źródło

Odpowiedzi:

387

Z porad Java: Różnica między słoikiem ucha a plikami wojennymi :

Pliki te są po prostu skompresowane za pomocą narzędzia Javy Jar. Pliki te są tworzone do różnych celów. Oto opis tych plików:

  • Pliki .jar: pliki .jar zawierają biblioteki, zasoby i pliki akcesoriów, takie jak pliki właściwości.

  • Pliki .war: plik wojenny zawiera aplikację internetową, którą można wdrożyć na dowolnym kontenerze serwlet / jsp. Plik .war zawiera pliki jsp, html, javascript i inne pliki niezbędne do tworzenia aplikacji internetowych.


Oficjalne opisy Sun / Oracle:


Artykuły w Wikipedii:

aioobe
źródło
10
Mam wątpliwości jako jsp i dodatkowe pliki aplikacji sieci Web, dlaczego nie mogę być w pliku jar.
Emmanuel Angelo.R
@ EmmanuelAngelo.R Mogą - plik jar to tylko plik zip. Jeśli zrobi coś użytecznego, to inna sprawa, która zależy od kodu, który chcesz wykorzystać plik jar. Jako interesujący przykład serwer Jenkins Continuous Integration jest rozpowszechniany jako plik WAR, który można uruchomić za pomocą „java -jar”. Szczegółowe informacje można znaleźć na wiki.jenkins-ci.org/display/JENKINS/ ...
Thorbjørn Ravn Andersen
77

.warPlik ma specyficzną strukturę pod względem gdzie niektóre pliki będzie. Poza tym, tak, to tylko .jar.

TJ Crowder
źródło
40

Składniki WWW dodajesz do aplikacji J2EE w pakiecie zwanym archiwum aplikacji WWW (WAR), który jest JAR podobny do pakietu używanego w bibliotekach klas Java. WAR zwykle zawiera inne zasoby oprócz komponentów internetowych, w tym:

  • Klasy narzędzi po stronie serwera (komponenty bean bazy danych, wózki sklepowe itp.).
  • Statyczne zasoby sieciowe (HTML, pliki graficzne i dźwiękowe itp.)
  • Klasy po stronie klienta (aplety i klasy narzędzi)

WAR ma określoną hierarchiczną strukturę katalogów. Katalog najwyższego poziomu WAR to katalog główny aplikacji. Katalog główny to miejsce, w którym przechowywane są strony JSP, klasy i archiwa po stronie klienta oraz statyczne zasoby sieciowe.

( źródło )

Tak więc .war jest .jar, ale zawiera komponenty aplikacji internetowych i jest ułożony zgodnie z określoną strukturą. Plik .war został zaprojektowany do wdrożenia na serwerze aplikacji WWW, takim jak Tomcat lub Jetty, lub serwerze Java EE, takim jak JBoss lub Glassfish.

justkt
źródło
1
Czy to oznacza, że ​​jeśli budujesz aplikację serwera, która korzysta tylko z gniazd i nie ma interfejsu użytkownika, nie ma potrzeby pakowania jej jako pliku wojny?
bot_bot
Właściwie teraz czytam trochę więcej Nie potrzebuję Tomcat, mogę po prostu wyeksportować słoik na serwer i uruchomić go bezpośrednio z tego miejsca.
bot_bot
40

WAR oznacza ARCHIWUM aplikacji sieci Web

JAR oznacza Java ARchive

wprowadź opis zdjęcia tutaj

Joby Wilson Mathews
źródło
a EAR jest archiwum aplikacji korporacyjnych?
Funder
15

.warPlik jest Web Application Archive, która biegnie wewnątrz serwera aplikacji, podczas gdy .jarjest Java Application Archive, który uruchamia aplikację pulpitu na komputerze użytkownika.

Justin Niessner
źródło
14
Drugie stwierdzenie niekoniecznie jest prawdziwe. Słoik może również uruchomić wbudowany serwer internetowy, np. Spring Spring.
whirlwin
4
nawet to stwierdzenie nie jest do końca prawdziwe. Słoik może być również biblioteką kodu, z której mogą korzystać inne aplikacje. Innymi słowy, może nawet nie zawierać głównej klasy do uruchamiania.
Kevin Welker,
@KevinWelker zgodził się. Nawet w 2011 roku (kiedy ten post został napisany) słoik nadal może po prostu reprezentować bibliotekę. Jednak nie było wiosennego rozruchu, więc mogę przeoczyć fakt, że możesz osadzić serwer sieciowy w słoiku, jak wspomniany trąba powietrzna.
intrepistar_88
@Kevin Welker, nie „nie do końca”, powiedziałbym, że „nie cała prawda”, ponieważ Whirlwin właśnie wspomniał o wyjątku, co jest w pełni prawdą, prawda?
Aleksiej Martianow
12

Plik wojenny to specjalny plik jar, który służy do pakowania aplikacji internetowej, aby ułatwić jej wdrożenie na serwerze aplikacji. Zawartość pliku wojny musi mieć określoną strukturę.

Vincent Ramdhanie
źródło
10

.jar i .war są spakowanymi plikami archiwalnymi. Oba mogą mieć opcjonalny plik manifestu META-INF / MANIFEST.MF, który zawiera informacje informacyjne, takie jak wersjonowanie, oraz atrybuty instruktażowe, takie jak ścieżka klasy i klasa główna dla JVM, która go wykona.

Plik .war - archiwum aplikacji sieci Web przeznaczone do uruchomienia wewnątrz „kontenera serwletów” i może zawierać inne pliki jar (w katalogu WEB-INF / lib) skompilowane klasy (w WEB-INF / klas (tam również serwlet)) .jsp pliki obrazów, plików itp. Cała zawartość WAR, która istnieje w celu utworzenia niezależnego modułu.

Haim Sulam
źródło
5

Zasadniczo oba skompresowane archiwa. wojna jest używana w aplikacjach internetowych o określonej strukturze katalogów.

fmucar
źródło
4

wojna i jar to archiwa plików java. wojna to archiwum internetowe, które działają na serwerze internetowym. jar jest archiwum Java.

nyanev
źródło
1

Wojna -

rozpowszechniać aplikacje internetowe oparte na Javie. WAR ma taką samą strukturę pliku jak plik JAR, który jest pojedynczym skompresowanym plikiem zawierającym wiele plików w nim zawartych.

Słoik -

Pliki .jar zawierają biblioteki, zasoby i pliki akcesoriów, takie jak pliki właściwości.

Pliki WAR służą do łączenia stron JSP, serwletów, plików klasy Java, plików XML, bibliotek javascript, bibliotek JAR, statycznych stron internetowych i wszelkich innych zasobów potrzebnych do uruchomienia aplikacji.

Akitha_MJ
źródło
0

Jar : - jar zawiera tylko .class war : - war zawiera html, js, css i .class także strony jsp i serwlety

Thermal IT
źródło
0

Pliki JAR umożliwiają pakowanie wielu plików w celu wykorzystania ich jako biblioteki, wtyczki lub dowolnego rodzaju aplikacji. Z drugiej strony pliki WAR są używane tylko do aplikacji internetowych.

JAR można utworzyć z dowolną pożądaną strukturą. Natomiast WAR ma predefiniowaną strukturę z katalogami WEB-INF i META-INF.

Plik JAR umożliwia środowisku Java Runtime Environment (JRE) wdrożenie całej aplikacji, w tym klas i powiązanych zasobów w jednym żądaniu. Z drugiej strony plik WAR umożliwia łatwe testowanie i wdrażanie aplikacji internetowej.

Abdul Alim Shakir
źródło
0

Plik JAR ma rozszerzenie .jar i jest tworzony za pomocą polecenia jar z wiersza polecenia (tak jak polecenie javac jest wykonywane). Ogólnie plik JAR zawiera zasoby związane z Javą, takie jak biblioteki, klasy itp. Plik JAR jest jak plik winzip, z tym wyjątkiem, że pliki Jar są niezależne od platformy.

Plik WAR to po prostu plik JAR, ale zawiera tylko pliki Java związane z siecią, takie jak serwlety, JSP, HTML.

Do wykonania pliku WAR wymagany jest serwer WWW lub kontener WWW, na przykład Tomcat lub Weblogic lub Websphere. Aby wykonać plik JAR, wystarczy prosty JDK.

Animesh Jaiswal
źródło