Получить доступ

Чем отличаются JDK, JRE и JVM?

JuniorJVM и сборка мусора
Ещё спрашивают так:
  • Что такое JVM?
  • Что входит в JDK?
  • Чем JDK отличается от JRE?
Коротко

Вложенность: JVM исполняет байткод, JRE = JVM + стандартные библиотеки для запуска, JDK = JRE + инструменты разработки.

  • В JDK: компилятор javac, отладчик, jar, javadoc, jshell, утилиты мониторинга
  • Байткод один, а JVM своя под каждую платформу — «написано один раз, работает везде»

А ещё С Java 11 отдельную JRE не поставляют — используют JDK или собирают свой runtime через jlink

Так подсказку видит пользователь sotto на живом собеседовании — за пару секунд, пока вы думаете вслух.

Подробно

JVM (Java Virtual Machine) — виртуальная машина, которая загружает классы, проверяет и исполняет байткод, управляет памятью и сборкой мусора, компилирует горячий код в машинный (JIT). Реализаций несколько, самая распространённая — HotSpot.

JRE (Java Runtime Environment) — всё, что нужно для запуска готовой программы: JVM плюс стандартная библиотека классов.

JDK (Java Development Kit) — набор для разработки: JRE плюс компилятор javac (исходники .java → байткод .class), упаковщик jar, javadoc, отладчик, jshell, инструменты диагностики (jcmd, jstack, jmap).

Путь программы: javac компилирует исходник в платформонезависимый байткод, а JVM конкретной ОС его исполняет. В современных версиях отдельный JRE не распространяется: ставят JDK или собирают минимальный образ среды выполнения через jlink.

Что хотят услышать

  • Верная вложенность JVM ⊂ JRE ⊂ JDK.
  • Что делает JVM и что добавляет JDK (компилятор).
  • Путь от исходника к исполнению через байткод.

Частые ошибки

  • Говорить, что JRE компилирует код.
  • Путать JVM как спецификацию/реализацию с полным JDK.

Проверьте себя

Один верный вариант. Подумайте, потом откройте ответ.

Показать варианты и ответ
  • ✓JVM исполняет байткод; JRE = JVM + библиотеки для запуска; JDK = JRE + инструменты разработки (компилятор)
  • ✗JDK только запускает, JRE компилирует
  • ✗Это три названия одного и того же
  • ✗JVM включает в себя JDK

Что спросят дальше

  • Что такое байткод?
  • Почему один байткод может запускаться на разных ОС?

Разбор темы

Связанные вопросы

Закрытая бета

Подсказки на собеседовании — в реальном времени

sotto слышит вопрос интервьюера и показывает короткий ответ и план, как в блоке «Коротко». Оставьте контакт — пришлём доступ и промокод.

  • Промокод на 2 часа — сверх пробных 30 минут
  • Программа для Windows — скачать сразу, войти — через Яндекс ID или VK ID
  • Прямая связь с разработчиком: что улучшить — сделаем