JPHP: una implementación de PHP
JPHP es una nueva implementación para PHP que utiliza Java VM. Admite muchas funciones del lenguaje PHP (7.1+).
¿Cómo funciona? JPHP es un compilador como javac
, compila fuentes php en código de bytes JVM y luego puede ejecutar el resultado en Java VM.
- Sitio oficial: jphp.develnext.org
- Impresionante JHP
En producción
Desarrollamos un nuevo IDE para principiantes como Game Maker
o Scirra Construct
. Está basado en JPHP, JavaFX, Java 8, Gradle y permite crear juegos y aplicaciones de escritorio para Linux, Windows y Mac (tal vez Android y otras plataformas en el futuro). El nombre del proyecto es DevelNext
(https://github.com/jphp-group/develnext-ide), el estado actual y la versión del proyecto es BETA. El proyecto aún no ha sido traducido al inglés.
Objetivos
JPHP no reemplaza el motor Zend PHP ni el HHVM de Facebook. No planeamos implementar las bibliotecas de tiempo de ejecución de Zend (por ejemplo, Curl, PRCE, etc.) para JPHP.
Nuestro proyecto comenzó en octubre de 2013. Hubo algunas razones para ello:
- Posibilidad de utilizar bibliotecas java en PHP (extensiones propias + otras)
- Reemplazar la fea biblioteca de tiempo de ejecución de Zend PHP con una mejor biblioteca de tiempo de ejecución.
- Usando el lenguaje PHP no sólo en la web
- Multiproceso como en Java y C#.
- Cadenas Unicode (soporte total para UTF-8, UTF-16).
- Creación de aplicaciones GUI para Android y escritorio en lenguaje PHP.
Características
- PHP 7.1+ (y muchas funciones de lenguaje de PHP 7.2, 7.3, 7.4).
- JIT (~2,5 veces más rápido PHP 5.6, ~1,1 veces más rápido PHP 7.0, ~13% más lento que PHP 7.4, banco).
- Uso de bibliotecas y clases de Java en código PHP.
- Unicode para cadenas (UTF-16, como en Java)
- Subprocesamiento, sockets, arquitectura ambiental (como objetos sandbox en la extensión runkit zend).
- GUI (JavaFX o SWT)
- Sistema de caché integrado para clases y funciones.
- Recarga en caliente opcional para clases y funciones.
- Capacidad de uso en el sistema operativo Android : jphp-android
¿Qué admite JPHP desde PHP 7.2?
- Todas las funciones excepto RFC: Ampliación del tipo de parámetro
¿Qué admite JPHP desde PHP 7.3?
- Todas las funciones excepto RFC: sintaxis flexibles de Heredoc y Nowdoc
¿Qué admite JPHP desde PHP 7.4?
- Propiedades escritas 2.0 (en parte, las referencias no son compatibles)
- Referencias débiles
- Arrow Functions 2.0 (+ sintaxis de varias líneas)
- Permitir lanzar excepciones desde __toString()
- Operador de asignación coalescente nula
- separador_literal_numérico
- Operador de extensión en expresión de matriz
Extensiones propias
- Biblioteca estándar: biblioteca estándar de tiempo de ejecución propia
- Servidor Http (+Sockets Web +Multihilo)
- GUI (JavaFX o SWT)
- Git (basado en JGit)
- JSoup: para analizar HTML en estilo jQuery.
- SQL (compatible con MySQL, PostgreSQL, SQLite, Firebird).
- SSH: para trabajar con el protocolo ssh.
- Yaml: para analizar y formatear yaml.
- Comprimir: para trabajar con archivos tar, gz, bz2, lz4, zip.
- HttpClient: cliente http con promesas.
- SemVer: para analizar versiones en el estándar SemVer.
- Correo: para enviar correos electrónicos a través de servidores SMTP.
- MongoDB: un controlador para Mongo DB 3.0+.
Documentación
- Puede encontrar la documentación de API más reciente aquí: jphp-runtime/api-docs
- Wiki aquí: leer
Empezando (Hola mundo)
- Instale el administrador de paquetes jphp (jppm), cómo instalarlo.
- Inicie un nuevo proyecto (paquete jppm) con los valores predeterminados:
- Ejecute en la consola
jppm start
.
Verás Hello World
en tu consola, las fuentes de este programa estarán en src/index.php
.
- (Opcional) Para actualizar la versión jphp de su proyecto anterior:
¿Cómo ejecutar puntos de referencia?
// via jphp
./gradlew bench
// via php
php -f bench/src/bench.php
Cree INSTANTÁNEA a partir de fuentes
Utilice gradle install
para compilar e instalar los módulos y bibliotecas jphp en el repositorio local de mavel. Después de esto, puedes usar jphp en tus proyectos como una dependencia de Maven.
org.develnext.jphp:jphp-<module>:<version>-SNAPSHOT