Привет читатели! В предыдущей статье серии JVM разработчики узнали о компонентах ClassLoader и Runtime Data Areas виртуальной машины. Это руководство поможет разработчикам правильно понять механизм выполнения в JVM.
1. Введение
Прежде чем двигаться дальше, давайте взглянем на виртуальную машину Java и ее основные характеристики.
1.1 Что такое виртуальная машина Java (JVM)?
Виртуальная машина Java (JVM) — это абстрактная виртуальная машина, которая находится на вашем компьютере и обеспечивает среду выполнения для выполнения байт-кода Java. JVM доступна для многих аппаратных и программных платформ, но немногие разработчики Java знают, что Java Runtime Environment (JRE) является реализацией виртуальной машины Java (JVM). JVM анализирует байт-код, интерпретирует его и выполняет тот же байт-код для отображения выходных данных.
Основная функция JVM — выполнять скомпилированные .class
(т.е. байт-код) и генерировать вывод. Обратите внимание , что каждая операционная система имеет свою JVM, но сгенерированный вывод байт-кода одинаков во всех операционных системах. Это означает, что байт-код, сгенерированный в ОС Windows, также может работать в ОС Linux и наоборот, что делает Java независимым от платформы языком.
1.1.1 Что делает JVM?
Виртуальная машина Java выполняет следующие операции:
- Загрузка требуемых файлов
.class
и jar - Присвоение ссылок и проверка кода
- Исполнение кода
- Предоставляет среду выполнения для байт-кода Java
1.1.2 Внутренняя архитектура JVM
На следующей диаграмме показаны ключевые внутренние компоненты виртуальной машины Java, соответствующие спецификации JVM.
Компонент механизма выполнения, показанный на фиг.2, поясняется ниже.
1.2 Исполнение движка в JVM
Этот компонент выполняет байт-код, который назначается областям данных времени выполнения через загрузчик классов. Этот байт-код читается как инструкция, и каждая инструкция байт-кода состоит из 1-байтового кода операции и операнда сложения. Обратите внимание , что байт-код Java написан в удобочитаемой форме, поэтому механизм выполнения должен изменить байт-код на язык, который может быть легко выполнен машиной в виртуальной машине Java. Механизм выполнения имеет три основных подкомпонента, т.е.
- Интерпретатор : Этот компонент читает инструкции байт-кода и выполняет их последовательно. Компонент запускает приложение из командной строки, принимая аргумент имени файла. Следующая команда-прототип может быть использована:
1
java <_compiled_file_name_without_extension_>
Помните , что скомпилированный класс (то есть файл
.class
), загружаемый интерпретатором виртуальной машины, должен содержать методmain()
который принимает форму ниже.12345public
static
void
main(String[] args) {
// Sample code here
}
- JIT (Just In Time) компилятор : этот компонент уравновешивает недостаток интерпретатора в медленном исполнении и повышает производительность. JIT-компилятор компилирует аналогичную часть байт-кода одновременно и, таким образом, уменьшает общее время, необходимое для компиляции. Компилятор в этом компоненте ссылается на транслятор, который преобразует набор инструкций JVM в набор инструкций для конкретной ОС.
- Oracle использует компилятор, известный как Hotspot Compiler, который ищет горячие точки, которые требуют компиляции с наивысшим приоритетом посредством профилирования, а затем компилирует горячую точку в собственный код. Здесь, если байт-код скомпилированного метода больше не требуется, виртуальная машина горячей точки удаляет собственный код из кэша и работает в режиме интерпретатора.
- Сборка мусора : этот компонент является частью механизма выполнения, который освобождает память путем сбора и удаления объектов, на которые нет ссылок
1.3 Как скомпилировать и выполнить класс Java?
В этом разделе будет продемонстрирована компиляция и выполнение класса Java. Давайте разберем этот процесс с помощью примера фрагмента кода.
1.3.1 Создание файла Java
Откройте командную строку операционной системы, и мы будем использовать «блокнот» для создания простого класса Java. Следующая команда Java может быть использована.
1
|
> notepad _sample_file_name_with_extension_ |
Команда дает следующий вывод.
1.3.2 Написание примера кода Java
Как показано на рис. 4, команда откроет блокнот, и разработчики могут добавить пример кода в файл Welcome.java
который отображает фиктивный вывод. Пример кода показан на рис. 5 и отобразит приветственное сообщение об успешном выполнении.
1.3.3 Компиляция Java-класса
После сохранения кода в файле Welcome.java
разработчикам необходимо скомпилировать его. Эта компиляция создаст файл Welcome.class
который, в свою очередь, создаст файл .class
. Чтобы скомпилировать файл, можно использовать следующую команду Java.
1
|
> javac _Java_file_name_with_extension_ |
Команда дает следующий вывод.
1.3.4 Выполнение класса Java
Теперь разработчикам потребуется выполнить сгенерированный файл Welcome.class
для отображения результатов. Чтобы выполнить файл, можно использовать следующую команду Java.
1
|
> java _Compiled_file_name_with_extension_ |
Команда дает следующий вывод.
1.4 JVM против JRE против JDK
Прежде чем мы продолжим и закончим этот урок, давайте взглянем на три важных ключевых слова Java-программирования. Многие разработчики не могут понять разницу между ними.
- Виртуальная машина Java (JVM) : JVM — это виртуальная машина, которая обеспечивает среду выполнения для выполнения байт-кода Java
- Java Runtime Environment (JRE) : JRE — это среда, в которой JVM работает и имеет библиотеки классов и другие файлы, которые виртуальная машина Java использует во время выполнения. Другими словами, JRE = виртуальная машина Java (JVM) + библиотеки для запуска приложения.
- Java Development Kit (JDK) : JDK является родительским набором JRE и содержит все, что JRE содержит вместе с инструментами разработки, такими как компилятор, отладчик и т. Д. Другими словами, JDK = Java Runtime Environment (JRE) + инструменты разработки
Вот графическое представление JVM, JRE и JDK.
Вот и все для этого поста. Счастливого обучения!
2. Вывод
В этом руководстве разработчики рассмотрели компонент механизма исполнения в JVM. Вы можете скачать образец кода в разделе « Загрузки ».
3. Загрузите исходный код
Это было обзорное руководство по механизму выполнения в виртуальной машине Java (JVM).