Ответ
Результатом сборки Java-приложения является переносимый байт-код и, как правило, упакованный артефакт для запуска.
Основные результаты:
- *Байт-код (`.class
файлы)** — результат компиляции исходного кода (*.java`). Этот байт-код выполняется JVM. - Архив приложения (чаще всего 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