Что такое JVM? Объясните, что такое JVM. Archiтекстура

⚡ Умное резюме

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

  • 🧩 Мост байт-кода: Java Компилятор генерирует байт-код вместо машинного кода, и JVM интерпретирует этот байт-код в любой хост-системе.
  • ???? ️ Основные Archiтекстура: JVM объединяет загрузчик классов, область методов, кучу, стеки, регистры PC и исполнительный механизм для запуска программ.
  • 🔄 Процесс компиляции: В отличие от С, Java Не требует компоновки; файлы классов загружаются в оперативную память, проверяются, а затем выполняются во время выполнения.
  • JIT-компилятор: Компилятор Just-In-Time преобразует байт-код в машинный код непосредственно во время выполнения для повышения производительности.
  • 🐢 Примечание по производительности: Динамическая компоновка и интерпретация во время выполнения исторически создавали Java медленнее, хотя современные версии в значительной степени сокращают этот разрыв.

JVM Archiтекстура

Что такое JVM в Java?

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

Как работает JVM?

Первое Java Код компилируется в байт-код. Этот байт-код интерпретируется на разных машинах. Между хост-системой и Java Исходный код, байт-код — это промежуточный язык. JVM в Java отвечает за распределение пространства памяти.

Работа Java Виртуальная машина JVM

Работа Java Виртуальная машина (JVM)

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

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

JVM Archiтекстура

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.

Основная функция a1.c на языке C

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

Функция f1 a2.c в коде на языке C

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

Функция f2 a3.c в коде на языке C

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

Компилятор кода на языке C создает объектные файлы.

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

Компоновщик кода на языке C создает исполняемый файл (.exe).

Во время выполнения программы загрузчик загрузит исполняемый файл (.exe) в систему. Оперативная память для выполнения.

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

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

Теперь давайте рассмотрим процесс JavaВ вашем главном меню есть два метода: f1 и f2.

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

Java Код компилирует три файла в файлы классов.

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

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

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 составляют:

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

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

Часто задаваемые вопросы (FAQ)

JVM запускает фреймворки для искусственного интеллекта и обработки больших данных, такие как Deeplearning4j, Weka и Apache. SparkБлагодаря компилятору Just-In-Time и системе управления памятью эти библиотеки позволяют эффективно обрабатывать большие наборы данных на разных платформах без переписывания нативного кода.

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

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

Байт-код не зависит от платформы, но сама JVM зависит от платформы. Каждой операционной системе требуется собственная реализация JVM. Такая конструкция позволяет одному и тому же скомпилированному байт-коду работать везде, где установлена ​​совместимая JVM.

Подведем итог этой публикации следующим образом: