是的。 与 PHP 运行在的平台无关,脚本被编译为相同的字节码并由 Zend 引擎运行。 与 Java 不同之处在于,这些编译好的代码通常不会被存储为单独的文件,在每次执行时重新编译脚本(但参见 opcode 缓存)。
Zend引擎和典型JVM之间的另一个重要区别在于它们执行字节码的方式:- Zend引擎直接执行(解释)编译后的字节码。(至少我认为是这样。我无法从Zend在线文档中确认!) - JVM通常使用JIT编译器将字节码编译为本地指令,然后执行本地指令。实际上,JVM的行为比这更复杂。JVM并不总是编译为本地代码,而且当它们这样做时,它们通常会延迟JIT编译,直到它们认为值得这样做。在此之前,它们直接执行字节码。
是的,但直到最近才像 Java 的 JVM 一样。它是由 Facebook 发明,并于 OSCON 大会上宣布(2013 年 7 月)。 有关新 PHP VM 的新闻报道可以在这里阅读,代码和更多信息可以在github上找到。