Что такое JVM? Объясните, что такое JVM. Archiтекстура
⚡ Умное резюме
Java Виртуальная машина (JVM) — это движок, который предоставляет среду выполнения для управления Java Этот код преобразует платформенно-независимый байт-код в машинный язык. Он является частью Java Среда выполнения и обеспечивает JavaБлагодаря возможности однократной записи и запуска в любом месте, устройство обладает высокой переносимостью.

Что такое JVM в Java?
Java Виртуальная машина (JVM) это движок, который предоставляет среду выполнения для управления Java код или приложения. Он преобразует Java байт-код на машинный язык. JVM является частью Java Среда выполнения (JRE). В других языках программирования компилятор генерирует машинный код для конкретной системы. Однако... Java Компилятор генерирует код для виртуальной машины, известной как Java Виртуальная машина.
Как работает JVM?
Первое Java Код компилируется в байт-код. Этот байт-код интерпретируется на разных машинах. Между хост-системой и Java Исходный код, байт-код — это промежуточный язык. JVM в Java отвечает за распределение пространства памяти.
Работа Java Виртуальная машина (JVM)
Archiструктура JVM (Java Виртуальная машина)
Теперь давайте разберемся в архитектуре JVM. Архитектура JVM в Java Содержит загрузчик классов, область памяти, механизм выполнения и многое другое.
Java Виртуальная машина Archiтекстура
1) Загрузчик классов
Загрузчик классов — это подсистема, используемая для загрузки файлов классов. Он выполняет три основные функции: загрузку, компоновку и инициализацию.
2) Область метода
Область методов JVM хранит структуры классов, такие как метаданные, пул констант времени выполнения и код для методов.
3) Куча
Все Объекты, связанные с ними переменные экземпляра и массивы хранятся в куче. Эта память является общей и используется несколькими потоками.
4) Языковые стеки JVM
Java Языковые стеки хранят локальные переменные и их частичные результаты. Каждый поток имеет свой собственный стек JVM, создаваемый одновременно с созданием потока. Новый кадр создается при каждом вызове метода и удаляется после завершения процесса вызова метода.
5) Регистры ПК
Регистр PC хранит адрес Java Инструкция виртуальной машины, которая в данный момент выполняется. JavaКаждый поток имеет свой собственный регистр PC.
6) Стеки собственных методов
Стеки нативных методов содержат инструкции нативного кода, зависящие от нативной библиотеки. Код написан на другом языке, а не на каком-либо другом. Java.
7) Механизм выполнения
Исполнительный механизм считывает байт-код и выполняет его по частям. Он использует интерпретатор и JIT-компилятор (Just-In-Time) для преобразования байт-кода в машинный код и его выполнения.
8) Собственный интерфейс метода
Интерфейс собственного метода — это среда программирования. Это позволяет Java Код, выполняющийся в JVM, вызывает нативные приложения и библиотеки, а также используется для того, чтобы быть вызванным ими.
9) Собственные библиотеки методов
Native Libraries — это собрание библиотек коренных народов (C, C++), которые необходимы механизму выполнения.
ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ Code Процесс компиляции и выполнения
Для написания и выполнения программного обеспечения вам потребуется следующее:
- 1) Редактор – Для ввода программы можно использовать блокнот.
- 2) составитель – Для преобразования вашей программы на языке высокого уровня в машинный код.
- 3) Линкер – Для объединения ссылок на различные файлы программы в вашей основной программе.
- 4) Погрузчик – Для загрузки файлов с вашего дополнительного запоминающего устройства, такого как жесткий диск, флеш-накопитель или компакт-диск, в оперативную память для выполнения. Загрузка происходит автоматически при выполнении вашего кода.
- 5) Исполнение – Фактическое выполнение кода, которое осуществляется вашей операционной системой и процессором.
С учетом вышеизложенного, посмотрите следующее видео и изучите внутреннее устройство и архитектуру JVM.Java виртуальная машина).
Нажмите здесь если видео недоступно
Процесс компиляции и выполнения кода C
Чтобы понять Java Давайте сначала кратко рассмотрим процесс компиляции и компоновки в языке C.
Предположим, в главной функции вы вызвали две функции, f1 и f2. Главная функция хранится в файле a1.c.
Функция f1 хранится в файле a2.c.
Функция f2 хранится в файле a3.c.
Все эти файлы, а именно a1.c, a2.c и a3.c, передаются компилятору, на выходе которого находятся соответствующие объектные файлы, представляющие собой машинный код.
Следующий шаг — интеграция всех этих объектных файлов в один исполняемый файл (.exe) с помощью компоновщика. Компоновщик объединит все эти файлы и создаст исполняемый файл (.exe).
Во время выполнения программы загрузчик загрузит исполняемый файл (.exe) в систему. Оперативная память для выполнения.
Java Компиляция и выполнение кода в Java VM
Теперь давайте рассмотрим процесс JavaВ вашем главном меню есть два метода: f1 и f2.
- Основной метод находится в файле a1.java.
- f1 хранится в файле как a2.java.
- f2 хранится в файле как a3.java.
Компилятор скомпилирует три файла и создаст три соответствующих файла .class, содержащих байт-код. В отличие от языка C, здесь не выполняется компоновка.
Java ВМ, или Java Виртуальная машина размещается в оперативной памяти. Во время выполнения, используя загрузчик классов, файлы классов загружаются в оперативную память. Байт-код проверяется на наличие нарушений безопасности.
Далее исполнительный механизм преобразует байт-код в машинный код. Это компиляция «на лету». Это одна из главных причин, почему Java сравнительно медленный.
ПРИМЕЧАНИЕ: JIT, или компилятор «на лету», — это часть Java Виртуальная машина (JVM). Она интерпретирует части байт-кода, выполняющие схожие функции одновременно.
Зачем был создан сайт Java как интерпретируемый, так и скомпилированный язык?
Языки программирования классифицируются как:
- Язык высокого уровня, например, C++, Java
- Языки среднего уровня, например, C
- Языки низкого уровня, например, Assembly
- Наконец, самый нижний уровень — это машинный язык.
A компилятор Это программа, которая преобразует программу с одного уровня языка на другой. Например, преобразование C++ программу в машинный код. Java компилятор преобразует высокоуровневый Java код в байт-код (который также является разновидностью машинного кода).
An переводчик Это программа, которая преобразует программу одного уровня в программу другого языка программирования на уровне тот же уровеньНапример, преобразование Java программа в C++.
In JavaГенератор кода Just-In-Time преобразует байт-код в машинный код, которые находятся на одном уровне программирования. Следовательно, Java является одновременно компилируемым и интерпретируемым языком.
Зачем был создан сайт Java медленный?
Две основные причины медлительности Java составляют:
- Динамическое связывание: В отличие от C, компоновка выполняется во время выполнения, каждый раз, когда программа запускается в Java.
- Интерпретатор времени выполнения: Преобразование байтового кода в собственный машинный код выполняется во время выполнения в Javaчто еще больше снижает скорость.
Однако последние версии Java В значительной степени удалось устранить эти узкие места в производительности.











