JVM против JRE
Java - это кроссплатформенный язык программирования. Он также придерживается принципа «напиши один раз, работай где угодно». Программа, написанная на Java, может быть скомпилирована в байт-код Java с помощью компилятора Java. Затем байт-код может быть выполнен на любой платформе, на которой работает JRE (среда выполнения Java). JRE включает в себя JVM (виртуальную машину Java), базовые библиотеки (которые реализуют Java API) и другие вспомогательные файлы. JVM - это абстрактная вычислительная машина, выступающая в роли посредника между специфичной для платформы JRE и кодом Java.
Что такое JVM?
JVM - это тип виртуальной машины, которая используется машинами для выполнения байт-кода Java. По данным Sun Microsystems (которая совсем недавно разрабатывала Java до тех пор, пока ее не купила Oracle), в мире насчитывается более 4 миллиардов устройств с поддержкой JVM. В частности, виртуальная машина Java - это абстрактная вычислительная машина, реализованная на стандартном оборудовании и в операционной системе. Одной из важных функций, предоставляемых 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.