Что является результатом сборки Java-приложения?

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

Ответ

Результатом сборки Java-приложения является переносимый байт-код и, как правило, упакованный артефакт для запуска.

Основные результаты:

  1. *Байт-код (`.classфайлы)** — результат компиляции исходного кода (*.java`). Этот байт-код выполняется JVM.
  2. Архив приложения (чаще всего JAR-файл) — упакованная коллекция .class файлов, ресурсов и метаинформации (MANIFEST.MF).

Ключевые особенности итогового артефакта:

  • Портативность: JAR-файл может быть запущен на любой платформе с установленной подходящей JVM.
  • Манифест: Файл META-INF/MANIFEST.MF внутри JAR может указывать главный класс для запуска (Main-Class).
  • Зависимости: В случае обычного JAR-файла зависимости (другие библиотеки) должны быть предоставлены отдельно в classpath. В исполняемом (fat) JAR (например, Spring Boot) все зависимости встроены внутрь.

Пример команды запуска:

# Запуск из class файлов
java -cp "target/classes" com.example.Main

# Запуск из JAR-файла
java -jar target/my-application.jar