JDK или JRE: что выбрать новичку? Разбираемся раз и навсегда
Если вы только начинаете свой путь в мире Java, то рано или поздно столкнетесь с вопросом: «А что, собственно, мне нужно скачать? JDK, JRE, а может, достаточно одной JVM?». Этот вопрос настолько популярен, что на Stack Overflow он собрал тысячи просмотров и десятки ответов. И это не случайно — путаница между этими аббревиатурами способна загубить первый проект еще на старте.
Представьте, что Java — это кухня. JRE — это уже готовый ресторан, где можно прийти и поесть. А JDK — это сама кухня с плитами, ножами и поварскими книгами, где можно приготовить что угодно. Чувствуете разницу? Давайте разложим все по полочкам, чтобы вы больше никогда не сомневались, что качать.
Коротко о главном: JVM, JRE, JDK
Прежде чем нырять в детали, давайте разберемся с базовой иерархией. Многие новички думают, что это три разных продукта. На самом деле, это матрешка, где один компонент вложен в другой.
- JVM (Java Virtual Machine) — это сердце. Виртуальная машина, которая выполняет байт-код. Сама по себе она бесполезна, как мотор без машины.
- JRE (Java Runtime Environment) — это JVM + набор стандартных библиотек (например,
java.lang,java.util). Это среда для запуска готовых Java-программ. - JDK (Java Development Kit) — это JRE + инструменты разработчика: компилятор
javac, отладчикjdb, утилитаjavadocи другие.
Простая формула, которую стоит запомнить:
JDK = JRE + Инструменты разработки
JRE = JVM + Библиотеки
Теперь, когда вы видите на сайте Oracle строчку «Download JDK», вы знаете, что внутри есть всё необходимое и для запуска, и для написания кода.
Зачем нужен JRE, если есть JDK?
Хороший вопрос. Если JDK включает в себя JRE, зачем вообще скачивать «просто среду выполнения»? Дело в размере и целевой аудитории.
Представьте, что вы написали супер-игру на Java и хотите дать другу поиграть. Ваш друг — не программист. Он не собирается ничего компилировать. Ему нужна только «коробка» для запуска файла .jar. Тащить ему целый JDK размером под 300 МБ — бессмысленно. JRE занимает меньше места (около 100-150 МБ) и не содержит лишних инструментов, которые сбивают с толку обычного пользователя.
Именно поэтому на сайтах для скачивания Java обычным пользователям предлагают именно JRE. А разработчикам — JDK. В последних версиях (Java 11+) Oracle пошла еще дальше и фактически объединила их, сделав JDK «самодостаточным» модулем. Но концептуально разница осталась.
Как проверить, что у вас установлено?
Самый простой способ — открыть терминал (командную строку) и ввести пару команд. Это сэкономит вам часы гугления, когда что-то пойдет не так.
Шаг 1. Проверяем версию Java (JRE):
java -version
Если JRE установлена, вы увидите что-то вроде:
java version "17.0.2" 2022-01-18 LTS
Java(TM) SE Runtime Environment (build 17.0.2+8-LTS-86)
Шаг 2. Проверяем компилятор (JDK):
javac -version
Если вы видите:
javac 17.0.2
Поздравляю! У вас установлен JDK. Если же команда не найдена — у вас либо только JRE, либо Java не прописана в переменных окружения (PATH).
Пример из жизни: почему без JDK вы не напишете код
Давайте представим ситуацию. Вы установили только JRE (например, чтобы поиграть в Minecraft). Открываете блокнот и пишете свой первый «Hello, World!»:
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Привет, мир!");
}
}
Сохраняете файл как HelloWorld.java. Теперь пытаетесь запустить его двойным кликом — ничего не происходит. Идете в терминал, пишете java HelloWorld — ошибка: «Could not find or load main class».
В чем проблема? Дело в том, что компьютер не понимает текст. JRE умеет запускать только скомпилированный байт-код (файлы .class). Чтобы превратить ваш текстовый файл в байт-код, нужен компилятор javac, который есть только в JDK.
Правильная последовательность действий при наличии JDK:
- Компилируем:
javac HelloWorld.java(появляется файлHelloWorld.class) - Запускаем:
java HelloWorld
Вот и вся магия. JRE — это плеер. JDK — это студия звукозаписи. Вы не сможете записать трек без студии, но для прослушивания готового хита студия не нужна.
Частые ошибки новичков (и как их избежать)
На основе того самого обсуждения на Stack Overflow, я собрал три самые популярные грабли, на которые наступают новички.
Ошибка 1: «Я скачал JDK, но команда javac не работает»
Это классика. Вы скачали JDK, установили, а в терминале пишет «команда не найдена». Причина: переменная окружения PATH не указывает на папку bin внутри JDK. Решение: добавить путь вручную или переустановить JDK, поставив галочку «Add to PATH» во время установки (обычно есть в инсталляторе).
Ошибка 2: «У меня две версии Java, всё сломалось»
Если у вас установлен и JDK 17, и JRE 8 (например, для старой программы), система может путаться. Совет: используйте инструмент jenv (для Mac/Linux) или просто удалите старую версию, если она не нужна. Или настраивайте переменные окружения явно под конкретный проект.
Ошибка 3: «Я скачал JRE и пытаюсь писать код»
Выше мы уже разобрали этот сценарий. Если вы разработчик — вам нужен JDK. JRE — для конечных пользователей.
А как же современные версии Java (11, 17, 21)?
С выходом Java 9 и особенно Java 11 ситуация немного изменилась. Oracle решила упростить жизнь и перестала расп