2010-08-01 29 views

Respuesta

14

Sí.

Independientemente de la plataforma en la que se ejecuta PHP, los scripts se compilan en el mismo bytecode y son ejecutados por Zend Engine.

La diferencia de Java es que este código compilado generalmente no se almacena en archivos separados y los scripts se vuelven a compilar en cada ejecución (sin embargo, consulte los cachés de códigos de operación).

+1

¿Son sus diferencias conceptuales entre Zend Engine y JVM? –

+1

@Chris Esa pregunta es muy vaga y no me bastan las implementaciones de JVM para siquiera esbozar una respuesta. – Artefacto

+0

Eso es justo. Gracias. –

5

Otra diferencia importante entre el motor Zend y una JVM típica es en la forma en que se ejecutan los códigos de bytes:

  • el motor Zend Ejecuta (interpreta) los bytecodes compilados directamente. (Al menos eso es lo que creo que sucede. ¡No pude confirmar esto en la documentación en línea de Zend!)
  • Una JVM normalmente usará un compilador JIT para compilar bytecodes con instrucciones nativas y luego ejecutar las instrucciones nativas.

En realidad, el comportamiento de JVM es más complicado que esto. Las JVM no siempre se compilan con el código nativo, y cuando lo hacen, normalmente retrasan la compilación de JIT hasta que creen que vale la pena hacerlo. Antes de eso, ejecutan los bytecodes directamente.

+2

Al mirar el código fuente de Zend se muestra que de hecho interpreta el bytecode directamente, en lugar de convertirlo a nativo. Y el código tampoco es bonito ... – siride

+1

Tuve muchos momentos de "qué bleep" al pasar por el código fuente de php pero, francamente, los elementos vm del motor Zend no están entre esos. En comparación con otros idiomas ... bueno, la mayoría de ellos son así. – VolkerK

0

Sí, pero solo recientemente se parece bastante a la JVM para Java. Fue inventado por Facebook y anunciado en la conferencia OSCON la otra semana (julio de 2013).

Un informe de noticias sobre la nueva máquina virtual de PHP se puede leer here, y el código y más información se pueden encontrar en github.

Cuestiones relacionadas