Что такое JRE и чем он отличается от JDK?

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

Ответ

JRE (Java Runtime Environment) — это среда выполнения для уже скомпилированных Java-приложений. Её единственная задача — запускать .class или .jar файлы.

Состав JRE:

  • JVM (Java Virtual Machine): Исполняет байт-код.
  • Библиотеки классов (Java Class Library): Стандартные библиотеки (java.lang, java.util, java.io и т.д.).
  • Вспомогательные файлы: Нативные библиотеки, файлы конфигурации.

JDK (Java Development Kit) — это полный комплект для разработки. Он включает в себя JRE, а также:

  • Компилятор (javac).
  • Инструменты для разработки и отладки (jdb, javap, jar).
  • Документацию (Javadoc).

Простая аналогия:

  • JRE — это двигатель, который позволяет машине ехать.
  • JDK — это целая мастерская с двигателем, инструментами и запчастями для постройки машины.

Пример: Для запуска этого кода нужна только JRE:

// HelloWorld.java (уже скомпилирован в HelloWorld.class)
public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello from JRE!");
    }
}

Вывод: Разработчики устанавливают JDK, чтобы писать и компилировать код. Пользователи или продакшен-серверы для запуска готового приложения могут обойтись JRE (хотя в современных облачных сценариях часто используют JDK для диагностики).