JVM в основном имитирует процессор для Java-программы. Так же, как процессор выполняет собранные операционные коды изначально на аппаратном обеспечении, JVM выполняет Java-коды операций, но строго в программном обеспечении.
Что это значит? это байт-коды ISA для JVM и JVM в свою очередь поддерживают ISA процессоров.
ISA (архитектура набора инструкций) определяет весь набор дисциплин и методов, которые применяются для написания низкоуровневого программного обеспечения, которое выполняется непосредственно на CPU. Он включает в себя набор кодов операций, которые представляют собой несвязанные прямые команды ЦП. JVM распознает собственный набор байт-кодов (т. Е. 8-битные коды операций), которые направляют JVM для выполнения инструкций-примитивов-интерпретаторов. Итак, да, спецификация байт-кода составляет часть ISA JVM.
JVM выполняет итерацию по списку операций, выполняющих их по одному, используя свою собственную память для эмуляции аппаратных компонентов (например, стека, регистрации, основной памяти) и использования примитивных арифметических и логических операций для эмуляции ALU. Эти эмулируемые компоненты также составляют ISA JVM. Это основная конструкция любого переводчика, дайте или возьмите. Однако для улучшения времени выполнения Java-приложений JVM собирает «горячие точки» для машинного кода для оптимальной производительности. Горячие точки - это разделы кода, которые часто выполняются. Это называется компиляцией «Just-In-Time» и может выполняться во время выполнения программы. Этот метод повышает производительность Java намного ближе к производительности скомпилированных языков. JIT также используется в платформе .NET.
Каждая операционная система имеет собственную реализацию JVM, которая также может варьироваться в зависимости от ISA устройства. Например, у вас может быть JVM, написанная для Linux-Arm, Linux-x86 или Windows-x86. Сам JVM может быть написан на независимом от платформы (как бы в любом случае) языке, таком как C, но его компилятор JIT должен поддерживать компиляцию в наборе инструкций устройства.
+1 для выбора диаграммы. –
Я не буду размещать «Java API» под компонентами JVM, так как большинство Java-API реализовано на Java и проходит через ту же цепочку, что и код приложения. – Holger