JVM срещу JRE
Java е език за програмиране на различни платформи. Той също така се придържа към принципа „пиши веднъж, тичай навсякъде“. Програмата, написана на Java, може да бъде компилирана в байт код на Java от Java компилатора. След това байт кодът може да бъде изпълнен на всяка платформа, работеща с JRE (Java Runtime Environment). JRE включва JVM (Java Virtual Machine), базови библиотеки (които реализират Java API) и други поддържащи файлове. JVM е абстрактна изчислителна машина, която действа като посредник между специфичния за платформите JRE и Java кода.
Какво е JVM?
JVM е вид виртуална машина, която се използва от машини за изпълнение на байт код на Java. Според Sun Microsystems (който разработи Java, докато съвсем наскоро не беше закупена от Oracle), в света има повече от 4 милиарда устройства с активирани JVM. По-конкретно, Java Virtual Machine е абстрактна изчислителна машина, внедрена на стандартен хардуер и операционна система. Една от важните функционалности, предоставени от JVM, е автоматизираната обработка на изключения. Обикновено JVM придружава колекция от стандартни библиотеки. Всъщност JRE е пакет, съдържащ JVM и класовете, които прилагат Java API. JVM е много важен компонент, който побира естеството „компилиране веднъж, стартиране навсякъде“на програмния език Java. Докато JVM работи, вашият Java код може да работи отгоре му, независимо от платформата, използвана в машината. Ето защо Java се нарича междуплатформен или многоплатформен език.
Какво е JRE?
JRE е средата за изпълнение, в която се изпълнява Java код. Обикновено JRE се състои от JVM, стандартни базови класове (които изпълняват базовия Java API) и други поддържащи файлове. Типът и структурата на JRE варират в зависимост от операционната система и архитектурата на процесора. Когато Java кодът се изпълни, JRE ще комуникира с операционната система, която от своя страна ще разговаря със съответните хардуерни компоненти. Инсталирането на JRE на вашата система е задължително, за да стартирате всеки Java код на вашата машина. JRE обаче не включва компилатор, дебъгер или други инструменти, необходими за разработването на Java програми (като appletviewer и javac). Ако трябва да разработите програми на Java, трябва да имате JDK (Java Development Kit), който включва и JRE.
Каква е разликата между и JVM и JRE?
Въпреки че при ежедневната употреба термините JVM и JRE се използват взаимозаменяемо, те имат своите различия. JVM е виртуална машина, която работи на върха на операционната система, докато JRE е средата за изпълнение по време на изпълнение. JVM е част от JRE. Спецификацията на JVM действа като връзка между специфичната за платформата реализация на JRE и стандартните библиотеки на Java. Следователно JVM е субектът, който предоставя на програмиста абстракцията от вътрешните детайли за изпълнение. И е отговорен за интерпретирането на компилирания байт код. Въпреки това, JVM се нуждае от базовите библиотеки и други поддържащи файлове, за да изпълни java байт кода. Но понякога JRE просто се определя като изпълнение на JVM.