«1. Обзор
В этом кратком руководстве мы сосредоточимся на различиях между пакетами JAR и WAR в Java.
Сначала мы определим каждый вариант упаковки отдельно. После этого мы суммируем их различия.
2. Упаковка JAR
Проще говоря, JAR — или архив Java — это формат файла пакета. Файлы JAR имеют расширение .jar и могут содержать библиотеки, ресурсы и файлы метаданных.
По сути, это заархивированный файл, содержащий сжатые версии файлов .class и ресурсы скомпилированных библиотек и приложений Java.
Например, вот простая файловая структура JAR:
META-INF/
MANIFEST.MF
com/
baeldung/
MyApplication.class
Файл META-INF/MANIFEST.MF может содержать дополнительные метаданные о файлах, хранящихся в архиве.
Мы можем создать файл JAR с помощью команды jar или таких инструментов, как Maven.
3. Упаковка WAR
WAR расшифровывается как Архив веб-приложения или Ресурс веб-приложения. Эти архивные файлы имеют расширение .war и используются для упаковки веб-приложений, которые мы можем развернуть в любом контейнере Servlet/JSP.
Вот пример типичной файловой структуры WAR:
META-INF/
MANIFEST.MF
WEB-INF/
web.xml
jsp/
helloWorld.jsp
classes/
static/
templates/
application.properties
lib/
// *.jar files as libs
Внутри есть каталог META-INF, содержащий полезную информацию о веб-архиве в MANIFEST.MF. Каталог META-INF является частным и недоступен извне.
С другой стороны, он также содержит публичный каталог WEB-INF со всеми статическими веб-ресурсами, включая HTML-страницы, изображения и файлы JS. Кроме того, он содержит файл web.xml, классы сервлетов и библиотеки.
Мы можем использовать те же инструменты и команды, которые мы использовали для создания JAR, для создания архива .war.
4. Основные различия
Итак, в чем же основные различия между этими двумя типами архивов?
Первое и самое очевидное отличие — это расширение файла. JAR-файлы имеют расширение .jar, тогда как файл WAR имеет расширение .war.
Второе основное отличие заключается в их назначении и способе функционирования. Файлы JAR позволяют нам упаковывать несколько файлов, чтобы использовать их в качестве библиотеки, плагина или любого другого приложения. С другой стороны, файлы WAR используются только для веб-приложений.
Структура архивов тоже отличается. Мы можем создать JAR с любой желаемой структурой. Напротив, WAR имеет предопределенную структуру с каталогами WEB-INF и META-INF.
Наконец, мы можем запустить JAR-файл из командной строки, если создадим его как исполняемый JAR-файл без использования дополнительного программного обеспечения. Или мы можем использовать его как библиотеку. Напротив, нам нужен сервер для выполнения WAR.
5. Заключение
В этой быстрой статье мы сравнили типы упаковки Java .jar и .war. При этом мы также отметили, что, хотя оба используют один и тот же формат файла ZIP, есть несколько важных отличий.