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