Есть ли в PHP виртуальная машина, такая как Java? - PullRequest
12 голосов
/ 01 августа 2010

Есть ли в PHP виртуальная машина, подобная Java?

Ответы [ 3 ]

15 голосов
/ 01 августа 2010

Да.

Независимо от платформы, на которой работает PHP, сценарии компилируются в один и тот же байт-код и запускаются Zend Engine.

Отличие от Java в том, что этот скомпилированный кодобычно не хранится в отдельных файлах, и сценарии перекомпилируются при каждом выполнении (однако, см. кэши кода операции).

5 голосов
/ 01 августа 2010

Другое важное различие между Zend Engine и типичной JVM заключается в том, как они выполняют байт-коды:

  • Zend Engine выполняет (интерпретирует) скомпилированные байт-коды напрямую.(По крайней мере, так я думаю. Я не смог подтвердить это из онлайн-документации Zend!)
  • JVM обычно использует JIT-компилятор для компиляции байт-кодов в собственные инструкции, а затем выполняет собственныеинструкции.

На самом деле поведение JVM более сложное, чем это.JVM не всегда компилируются в собственный код, и когда они это делают, они обычно откладывают JIT-компиляцию, пока не решат, что это стоит делать.До этого они исполняют байт-коды напрямую.

0 голосов
/ 30 июля 2013

Да, но только недавно это стало похоже на JVM для Java.Он был изобретен Facebook и анонсирован на конференции OSCON на другой неделе (июль 2013 года).

Новостной отчет о новой PHP VM можно прочитать здесь , а также код и дополнительную информацию.можно найти на github .

...