Гид по технологиям

Что такое JAR и зачем он нужен?

4 min read Java Обновлено 05 Jan 2026
Что такое JAR — создание и использование
Что такое JAR — создание и использование

Ноутбук у окна с кодом на экране

Краткое описание

JAR (Java ARchive) — открытый формат файловых архивов, реализованный на Java и основанный на формате ZIP. Он объединяет несколько файлов в один контейнер и обычно используется для упаковки Java-классов, библиотек и сопутствующих ресурсов (например, файлов конфигурации, изображений и т.д.).

Апплет — это небольшой Java-программы, изначально предназначенный для загрузки в браузер.

JAR обеспечивает:

  • безпотерьную компрессию файлов (на базе ZIP);
  • кроссплатформенную совместимость;
  • удобную доставку и запуск Java-приложений (включая исполняемые JAR с манифестом).

Почему JAR полезен?

  • Экономия трафика: сжатие уменьшает размер передаваемых файлов.
  • Упорядочивание: одна единица доставки вместо множества отдельных файлов.
  • Совместимость: поддерживается JVM на всех платформах.
  • Возможность создания исполняемых архивов через файл манифеста (Manifest.MF).

Важно: для широкой аудитории, не знакомой с Java, ZIP остаётся более привычным вариантом.

Создание JAR-файла

Для создания JAR используют стандартную утилиту jar, которая поставляется с JDK. Базовый синтаксис:

jar cf ArchiveName.jar files

Пояснения к флагам:

  • c — создать архив (create);
  • f — вывод в файл (file), а не в стандартный вывод;
  • v — подробный режим (verbose), показывает список обрабатываемых файлов;
  • 0 — без сжатия (compress level 0).

Примеры:

jar cf webapp.jar login.html images/ audio/

Рекурсивно добавляет содержимое директорий login.html, images/ и audio/.

Чтобы включить все файлы текущей директории:

jar cf webapp.jar *

Проверить эффект сжатия и увидеть имена файлов:

jar cfv webapp.jar *

Создать архив без сжатия:

jar cfv0 webapp.jar *

Если нужно сделать исполняемый JAR, добавьте в META-INF/MANIFEST.MF строку Main-Class: с именем основного класса, затем упакуйте каталог с манифестом или укажите опцию m для указания конкретного манифеста.

Манифест и исполняемый JAR

Чтобы JAR был запускаемым как java -jar app.jar, в манифесте должно быть указано поле Main-Class:

Manifest-Version: 1.0
Main-Class: com.example.Main

Можно указать дополнительные поля (Class-Path для внешних библиотек и т. п.).

JAR vs ZIP: когда что выбрать

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

Контрпример: если вы только отправляете набор документов пользователю без Java-компонентов — используйте ZIP.

Советы и альтернативы

  • Альтернативы: ZIP, TAR.GZ (на Unix-системах), тот же ZIP при распространении для неспециализированной аудитории.
  • Когда JAR не подходит: при потребности в подписи отдельных файлов на уровне ОС, сложной инкрементальной доставке или при работе с большими бинарными blobs, которые лучше хранить в контейнерах/объектных хранилищах.
  • Подпись: для проверки целостности и происхождения JAR-файлов применяют jarsigner.

Психология и модель принятия решения

Ментальная модель: представляйте JAR как «корзину» для Java-ресурсов — если конечная цель связана с запуском в JVM, выбирайте JAR; если цель — обмен файлами между пользователями, выбирайте ZIP.

Шпаргалка: команды и варианты

  • Создать архив: jar cf name.jar files
  • Создать архив подробно: jar cfv name.jar files
  • Без сжатия: jar cfv0 name.jar files
  • Указать манифест: jar cfm app.jar Manifest.txt -C classes/ .
  • Просмотреть содержимое: jar tf app.jar
  • Извлечь файлы: jar xf app.jar

Критерии приёмки

  • JAR запускается через java -jar (если указан Main-Class).
  • Содержимое архива соответствует ожидаемому списку файлов.
  • Манифест содержит корректные поля (если требуется Class-Path/Version).
  • Проверка целостности/подписи (если применимо) проходит успешно.

Тесты и приёмочные случаи

  • Тест 1: запустить java -jar и убедиться, что приложение стартует без ClassNotFoundException.
  • Тест 2: распаковать jar и убедиться, что ресурсы доступны по ожидаемым путям.
  • Тест 3: при использовании Class-Path — проверить загрузку внешних библиотек.

Риски и рекомендации по безопасности

  • Недоверенные JAR-файлы могут содержать вредоносный код; запускайте их только в контролируемой среде.
  • Подписывайте релизы ключами и проверяйте подпись при приёме.

Совместимость и миграция

  • JAR остаётся совместимым с большинством версий JVM, но при миграции на новые версии Java проверьте изменения в ClassLoader/модульности (JPMS), которые могут повлиять на загрузку классов.
  • Если проект мигрирует на модульную систему, рассмотрите создание модульных JAR (modular JAR) с module-info.java.

Короткая памятка для разных ролей

  • Разработчик: проверьте Main-Class и Class-Path, подпишите релиз.
  • Тестировщик: распакуйте JAR, запустите функциональные тесты.
  • DevOps: обеспечьте артефакт-репозиторий и политику версионирования.

Глоссарий в одну строку

  • JAR — архив на базе ZIP для Java-ресурсов; манифест — метаданные архива; jarsigner — инструмент подписи.

Важно: для обычного распространения файлов без Java-зависимостей предпочтительнее ZIP.

Краткое резюме

JAR — удобный и кроссплатформенный формат для упаковки Java-приложений и библиотек. Утилита jar проста в использовании: создавайте, просматривайте и извлекайте архивы с помощью её команд, выбирайте ZIP, когда аудитория не связана с Java.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Как быстро изменить цвета в Canva
Дизайн

Как быстро изменить цвета в Canva

Восстановление данных с внешнего жёсткого диска
Восстановление данных

Восстановление данных с внешнего жёсткого диска

Обустройство комнаты для VR — безопасность и трекинг
VR

Обустройство комнаты для VR — безопасность и трекинг

Edge падает при печати в Windows 11 — исправление
Техподдержка

Edge падает при печати в Windows 11 — исправление

Графика в Facebook Live: Live Producer + OBS
Стриминг

Графика в Facebook Live: Live Producer + OBS

Теневой бан в соцсетях: как понять и предотвратить
соцсети

Теневой бан в соцсетях: как понять и предотвратить