Отличительная особенность Java — возможность запускать один код на устройствах с разной ОС. За это отвечают особые компоненты экосистемы: JDK, JRE и JVM. Как они работают и чем отличаются — рассказываем в статье.
Как работает Java-программа
Большинство языков программирования сразу компилируются в машинный код. Java не преобразует исходный код напрямую в команды процессора. Сначала компилятор формирует универсальный байткод.
Весь процесс выглядит так:
Java-код (.java) → Компиляция → Байткод (.class) → JVM → Работа программы
За каждый этап отвечает отдельный компонент:
- JVM — получает байткод и выполняет его на устройстве.
- JRE — обеспечивает среду для запуска Java-приложений.
- JDK — предоставляет инструменты для разработки с нуля.
Рассмотрим подробнее, какую роль играют JDK, JRE и JVM.

Что такое JVM
Java Virtual Machine — это виртуальная машина Java, которая выступает в роли переводчика. Она превращает байткод в понятные инструкции для процессора и ОС.
Таким образом JVM скрывает различия между платформами. Разработчик может написать программу один раз, скомпилировать ее в байткод, а затем запускать на любой операционной системе при наличии подходящей JVM. Это главный принцип Java: «Написал один раз — запускай где угодно».
У JVM есть несколько основных задач:
- Загрузка байткода. JVM получает скомпилированный файл .class и подготавливает его к выполнению.
- Проверка безопасности. Виртуальная машина проверяет код перед запуском, чтобы предотвратить потенциально опасные действия.
- Управление памятью. JVM самостоятельно распределяет память для создаваемых объектов.
- Сборка мусора. За это отвечает Garbage Collector — он находит и удаляет неиспользуемые объекты.
- Выполнение программы. JVM преобразует байткод в машинные инструкции, понятные операционной системе и процессору.
Без JVM программа на Java не сможет выполняться. Но одной JVM будет недостаточно для полноценной работы. Для выполнения байткода также нужны стандартные библиотеки и вспомогательные компоненты — их предоставляет JRE.
Как работает JRE
Java Runtime Environment — это среда выполнения для приложений на Java. Она включает:
- JVM для запуска байткода;
- стандартные библиотеки Java;
- служебные компоненты и системные файлы.
При запуске программы среда выполнения загружает необходимые библиотеки, инициализирует JRM и передает ей байткод. После этого виртуальная машина начинает выполнять инструкции, а JRE обеспечивает доступ к стандартным возможностям платформы Java.
Если компания создала внутреннее приложение для сотрудников на Java, им не нужен полный пакет разработчика, будет достаточно среды JRE.
Зачем нужен JDK
Java Development Kit — это готовый комплект инструментов для программистов, которые работают на Java.
В состав JDK входят:
- Компилятор javac — преобразует исходные файлы .java в байткод .class, который затем выполняется JVM.
- JVM — запускает скомпилированный код и обеспечивает его работу на разных платформах.
- Стандартные библиотеки Java — используются для работы со строками, файлами, коллекциями, сетью и другими возможностями языка.
- Инструменты разработчика — нужны для отладки, анализа производительности и проверки работоспособности.
Для создания Java-приложений потребуется именно JDK. В отличие от JRE, которая нужна только для запуска готовых программ, JDK содержит инструменты, позволяющие создавать новые приложения с нуля.
Чем отличаются JDK, JRE и JVM
Все три компонента тесно связаны: JDK включает JRE, а JRE — включает JVM. При этом у каждого компонента собственная задача.
Сегодня отдельная установка JRE встречается редко. Начиная с Java 9, корпорация Oracle перестала распространять JRE как отдельный продукт. Пользователи устанавливают полный JDK или получают необходимую среду вместе с приложением.

Какую JDK выбрать
Существуют разные сборки JDK. Они реализуют одну и ту же платформу, но отличаются типом лицензии, политикой поддержки и особенностями распространения.
- OpenJDK — официальная версия платформы, которая служит основой для большинства современных дистрибутивов.
- Oracle JDK — комплект разработчика от Oracle. Предоставляется бесплатно для личных целей и обучения.
- Eclipse Temurin — популярный дистрибутив. Регулярно получает обновления, поддерживает LTS-релизы и широко используется как в учебных, так и в корпоративных проектах.
- Amazon Corretto — кроссплатформенный дистрибутив от Amazon. Работает на разных ОС, подходит для запуска программ в облаке и на серверах.
- Microsoft Build of OpenJDK — долгосрочно поддерживаемый дистрибутив. Обычно используется внутри инфраструктуры Microsoft и на платформе Azure.
Все дистрибутивы позволяют создавать Java-программы. Начинающим разработчикам будет достаточно OpenJDK или Eclipse Temurin — они бесплатны, регулярно обновляются и подходят для большинства задач.
Типичные ошибки начинающих
При первом знакомстве с Java некоторые разработчики допускают ошибки:
- Не проверяют установленную версию Java: если на компьютере несколько версий JDK, система может использовать не ту, которая нужна для проекта. Из-за этого возникают ошибки компиляции или несовместимость библиотек. Перед началом работы проверьте активную версию Java и настройте использование нужной JDK.
- Не добавляют Java в переменную PATH: даже при корректной установке JDK код может не выполняться, если операционная система не знает, где искать исполняемые файлы. Убедитесь, что каталог bin из установленной JDK указан в системной переменной PATH. После изменения настроек откройте новое окно терминала или перезапустите его.
- Пытаются запустить java-код напрямую: сначала исходный файл нужно скомпилировать в байткод с помощью команды javac, а уже потом выполнить через JVM.
Понимание того, как взаимодействуют JDK, JRE и JVM, значительно упрощает работу с Java. Когда знаешь, за что отвечает каждый из компонентов, легче настроить окружение и разобраться с запуском приложений.
Главное о JDK, JRE и JVM
- JVM превращает байткод в инструкции для процессора и отвечает за запуск приложений на разных операционных системах.
- JRE объединяет виртуальную машину и библиотеки классов, используется для выполнения готовых программ.
- Для создания приложений с нуля, нужно установить JDK. Он включает среду выполнения JRE, компилятор и утилиты для отладки.
- Есть разные сборки JDK. Начинающим программистам подойдут OpenJDK или Eclipse Temurin.
- Эти три компонента связаны между собой: JDK включает среду JRE, а JRE — содержит JVM.
