Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Industrial programming >> java

JVM | Что такое виртуальная машина Java и ее архитектура

Что такое JVM?

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

Вот как работает JVM

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

Между хост-системой и исходным кодом Java байт-код является промежуточным языком.

JVM в Java отвечает за выделение памяти.

<центр>

<рисунок>

В этом руководстве по JVM вы узнаете-

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

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

<центр>

<рисунок>

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

Загрузчик классов — это подсистема, используемая для загрузки файлов классов. Он выполняет три основные функции, т. Загрузка, связывание и инициализация.

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

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

3) Куча

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

4) Языковые стеки JVM

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

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

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

6) Стеки нативных методов

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

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

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

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

Native Method Interface — это среда программирования. Это позволяет коду Java, работающему в JVM, вызывать библиотеки и собственные приложения.

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

Нативные библиотеки — это набор нативных библиотек (C, C++), которые необходимы механизму выполнения.

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

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

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

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

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

4) Загрузчик <сильный> - Чтобы загрузить файлы с вашего вторичного устройства хранения, такого как жесткий диск, флэш-накопитель, компакт-диск, в ОЗУ для выполнения. Загрузка выполняется автоматически при выполнении кода.

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

На этом фоне просмотрите следующее видео и изучите внутреннюю работу JVM и архитектуру JVM (виртуальная машина Java).

Нажмите здесь, если видео недоступно

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

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

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

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

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

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

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

Во время выполнения программы программа-загрузчик загружает файл .exe в оперативную память для выполнения.

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

Теперь в этом руководстве по JVM давайте рассмотрим процесс для JAVA. В вашем main у вас есть два метода f1 и f2.

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

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

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

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

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

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

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

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

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

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

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

Почему Java работает медленно?

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

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

Однако последняя версия Java в значительной степени устранила узкие места производительности.

Сводка :


java

  1. Что такое ЧПУ?
  2. Java 10 — локальное рукопожатие потока
  3. Что такое токарная обработка?
  4. Что такое архитектурный дизайн?
  5. Что такое машинный болт?
  6. Что такое прядильная машина?
  7. Что такое автомат по продаже молока?
  8. Что такое горизонтально-сверлильный станок?
  9. Что такое автоматический пресс?
  10. Что делает машина