← Назад к вопросам

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

1.3 Junior🔥 121 комментариев
#Soft Skills и карьера

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI23 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

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

В Java процесс сборки (build) приложения — это комплексный процесс трансформации исходного кода в исполняемую форму. Результаты этого процесса зависят от типа приложения и используемого инструмента сборки, но обычно это JAR, WAR или EAR файлы, а также различные артефакты и артефакты, необходимые для развертывания.

Основной результат: JAR файл

JAR (Java Archive) — это архивный файл, являющийся основным результатом сборки Java приложения.

Исходный код (.java) → Компиляция → Байт-код (.class) → Упаковка → JAR файл

JAR файл это просто ZIP архив, содержащий:

  • Скомпилированные классы (.class файлы) в структуре папок, соответствующей пакетам
  • Ресурсы (конфигурационные файлы, изображения, XML и т.д.)
  • MANIFEST.MF — файл манифеста с метаинформацией
  • Зависимости (библиотеки) — в случае fat JAR или über JAR
my-app.jar
├── META-INF/
│   └── MANIFEST.MF
├── com/
│   └── example/
│       ├── Main.class
│       ├── UserService.class
│       └── User.class
├── application.properties
└── lib/
    ├── spring-core-5.3.0.jar
    └── slf4j-api-1.7.30.jar

Файл манифеста (MANIFEST.MF)

Центральная часть JAR файла — манифест с ключевой информацией:

Manifest-Version: 1.0
Main-Class: com.example.Main
Implementation-Version: 1.0.0
Implementation-Title: My Application

Main-Class — это критический параметр, указывающий класс с методом main(), который будет выполнен при запуске JAR файла.

Типы результатов сборки

1. JAR (Java ARchive) — для приложений и библиотек

java -jar my-app.jar

2. Thin JAR — только класс приложения

Содержит только исходный код приложения, зависимости находятся отдельно в папке lib/:

my-app.jar (500 KB)
lib/
├── spring-core-5.3.0.jar
├── spring-beans-5.3.0.jar
└── ... другие зависимости

3. Über JAR (Fat JAR) — включает все зависимости

Это самодостаточный JAR файл, содержащий весь код приложения и все его зависимости:

my-app-1.0.0-SNAPSHOT.jar (50 MB)

Spring Boot по умолчанию создает именно über JAR:

// pom.xml для создания Fat JAR
<plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <version>2.7.0</version>
</plugin>

4. WAR (Web ARchive) — для веб-приложений

Структура WAR для web-приложений:

my-web-app.war
├── META-INF/
│   └── MANIFEST.MF
├── WEB-INF/
│   ├── classes/
│   │   └── com/example/*.class
│   ├── lib/
│   │   └── *.jar
│   └── web.xml
├── index.jsp
└── static/
    ├── css/
    └── js/

5. EAR (Enterprise ARchive) — для enterprise приложений

Conтейнер для нескольких модулей (JAR + WAR):

my-enterprise-app.ear
├── application.xml
├── my-web-app.war
└── my-business-logic.jar

Процесс сборки с Maven

Popular инструмент сборки Maven создает результаты в папке target/:

mvn clean package

Результаты:

target/
├── classes/
│   └── скомпилированные .class файлы
├── test-classes/
│   └── скомпилированные тесты
├── my-app-1.0.0.jar
├── my-app-1.0.0-sources.jar
├── my-app-1.0.0-javadoc.jar
└── surefire-reports/
    └── результаты тестов

Процесс сборки с Gradle

gradle build

Результаты в build/:

build/
├── classes/
├── libs/
│   └── my-app-1.0.0.jar
└── test-results/

Пример создания JAR с указанием Main-Class

// Main.java
public class Main {
    public static void main(String[] args) {
        System.out.println("Hello from JAR!");
    }
}
# Компиляция
javac Main.java

# Создание файла манифеста
echo "Main-Class: Main" > manifest.txt

# Создание JAR
jar cfm my-app.jar manifest.txt Main.class

# Запуск
java -jar my-app.jar
# Output: Hello from JAR!

Дополнительные артефакты сборки

  1. Source JAR — исходные коды (.java файлы)
  2. JavaDoc JAR — генерированная документация
  3. Checksum файлы (MD5, SHA) — для проверки целостности
  4. Dependency reports — информация о зависимостях
  5. Code coverage reports — покрытие тестами

Заключение

Результат сборки Java приложения — это прежде всего JAR файл (или WAR/EAR в зависимости от типа приложения), который содержит скомпилированный байт-код, ресурсы и метаинформацию для выполнения приложения на виртуальной машине Java. Für современных приложений часто используется über JAR (Fat JAR) с встроенными зависимостями, что упрощает развертывание и запуск приложения.

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