В чем разница между JDK и JRE в Java? Объясните для новичка
Краткая аналогия: JDK — это кухня, JRE — это столовая
Представьте, что вы шеф-повар. Чтобы приготовить блюдо (написать программу), вам нужна кухня с плитой, ножами и кастрюлями — это JDK (Java Development Kit). А чтобы просто съесть уже готовое блюдо, достаточно столовой с тарелками и вилками — это JRE (Java Runtime Environment).
Теперь технически
JRE — это среда для выполнения Java-программ. Она содержит:
- JVM (Java Virtual Machine) — виртуальная машина, которая запускает байт-код.
- Библиотеки классов (например, java.lang, java.util).
- Загрузчик классов и другие вспомогательные компоненты.
Если вы только пользуетесь готовыми Java-программами (например, играми или корпоративным софтом), вам нужна только JRE. Она не умеет компилировать — только запускать.
JDK — это надмножество JRE. В него входит всё, что есть в JRE, плюс инструменты разработчика:
- Компилятор javac — превращает .java в .class (байт-код).
- Утилиты — javadoc (генерация документации), jar (сборка архивов), jdb (отладчик).
- Заголовочные файлы для JNI (если нужно писать нативный код).
Пример, который показывает разницу
Допустим, вы написали программу, которая складывает два числа:
// Calculator.java
public class Calculator {
public static void main(String[] args) {
int sum = 2 + 3;
System.out.println("Sum = " + sum);
}
}
Шаг 1. Компиляция (требуется JDK):
javac Calculator.java
После этого появляется файл Calculator.class.
Шаг 2. Запуск (требуется JRE, но JDK тоже подойдёт):
java Calculator
Если у вас только JRE, команда javac не сработает, но java будет работать. Если у вас JDK — работают обе команды.
Почему их не объединяют?
- Размер: JDK весит ~300-500 МБ, JRE — ~100 МБ. Конечным пользователям незачем таскать лишние гигабайты инструментов.
- Безопасность: Компилятор и отладчик — это мощные инструменты. На серверах или в корпоративных средах их часто не устанавливают, чтобы никто случайно не скомпилировал вредоносный код.
- Разделение ролей: Разработчики — JDK, пользователи — JRE. Это логично.
Важное примечание
Начиная с Java 11, Oracle и OpenJDK перестали выпускать отдельную JRE. Теперь JDK включает в себя модуль jlink, который позволяет собрать минимальную среду выполнения для конкретного приложения. Но концептуально разница остаётся той же.
Итог: Если вы пишете код — ставьте JDK. Если только запускаете чужие программы — достаточно JRE (или используйте готовый JDK, это не ошибка).
<<Дополнение: как проверить, что у вас установлено
В командной строке (Windows) или терминале (Linux/macOS) выполните:
java -version
javac -version
- Если обе команды работают — у вас JDK.
- Если
java -versionработает, аjavacнет — у вас только JRE. - Если ни одна не работает — Java не установлена.
Ещё один способ понять разницу
JDK — это как набор инструментов плотника: молоток, пила, рубанок. JRE — это как готовый стул: вы можете на нём сидеть, но не можете сделать новый. Если вы хотите делать стулья — вам нужны инструменты (JDK). Если только сидеть — достаточно стула (JRE).
Когда вам может пригодиться только JRE
- Вы запускаете Java-приложения, скачанные из интернета (например, Minecraft).
- Вы работаете на сервере, где уже есть скомпилированные .jar файлы.
- Вы используете IDE (например, IntelliJ IDEA) — она сама скачает JDK, если нужно.
Но для обучения и разработки всегда ставьте JDK — это универсальное решение.
Ответов пока нет.
Войдите чтобы оставить ответ