Есть ли в PHP виртуальная машина, такая как Java?

Есть ли в PHP виртуальная машина, такая как Java?

3 ответа

Решение

Да.

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

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

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

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

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

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

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

Другие вопросы по тегам