Разница между банкой и войной на Яве

462

В чем разница между файлом .jarи .warфайлом?
Это только расширение файла или есть что-то большее?

helpermethod
источник

Ответы:

388

Из Java Советы: Разница между ear jar и war файлами :

Эти файлы - просто заархивированные файлы, используя инструмент java jar. Эти файлы созданы для разных целей. Вот описание этих файлов:

  • Файлы .jar. Файлы .jar содержат библиотеки, файлы ресурсов и вспомогательные файлы, например файлы свойств.

  • Файлы .war . Файл war содержит веб-приложение, которое можно развернуть в любом контейнере servlet / jsp. Файл .war содержит jsp, html, javascript и другие файлы, необходимые для разработки веб-приложений.


Официальные описания Sun / Oracle:


Статьи Википедии:

aioobe
источник
10
У меня есть сомнения, как JSP и дополнительные файлы веб-приложений, почему не может быть в JAR-файл.
Эммануэль Анджело. R
@ EmmanuelAngelo.R Они могут - файл jar - это просто файл zip. Если это сделает что-то полезное, это другой вопрос, который зависит от кода, который вы хотите использовать файл JAR. В качестве интересного примера сервер непрерывной интеграции Jenkins распространяется в виде файла WAR, который можно запустить с помощью «java -jar». Смотрите wiki.jenkins-ci.org/display/JENKINS/… для подробностей.
Турбьёрн Равн Андерсен
77

.warФайл имеет специфическую структуру с точки зрения того , где некоторые файлы будут. Кроме этого, да, это просто .jar.

TJ Crowder
источник
40

Веб-компоненты добавляются в приложение J2EE в пакете, называемом архивом веб-приложения (WAR), который представляет собой JAR-файл, аналогичный пакету, используемому для библиотек классов Java. WAR обычно содержит другие ресурсы помимо веб-компонентов, в том числе:

  • Служебные классы на стороне сервера (компоненты базы данных, корзины покупок и т. Д.).
  • Статические веб-ресурсы (HTML, изображения, звуковые файлы и т. Д.)
  • Классы на стороне клиента (апплеты и служебные классы)

WAR имеет определенную иерархическую структуру каталогов. Каталог верхнего уровня WAR является корневым каталогом приложения. В корне документа хранятся страницы JSP, клиентские классы и архивы, а также статические веб-ресурсы.

( источник )

Таким образом, .war - это .jar, но он содержит компоненты веб-приложения и выстроен в соответствии с определенной структурой. .War предназначен для развертывания на сервере веб-приложений, таком как Tomcat или Jetty, или на сервере Java EE, таком как JBoss или Glassfish.

justkt
источник
1
Значит ли это, что если вы создаете серверное приложение, которое использует только сокеты и не имеет никакого пользовательского интерфейса, нет необходимости упаковывать его как файл war?
bot_bot
На самом деле, сейчас я читаю немного больше, мне не нужен Tomcat, я могу просто экспортировать jar на сервер и запустить его прямо оттуда.
bot_bot
40

WAR означает веб-приложение ARchive

JAR расшифровывается как Java ARchive

введите описание изображения здесь

Джоби Уилсон Мэтьюз
источник
и EAR является корпоративным приложением ARchive?
спонсор
15

.warФайл является Application Archive Web , которая работает внутри сервера приложений , в то время как .jarэто Java Application Archive , которая запускает приложение рабочего стола на компьютере пользователя.

Джастин Нисснер
источник
14
Второе утверждение не обязательно верно. Jar также может запустить встроенный веб-сервер, например, с Spring Boot.
Whirlwin
4
даже это утверждение не совсем верно. Баночка также может быть просто библиотекой кода, который будет использоваться другими приложениями. Другими словами, он может даже не содержать основной класс для работы.
Кевин Велкер
@KevinWelker согласился. Даже в 2011 году (когда этот пост был написан) баночка все еще могла просто представлять библиотеку. Тем не менее, весенней загрузки не было, поэтому я вижу, что вы можете встроить веб-сервер в банку, подобную упомянутому вихрю.
intrepistar_88
@ Кевин Уэлкер, а не «не совсем», я бы сказал «не вся правда», поскольку вихрь только что упомянул исключение, которое полностью верно, не так ли?
Алексей
12

Файл war - это специальный файл jar, который используется для упаковки веб-приложения, чтобы упростить его развертывание на сервере приложений. Содержимое файла войны должно соответствовать определенной структуре.

Винсент Рамдани
источник
10

.jar и .war - оба заархивированные заархивированные файлы. Оба могут иметь дополнительный файл манифеста META-INF / MANIFEST.MF, который содержит информативную информацию, такую ​​как управление версиями, и атрибуты инструкций, такие как classpath и main-class для JVM, которые будут его выполнять.

Файл .war - архив веб-приложений, предназначенный для выполнения внутри «контейнера сервлетов» и может включать в себя другие jar-файлы (в каталоге WEB-INF / lib), скомпилированные классы (в WEB-INF / classes (сервлет также идет туда)) .jsp файлы изображений, файлов и т. д. Весь контент WAR, который существует для создания автономного модуля.

Хаим Сулам
источник
5

В основном оба сжатых архива. war используется для веб-приложений с определенной структурой каталогов.

fmucar
источник
4

war и jar - это архивы для java-файлов. Война это веб-архив, и они работают на веб-сервере. jar - это архив java

nyanev
источник
1

Война -

распространять веб-приложения на основе Java. WAR имеет такую ​​же файловую структуру, что и JAR-файл, который представляет собой один сжатый файл, содержащий несколько файлов, связанных внутри него.

Баночка -

Файлы .jar содержат библиотеки, файлы ресурсов и вспомогательные файлы, такие как файлы свойств.

Файлы WAR используются для объединения JSP, сервлетов, файлов классов Java, файлов XML, библиотек javascript, библиотек JAR, статических веб-страниц и любых других ресурсов, необходимых для запуска приложения.

Akitha_MJ
источник
0

Jar : - jar содержит только .class war : - war содержит html, js, css и .class, а также страницы jsp и servlets

Тепловой ИТ
источник
0

JAR-файлы позволяют упаковать несколько файлов, чтобы использовать их в качестве библиотеки, плагина или любого приложения. С другой стороны, файлы WAR используются только для веб-приложений.

JAR может быть создан с любой желаемой структурой. Напротив, WAR имеет предопределенную структуру с каталогами WEB-INF и META-INF.

Файл JAR позволяет Java Runtime Environment (JRE) развернуть все приложение, включая классы и связанные ресурсы, в одном запросе. С другой стороны, файл WAR позволяет легко тестировать и развертывать веб-приложение.

Абдул Алим Шакир
источник
0

Расширение файла JAR .jar и создается с помощью команды jar из командной строки (например, выполняется команда javac). Обычно файл JAR содержит связанные с Java ресурсы, такие как библиотеки, классы и т. Д. Файл JAR похож на файл winzip, за исключением того, что файлы Jar не зависят от платформы.

Файл WAR - это просто файл JAR, но он содержит только связанные с Web файлы Java, такие как сервлеты, JSP, HTML.

Для выполнения файла WAR требуется веб-сервер или веб-контейнер, например, Tomcat или Weblogic или Websphere. Чтобы выполнить файл JAR, достаточно простого JDK.

Анимеш Джайсвал
источник