Я думал, что всегда понимал, почему Java был переносимым, пока я не взял компьютерную организацию.Как работает JVM с учетом компьютерной организации?
Это моя интерпретация программы C от начала до конца:
программа C -> компилятор -> сборка -> машина код -> ISA -> микро архитектура (как компьютер интерпретирует ISA) -> логический вентиль -> схема -> устройство
Где компилятор должен знать об ISA. Кроме того, код сборки и машины будет меняться в зависимости от ISA.
Java как таковые: (внутри JVM): программа Java -> компилятор -> байткод
байткод является ISA для виртуальной машины Java.
Итак, я предполагаю, что JVM также имеет собственную микроструктуру для интерпретации ее ISA (байт-код).
Является ли это точным?
Таким образом, общий цикл будет: (внутри JVM) программы Java -> байткод (ISA) -> JVM микроархитектура -> хост-аппаратные
Кроме того, если микро архитектура реализована в процессор, нужно ли JVM использовать один из процессоров хостов?
Но не сборка и машинный язык варьироваться в зависимости от машины на основе ISA? – jinan
@jinan Да, и JVM тоже. Существуют разные реализации JVM для разных аппаратных средств/ОС, и каждый переводится на соответствующий родной язык платформы. – manouti