Что такое JDK и для чего он нужен в Java-разработке?

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

Ответ

JDK (Java Development Kit) — это полный комплект инструментов для разработки, компиляции, отладки и запуска Java-приложений. Это минимальный набор, необходимый разработчику для создания Java-программ.

Основные компоненты JDK:

  1. Компилятор Java (javac) — преобразует исходный код (.java) в байт-код (.class)
  2. JRE (Java Runtime Environment) — среда выполнения, включающая:
    • JVM (Java Virtual Machine) — исполняет байт-код
    • Библиотеки классов — rt.jar, jfxrt.jar и другие
  3. Инструменты разработки:
    • java — запуск приложений
    • jar — работа с архивами
    • javadoc — генерация документации
    • jdb — отладчик
    • jconsole — мониторинг
    • jstack, jmap, jstat — профилирование
  4. Исходный код библиотек — для изучения реализации

Пример рабочего процесса с JDK:

// HelloWorld.java
public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello from JDK!");
    }
}
# Компиляция
javac HelloWorld.java  # Создает HelloWorld.class

# Запуск
java HelloWorld        # Выводит: Hello from JDK!

# Создание JAR-архива
jar cvf app.jar HelloWorld.class

# Запуск из JAR
java -jar app.jar
Отличия от JRE: JDK JRE
Для разработки Только для запуска
Включает компилятор Не включает компилятор
Больший размер Меньший размер
Содержит инструменты разработки Только среда выполнения

Эволюция JDK:

  • До Java 11: JDK и JRE поставлялись отдельно
  • С Java 11: JRE как отдельный дистрибутив упразднен, входит в состав JDK
  • Современные версии: jlink позволяет создавать минимальные runtime-образы

Практическое использование:

  • Разработка любых Java-приложений (консольных, веб, десктопных)
  • Компиляция в байт-код для любой JVM-совместимой платформы
  • Отладка и профилирование приложений
  • Генерация документации по API