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.