В чём разница между jdk, jre и jvm?
Есть три понятия - jdk
, jre
и jvm
. Все эти понятия относятся к java
, но в чём их разница?
Есть три понятия - jdk
, jre
и jvm
. Все эти понятия относятся к java
, но в чём их разница?
Расшифровывается как Java Virtual Machine (виртуальная машина java). Она нужна для запуска уже скомпилированного кода (байт-кода), который хранится в файлах .class
. jvm
входит в состав jre
(о jre
пойдёт речь дальше) и является как иногда говорят "сердцем jre" или если говорить более серьёзно, ключевым компонентом jre
.
Расшифровывается как Java Runtime Environment (среда выполнения java).
jre
нужна для запуска уже готовых программ. jre
включает в себя jvm
и всё, что нужно для запуска java
-программ. jre
содержит в себе стандартные java
-библиотеки (например, java.util
, java.awt
, java.io
, все их не перечислить, их много).
Если кратко, то:
jre = jvm + библиотеки
Замечание: с Java 11 Oracle больше не поставляет JRE.
Расшифровывается как Java Development Kit (комплект для разработки на java). jdk
включает в себя jre
и инструменты для разработки. Что за инструменты? Все их я перечислять не буду, но вот некоторые из них:
javac
(компилятор)jdb
(отладчик)javadoc
(утилита для генерации документации по коду)serialver
(утилита для генерации поля serialVersionUID
)Все эти инструменты не нужны пользователю java
-приложений, но нужны разработчику.
Если кратко, то:
jdk = jvm + библиотеки + инструменты для разработки
Но тоже самое можно записать даже короче:
jdk = jre + инструменты разработки