Здравствуйте, Pavel Dvorkin, Вы писали:
PD> H>Неверно. За рамки VM, ни компилятор, ни программист выйти не могут (то есть ни о каком контроле не может идти речи). И именно благодаря этому, исполняемый код является переносимым вне зависимости от платформы на которой работает VM.
PD> JNI есть выход за рамки VM или нет ?
JNI это послабление конкретной реализации VM и не более. Мы же говорим не о частных случаях, а о идеологии вообще.
PD> А вот за рамки x86/x64 asm мне нействительно не выйти.
По твоему получается, что исполняемым считается только тот код, который соответствует целевому CPU. То есть, в приложении работающем под JVM код исполняемым не считается, а при запуске того же приложения на java-процессоре уже считается? Это же абсурд
PD> H>У процессоров и VM есть система команд, и говорим мы о ней, и ни о чем другом.
PD> Спор, похоже, пора заканчивать. В сущнсти, у нас просто разные подходы. Если считать VM специализированным процессором, то ты прав. Если вспомнить, что она сама процесс ОС, то прав я. Так что вопрос, в сущности, об уровне, ниже которого выйти нельзя при определении этой самой бинарной совместимости. Я предлагаю уровень, самый верхний после аппаратуры, он же самый нижний программируемый. Ты берешь следующий программируемый уровень. Вот и все.
VM это и есть специализированный процессор (
wiki):
A virtual machine (VM) is a simulation of a machine (abstract or real) that is usually different from the target machine (where it is being simulated on). Virtual machines may be based on specifications of a hypothetical computer or emulate the computer architecture and functions of a real world computer.