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

JVM: что это такое и архитектура

Что такое JVM?

Java Virtual Machine (JVM) — исполнительный движок, запускающий Java-приложения. Она трансформирует скомпилированный Java байт-код в нативные машинные инструкции и выполняет их на любой платформе, поддерживающей JVM. JVM — ключевой компонент Java Runtime Environment (JRE). В отличие от языков, компилируемых сразу в машинный код под конкретную ОС, Java-компилятор производит платформонезависимый байт-код, который JVM интерпретирует или компилирует в runtime.

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

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

JVM: что это такое и архитектура

В этом туториале вы узнаете:

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

Дизайн JVM модулен, состоит из нескольких подсистем, работающих вместе для загрузки, верификации и выполнения Java-кода.

JVM: что это такое и архитектура
  1. Class Loader — загружает файлы классов и выполняет линковку (верификацию, подготовку, разрешение) и инициализацию.
  2. Method Area — хранит структуры классов, метаданные, пулы констант, код методов.
  3. Heap — содержит все объекты, переменные экземпляров и массивы. Разделяется между всеми потоками.
  4. Java Stack — у каждого потока свой стек для локальных переменных и частичных результатов. Новый фрейм создаётся при входе в метод и удаляется при выходе.
  5. Program Counter (PC) Register — хранит адрес следующей инструкции для каждого потока.
  6. Native Method Stack — хранит вызовы нативного кода (написанного на C/C++).
  7. Execution Engine — выполняет байт-код интерпретацией или через JIT-компилятор.
  8. Native Method Interface (JNI) — позволяет Java-коду вызывать нативные библиотеки.
  9. Native Libraries — наборы платформозависимого нативного кода, используемые исполнительным движком.

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

Запуск программы обычно включает шаги:

  1. Редактор — где пишется исходный код.
  2. Компилятор — транслирует высокоуровневый код в нативный машинный код или байт-код.
  3. Линкер — объединяет объектные файлы и разрешает внешние ссылки.
  4. Загрузчик — загружает итоговый исполняемый файл в память.
  5. Выполнение — ОС и процессор запускают программу.

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

Для иллюстрации Java-процесса рассмотрим простую C-программу. Пусть main в a1.c вызывает f1 (в a2.c) и f2 (в a3.c).

JVM: что это такое и архитектура

Компилятор превращает каждый .c в объектный файл с машинным кодом. Линкер объединяет их в единый .exe. При запуске загрузчик маппит myapp.exe в ОЗУ и ОС начинает выполнение.

JVM: что это такое и архитектура

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

Java следует похожему, но отличному workflow. Исходники a1.java, a2.java, a3.java компилируются в байт-код a1.class, a2.class, a3.class. Отдельного этапа линковки нет; JVM загружает байт-код по требованию.

JVM: что это такое и архитектура

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

JVM: что это такое и архитектура

Примечание: JIT-компилятор — ключевой компонент JVM, выполняющий на лету трансляцию горячих путей байт-кода в эффективные нативные инструкции.

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

Дизайн Java сочетает преимущества обоих подходов:

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

Runtime-накладные расходы Java происходят из двух источников:

  1. Динамическая линковка — методы разрешаются во время выполнения, а не компиляции, добавляя небольшие накладные расходы на поиск.
  2. Интерпретация байт-кода во время выполнения — даже с JIT, начальное выполнение байт-кода несёт стоимость конвертации до производства нативного кода.

Современные реализации JVM драматически снизили эти накладные расходы через агрессивную оптимизацию, tiered compilation и аппаратную настройку.

Резюме

java

  1. Что такое ЧПУ? Понимание компьютерного числового управления для современного производства
  2. Java 10: Thread-Local Handshakes для ускорения VM safepoints
  3. Токарная обработка: ключевой процесс прецизионной механической обработки
  4. Архитектурное проектирование: принципы, практика и влияние на среду
  5. Строительные болты (machine bolts): виды, марки прочности, монтаж и крутящий момент
  6. Прядильные станки: от волокна к нити
  7. Автоматы с молоком: удобно, доступно, экологично
  8. Горизонтально-расточные станки: конструкция, работа, применение
  9. Автоматические прессовые станки: принцип работы, преимущества и применение
  10. Обслуживание станков (Machine Tending): преимущества, автоматизация и применение