Вопрос с собеседования · Java

Чем отличаются 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

Подробно

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.

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

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

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

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

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

Разбор темы

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

Партнёр платформы

Разбор собеседования с sotto

После собеседования sotto разбирает разговор: оценка, каждый вопрос — хорошо, частично или слабо, чего не хватило в ответе и над чем поработать к следующему разу. Первые 30 минут бесплатно.

Разбор собеседования