Виртуальная машина Java (JVM) и ее архитектура

Что такое JVM?

JVM – это механизм, обеспечивающий среду выполнения для управления кодом Java или приложениями. Он преобразует байт-код Java в язык машин. JVM является частью JRE (среда запуска Java). Это означает, что виртуальная машина Java

В других языках программирования компилятор создает машинный код для конкретной системы. Однако компилятор Java создает код для виртуальной машины, известной как виртуальная машина Java.

  • Во-первых, код Java выполняется в байт-код. Этот байт-код интерпретируется на разных машинах
  • Между хост-системой и Java-источником Bytecode является языком-посредником.
  • JVM отвечает за выделение памяти.

В этом уроке вы узнаете,

Архитектура JVM

Давайте разобраться в архитектуре JVM. Он содержит загрузчик классов, область памяти, механизм выполнения и т. Д.

1) загрузчик классов

Класс loader – подсистема, используемая для загрузки файлов классов. Он выполняет три основные функции: Загрузка, связывание и инициализация.

2) Область метода

Область методов JVM хранит структуры классов, такие как метаданные, постоянный пул времени выполнения и код методов.

3) Куча

Все объекты, связанные с ними переменные экземпляра и массивы хранятся в куче. Эта память является общей и разделяется между несколькими потоками.

4) Стеки языков JVM

Язык Java Stacks хранит локальные переменные, и это частичные результаты. Каждый поток имеет свой собственный стек JVM, создаваемый одновременно с созданием потока. Новый кадр создается всякий раз, когда вызывается метод, и он удаляется, когда процесс вызова метода завершен.

5) Регистры ПК

Регистр ПК хранит адрес инструкции виртуальной машины Java, которая в настоящее время выполняется. В Java каждый поток имеет отдельный регистр ПК.

6) Нативные стеки методов

Собственные стеки методов содержат инструкцию нативного кода, зависящую от исходной библиотеки. Он написан на другом языке вместо Java.

7) Механизм исполнения

Это тип программного обеспечения, используемого для тестирования оборудования, программного обеспечения или полных систем. Механизм выполнения теста никогда не несет никакой информации о тестируемом продукте.

8) Интерфейс на основе метода

Интерфейс Native Method – это программная среда. Он позволяет Java-коду, запущенному в JVM, вызывать библиотеки и собственные приложения.

9) Нативные библиотеки методов

Native Libraries – это сборник Native Libraries (C, C ++), который необходим движку Execution Engine

 

Процесс компиляции и выполнения программного кода

Чтобы написать и выполнить программу, вам необходимо следующее

1) Редактор. Чтобы ввести вашу программу, для этого можно использовать блокнот

2) Компилятор. Чтобы преобразовать вашу языковую программу в собственный машинный код

3) Linker – объединить различные ссылки на файлы программ в вашей основной программе.

4) Loader – для загрузки файлов со своего дополнительного устройства хранения, такого как Hard Disk, Flash Drive, CD в RAM для выполнения. Загрузка выполняется автоматически при выполнении кода.

5) Исполнение – Фактическое выполнение кода, который обрабатывается вашей ОС и процессором.

На этом фоне см. Следующее видео и изучите работу и архитектуру виртуальной машины Java.

 

Процесс компиляции и выполнения кода C

Чтобы понять процесс компиляции Java в Java. Давайте сначала рассмотрим процесс компиляции и связывания в C.

Предположим, что в основном вы вызывали две функции f1 и f2. Основная функция хранится в файле a1.c.

Функция f1 сохраняется в файле a2.c

Функция f2 сохраняется в файле a3.c

Все эти файлы, то есть a1.c, a2.c и a3.c, передаются в компилятор. Выходной файл – это соответствующие объектные файлы, которые являются машинным кодом.

Следующий шаг – объединение всех этих объектных файлов в один .exe-файл с помощью компоновщика. Компилятор объединяет все эти файлы и создает файл .exe.

Во время прогона программа загрузчика загрузит a.exe в ОЗУ для выполнения.

Компиляция и выполнение Java-кода в Java VM

Давайте посмотрим на процесс JAVA. В основном у вас есть два метода: f1 и f2.

  • Основной метод хранится в файле a1.java
  • f1 хранится в файле как a2.java
  • f2 хранится в файле как .java

Компилятор скомпилирует эти три файла и выдает 3 соответствующих файла .class, которые состоят из кода BYTE. В отличие от C, связь не выполняется .

Виртуальная машина Java или виртуальная машина Java находится в ОЗУ. Во время выполнения, используя загрузчик классов, файлы классов приводятся в ОЗУ. Код BYTE проверяется на наличие каких-либо нарушений безопасности.

Затем механизм выполнения преобразует Bytecode в собственный машинный код. Это как раз вовремя компиляция. Это одна из главных причин того, что Java сравнительно медленная.

ПРИМЕЧАНИЕ. Компилятор JIT или Just-in-time является частью виртуальной машины Java (JVM). Он интерпретирует часть байтового кода, которая имеет аналогичную функциональность одновременно.

Почему Java интерпретируется и скомпилирован?

Языки программирования классифицируются как

  • Язык более высокого уровня Ex. C ++, Java
  • Языки среднего уровня Ex. С
  • Низкоуровневая сборка языка
  • наконец, самый низкий уровень как язык машины.

Компилятор это программа , которая преобразует программу с одного уровня языка на другой. Пример преобразования программы на C ++ в машинный код.

Компилятор java преобразует высокоуровневый Java-код в байт-код (который также является типом машинного кода).

Переводчик это программа , которая преобразует программу на одном уровне , на другом языке программирования , на том же уровне. Пример преобразования Java-программы в C ++

В Java генератор Just In Time Code преобразует байт-код в собственный машинный код, который находится на одинаковых уровнях программирования.

Следовательно, Java как скомпилирован, так и интерпретируется.

Почему Java медленно?

Две основные причины медленности Java:

  1.   Динамическое связывание.В отличие от C, связь выполняется во время выполнения, каждый раз, когда программа запускается на Java.
  2.  Интерпретатор времени выполнения:преобразование байтового кода в собственный машинный код выполняется во время выполнения на Java, что способствует замедлению скорости
  3. Тем не менее, последняя версия Java в значительной степени устраняет узкие места производительности.

    Резюме :

    • JVM или Java Virtual Machine – это двигатель, который управляет Java-кодом. Он преобразует байт-код Java в язык машин.
    • В JVM код Java компилируется в байт-код. Этот байт-код интерпретируется на разных машинах
    • JIT или компилятор Just-in-time является частью виртуальной машины Java (JVM). Он используется для ускорения времени выполнения
    • По сравнению с другими машинами компилятора, Java может работать медленно.

     

0 ответы

Ответить

Хотите присоединиться к обсуждению?
Не стесняйтесь вносить свой вклад!

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *