Что такое JAR-файл в Java?

«Что такое JAR-файл в Java?» — вопрос из категории Java Core, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

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

Содержимое JAR:

  • Скомпилированные .class файлы.
  • Ресурсы: изображения, файлы конфигурации, свойства и т.д.
  • Метаданные в каталоге META-INF/:
    • MANIFEST.MF — основной файл манифеста, содержащий информацию о JAR.

Ключевые возможности и использование:

  1. Библиотеки: Распространение reusable-кода (например, commons-lang.jar).
  2. Исполняемые приложения: JAR может быть запущен двойным кликом или командой java -jar, если в манифесте указан атрибут Main-Class.

Пример манифеста для исполняемого JAR:

Manifest-Version: 1.0
Created-By: Java
Main-Class: com.example.MainApp

Работа с JAR через командную строку:

  • Создание: jar cvf myapp.jar -C classes/ .
  • Просмотр содержимого: jar tf myapp.jar
  • Извлечение: jar xvf myapp.jar
  • Запуск исполняемого JAR: java -jar myapp.jar

Связанные форматы:

  • WAR (Web ARchive) — для веб-приложений.
  • EAR (Enterprise ARchive) — для Java EE-приложений.

JAR — фундаментальная единица упаковки и дистрибуции в экосистеме Java.