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

Что такое JAR‑файл и как его использовать

4 min read Java Обновлено 19 Dec 2025
JAR‑файлы: что это и как создавать
JAR‑файлы: что это и как создавать

JAR — это формат архива на базе ZIP для упаковки и распространения Java‑файлов. Он обеспечивает сжатие, кроссплатформенность и удобен для передачи Java-приложений и библиотек. Для создания используют утилиту jar, а для общей аудитории чаще подходят ZIP‑архивы.

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

JAR (Java ARchive) — открытый стандарт архива, реализованный на Java и основанный на формате ZIP. Изначально JAR создавали для упаковки апплетов и доставки их в браузер, чтобы ускорить загрузку. Сегодня формат применим шире: библиотеки, исполняемые JAR, ресурсы приложений и т.д.

Ключевые свойства в одну строку:

  • JAR = ZIP + метаданные, поддерживает сжатие и структуру директорий.
  • Кроссплатформенный: работает на любой системе с JVM.

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

  • Сжатие: уменьшает объём передаваемых данных и ускоряет загрузку.
  • Упаковка: группирует классы, ресурсы и манифест в один файл.
  • Манифест (MANIFEST.MF) может задавать точку входа (Main‑Class) и служебные атрибуты.
  • Поддержка подписи и защиты: можно подписывать JAR для проверки целостности.

Важно: JAR удобен для Java‑экосистемы; для широкой публики ZIP привычнее.

Как создать JAR‑файл

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

Примеры команд:

jar cf ArchiveName.jar files

Параметры: c — создать архив, f — записать в файл (а не stdout). ArchiveName — имя архива (с окончанием .jar). После имени указывают список файлов и/или директорий, разделённых пробелами.

Рекурсивная упаковка каталога:

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

Упаковать все файлы текущей директории:

jar cf webapp.jar *

Отобразить подробный вывод (verbose), чтобы увидеть процент сжатия для каждого файла:

jar cfv webapp.jar *

Отключить сжатие (метод STORED):

jar cfv0 webapp.jar *

Добавление манифеста с точкой входа (Main‑Class): создайте текстовый файл MANIFEST.MF со строкой Main-Class: com.example.Main и затем:

jar cfm app.jar MANIFEST.MF -C classes/ .

Запуск исполняемого JAR (при наличии Main‑Class):

java -jar app.jar

Извлечение содержимого JAR (аналог unzip):

jar xf app.jar

Копирование/добавление файлов в существующий JAR:

jar uf app.jar new-resource.txt

Совет: используйте флаг v для отладки и проверки, что все нужные файлы включены.

Манифест и подпись

MANIFEST.MF находится в каталоге META-INF внутри JAR. В нём можно указать атрибуты, полезные при развёртывании:

  • Main‑Class — класс с методом main
  • Class‑Path — дополнительные JAR, требуемые приложению

Подпись JAR (jarsigner) применяют для удостоверения автора и защиты от подмены.

Когда использовать JAR, а когда ZIP

Когда выбрать JAR:

  • Это Java‑проект: классы, ресурсы, модули JVM.
  • Нужно указать Main‑Class или Class‑Path.
  • Нужна интеграция со средствами Java (jarsigner, java -jar).

Когда выбрать ZIP:

  • Вы упаковываете файлы для широкой аудитории без знания Java.
  • Требуется переносимость в средах, где JAR не ожидается.

Примеры, когда JAR не подходит: передача документов конечным пользователям, сторонним дизайнерам или не‑техническим заказчикам — ZIP привычнее.

Практическая методология: шаги для корректного JAR

  1. Соберите классы в одну иерархию директорий (root пакет — папка com/example/…).
  2. Подготовьте MANIFEST.MF, если нужен запуск.
  3. Выполните jar cfm app.jar MANIFEST.MF -C classes/ .
  4. Протестируйте: java -jar app.jar и/или java -cp app.jar com.example.Main
  5. Подпишите JAR при необходимости (jarsigner).
  6. Проверьте совместимость версий JVM.

Чеклист перед релизом

  • Все необходимые классы и ресурсы включены
  • MANIFEST.MF содержит Main‑Class (если нужно)
  • Отсутствуют лишние временные файлы (.class~ или .bak)
  • При необходимости JAR подписан
  • Тесты запуска проходят на целевых JVM

Альтернативные подходы

  • WAR — если это веб‑приложение для контейнера сервлетов (Tomcat, Jetty).
  • EAR — для комплексных Java EE решений.
  • Uber‑JAR / fat JAR — объединяет зависимости в один исполняемый JAR (полезно для развёртывания).
  • ZIP/ TAR — для передачи произвольных ресурсов не‑Java аудитории.

Ментальные модели и советы

  • Представляйте JAR как «ZIP с правилами для Java»: структура META-INF и манифест делают его «понятным» для JVM.
  • Используйте uber‑JAR для простого развёртывания, но будьте осторожны с лицензиями и конфликтами зависимостей.

Important: для корректной работы не забывайте проверять совместимость версий библиотек и JVM.

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

  • Приложение запускается командой java -jar без ошибок
  • Все ресурсы доступны по ожидаемым путям внутри JAR
  • Размер архива в допустимых пределах и сжатие применено корректно

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

JAR — удобный и привычный формат для упаковки Java‑приложений и библиотек. Он добавляет к ZIP метаданные, которые упрощают запуск и управление зависимостями в JVM. Для не‑Java аудитории ZIP остаётся предпочтительным выбором.

Notes: если вы распространяете бинарные сборки широкому кругу пользователей, добавьте README и инструкции по запуску у корня архива.

1‑line glossary

  • JAR: Java ARchive, ZIP‑архив с дополнительными метаданными для Java.
Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

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

Вложенная таблица в Word: как вставить и настроить
Microsoft Word

Вложенная таблица в Word: как вставить и настроить

Заменить Network Utility через Terminal в macOS
macOS

Заменить Network Utility через Terminal в macOS

Отзеркалить фото на Android через Snapseed
Фото

Отзеркалить фото на Android через Snapseed

Хэллоуин в Animal Crossing — гайд
Игры

Хэллоуин в Animal Crossing — гайд

Найти потерянные наушники Beats — руководство
Руководство

Найти потерянные наушники Beats — руководство

Chrome OS Flex на старом ПК — руководство
ОС

Chrome OS Flex на старом ПК — руководство