2016-02-18 12 views
3

Я думал, что всегда понимал, почему Java был переносимым, пока я не взял компьютерную организацию.Как работает JVM с учетом компьютерной организации?

Это моя интерпретация программы C от начала до конца:

программа C -> компилятор -> сборка -> машина код -> ISA -> микро архитектура (как компьютер интерпретирует ISA) -> логический вентиль -> схема -> устройство

Где компилятор должен знать об ISA. Кроме того, код сборки и машины будет меняться в зависимости от ISA.

Java как таковые: (внутри JVM): программа Java -> компилятор -> байткод

байткод является ISA для виртуальной машины Java.

Итак, я предполагаю, что JVM также имеет собственную микроструктуру для интерпретации ее ISA (байт-код).

Является ли это точным?

Таким образом, общий цикл будет: (внутри JVM) программы Java -> байткод (ISA) -> JVM микроархитектура -> хост-аппаратные

Кроме того, если микро архитектура реализована в процессор, нужно ли JVM использовать один из процессоров хостов?

ответ

2

Это больше похоже (после вашего иерархического для C):

Java program --> Java compiler --> bytecode --> JVM compiler --> assembly 
--> machine code --> ISA --> micro architecture (how the computer interprets ISA) 
--> logic gate --> circuit --> device 

Обратите внимание, что есть по существу два компиляторы. Именно так Java достигает мобильности.

+0

Но не сборка и машинный язык варьироваться в зависимости от машины на основе ISA? – jinan

+2

@jinan Да, и JVM тоже. Существуют разные реализации JVM для разных аппаратных средств/ОС, и каждый переводится на соответствующий родной язык платформы. – manouti

0

Во-первых, java-компилятор компилирует исходный код в байтовый код. Во время выполнения Java Virtual Machine (JVM) интерпретирует этот байтовый код и генерирует машинный код, который будет выполняться непосредственно машиной, в которой запускается Java-программа.

Посетите хороший учебник виртуальной машины Java, JRE и JDK https://javatutorialdetails.blogspot.com/2017/10/java-tutorial-in-details-step-by-step.html

 Смежные вопросы

  • Нет связанных вопросов^_^