¿PHP tiene una máquina virtual como Java?¿PHP tiene una máquina virtual como Java?
Respuesta
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).
¿Son sus diferencias conceptuales entre Zend Engine y JVM? –
@Chris Esa pregunta es muy vaga y no me bastan las implementaciones de JVM para siquiera esbozar una respuesta. – Artefacto
Eso es justo. Gracias. –
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.
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
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
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.
- 1. Java "máquina virtual" vs. Python "Interpreter" lenguaje?
- 2. Cómo escribir una máquina virtual
- 3. ¿Cómo funciona una máquina virtual?
- 4. Endianness de la máquina virtual de Java
- 5. ¿Cómo se puede ejecutar una máquina virtual Erlang como Daemon?
- 6. ¿Qué significa tener una máquina virtual Java bifurcada?
- 7. Única máquina virtual
- 8. ¿La máquina virtual Java es realmente una máquina virtual en el mismo sentido que mi archivo VMWare o Parallels?
- 9. Encuesta: ¿compilar servidor en una máquina virtual?
- 10. de código abierto máquina virtual
- 11. No se pudo crear la máquina virtual Java
- 12. Una máquina virtual para C++ para optimizar el rendimiento
- 13. Identificación de CPU en la máquina virtual
- 14. Emulador AS400 o máquina virtual
- 15. Error: No se pudo crear la Máquina Virtual de Java
- 16. no se pudo crear la máquina virtual Java
- 17. Señales de manejo en la máquina virtual Java
- 18. ¿Cómo identificar que se está ejecutando en una máquina virtual?
- 19. ¿Tiene TypeScript una máquina virtual dedicada o solo compilación-a-j?
- 20. Cygwin vs Linux ¿Máquina virtual para desarrollo?
- 21. ¿Tiene Perl algo así como Java/PHP Docs?
- 22. ¿Manera correcta de (re) iniciar una aplicación Java con parámetros de máquina virtual dependientes del hardware?
- 23. Cerrar sesión en una sesión SSH en la máquina virtual Erlang sin detener la máquina virtual ni dejar procesos obsoletos
- 24. ¿Cómo usar una máquina virtual con pruebas automatizadas?
- 25. ¿Usar una máquina virtual dentro de un juego?
- 26. Determine cuándo se ejecuta en una máquina virtual
- 27. KVM api para iniciar la máquina virtual
- 28. Máquina virtual con Mac OS X
- 29. Escribir una máquina virtual - ¿código de bytes bien formado?
- 30. Iniciar un sistema operativo nativo en un disco duro como una máquina virtual
¿PHP tiene una máquina virtual? Claro, puede. Al igual que JVM? Ni siquiera cerca. –
Ahora hay una VM muy similar a la JVM también. Ver: https://github.com/Facebook/hiphop-php/wiki –