«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, есть несколько важных отличий.