Когда Java делает платформу независимой, внедряя JVM, почему невозможно сделать платформу C / C ++ независимой, вводя нечто похожее на JVM?
Java не зависит от платформы, но JVM нет, JVM зависит от платформы
Мы должны разработать компиляторы и интерпретаторы, чтобы достичь чего-то вроде JVM.
C и C ++ являются компиляторами, которые переводят код в двоичный код. В результате они зависят от платформы, потому что разные платформы используют разные двоичные наборы инструкций. Если две платформы используют один и тот же язык ассемблера, но разные двоичные представления, то указание компилятору выводить язык ассемблера позволит платформам собрать результаты в их отдельный двоичный файл. JVM похож на язык ассемблера, который распознается различными платформами. Каждая платформа интерпретирует JVM по-своему и со своим собственным двоичным файлом.
a = b + c
mov a, R1
mov b, r2
add r1, r2 (putting results in r2)
st r2, c
Двоичное представление этого может быть различным для разных платформ, но a = b + c является «машинно-независимым»
Если бы вы написали независимое от платформы описание C и заставили бы всех производителей платформы принять его, то C также будет «независимым от платформы».