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