Есть ли у PHP виртуальная машина, например Java?
Да.
Независимо от платформы PHP работает, скрипты скомпилированы в один и тот же байт-код и запускаются Zend Engine.
Разница с Java заключается в том, что этот скомпилированный код обычно не сохраняется в отдельных файлах, и скрипты перекомпилируются при каждом выполнении (однако, см. Кеши опкода).
Еще одно важное отличие между Zend Engine и типичной JVM заключается в том, как они выполняют байт-коды:
На самом деле поведение JVM более сложное, чем это. JVM не всегда компилируются в собственный код, и когда они это делают, они обычно задерживают компиляцию JIT, пока не считают, что это стоит того. До этого они запускают байткоды напрямую.
Да, но совсем недавно это похоже на JVM для Java. Он был изобретен facebook и анонсирован на конференции OSCON на другой неделе (июль 2013 г.).
Здесь можно прочитать новостной отчет о новой виртуальной машине PHP, а код и дополнительную информацию можно найти в github .