JPHP - une implémentation de PHP
JPHP est une nouvelle implémentation pour PHP qui utilise la VM Java. Il prend en charge de nombreuses fonctionnalités du langage PHP (7.1+).
Comment ça marche ? JPHP est un compilateur comme javac
, il compile les sources php en bytecode JVM et peut ensuite exécuter le résultat sur la VM Java.
- Site officiel : jphp.develnext.org
- Génial JPHP
En production
Nous développons un nouvel IDE pour les débutants comme Game Maker
ou Scirra Construct
. Il est basé sur JPHP, JavaFX, Java 8, Gradle et permet de créer des jeux et des applications de bureau pour Linux, Windows et Mac (peut-être Android et d'autres plateformes à l'avenir). Le nom du projet est DevelNext
(https://github.com/jphp-group/develnext-ide), le statut et la version actuels du projet sont BETA. Le projet n'a pas encore été localisé en anglais.
Objectifs
JPHP ne remplace pas le moteur Zend PHP ou Facebook HHVM. Nous ne prévoyons pas d'implémenter les bibliothèques d'exécution Zend (par exemple Curl, PRCE, etc.) pour JPHP.
Notre projet a démarré en octobre 2013. Il y a plusieurs raisons à cela :
- Capacité à utiliser les bibliothèques Java en PHP (propres extensions + autres)
- Remplacement de la vilaine bibliothèque d'exécution de Zend PHP par une meilleure bibliothèque d'exécution.
- Utiliser le langage PHP pas seulement sur le web
- Multithreading comme en Java et C#.
- Chaînes Unicode (prise en charge complète de UTF-8, UTF-16).
- Création d'applications GUI Android & Desktop en langage PHP.
Caractéristiques
- PHP 7.1+ (et de nombreuses fonctionnalités linguistiques de PHP 7.2, 7.3, 7.4).
- JIT (PHP 5.6 ~ 2,5 fois plus rapide, PHP 7.0 ~ 1,1 fois plus rapide, ~ 13 % plus lent que PHP 7.4, banc).
- Utilisation des bibliothèques et classes Java dans le code PHP.
- Unicode pour les chaînes (UTF-16, comme en Java)
- Threading, Sockets, Architecture d'environnement (comme les objets sandbox dans l'extension runkit zend).
- Interface graphique (JavaFX ou SWT)
- Système de cache intégré pour les classes et fonctions
- Rechargement à chaud en option pour les classes et les fonctions
- Possibilité d'utilisation sur OS Android : jphp-android
Qu'est-ce que JPHP prend en charge à partir de PHP 7.2 ?
- Toutes les fonctionnalités sauf RFC : élargissement du type de paramètre
Qu'est-ce que JPHP prend en charge à partir de PHP 7.3 ?
- Toutes les fonctionnalités sauf RFC : syntaxes flexibles Heredoc et Nowdoc
Qu'est-ce que JPHP prend en charge à partir de PHP 7.4 ?
- Propriétés typées 2.0 (en partie, les références ne sont pas prises en charge)
- Faibles références
- Arrow Functions 2.0 (+ syntaxe sur plusieurs lignes)
- Autoriser la levée d'exceptions depuis __toString()
- Opérateur d'affectation de fusion nulle
- numérique_literal_separator
- Opérateur de propagation dans l'expression de tableau
Propres extensions
- Bibliothèque standard - propre bibliothèque standard d'exécution
- Serveur HTTP (+ Web Sockets + Multithread)
- Interface graphique (JavaFX ou SWT)
- Git (basé sur JGit)
- JSoup - pour analyser le HTML dans le style jQuery.
- SQL (prend en charge MySQL, PostgreSQL, SQLite, Firebird).
- SSH - pour travailler avec le protocole ssh.
- Yaml - pour analyser et formater yaml.
- Compresser - pour travailler avec des archives tar, gz, bz2, lz4, zip.
- HttpClient - client http avec promesses.
- SemVer - pour analyser les versions dans la norme SemVer.
- Mail - pour envoyer des e-mails via des serveurs SMTP.
- MongoDB - un pilote pour Mongo DB 3.0+.
Documentation
- Vous pouvez trouver la dernière documentation de l'API ici : jphp-runtime/api-docs
- Wiki ici : lire
Pour commencer (Hello World)
- Installez le gestionnaire de packages jphp (jppm), comment l'installer.
- Initier un nouveau projet (package jppm) avec les valeurs par défaut :
- Exécutez dans la console
jppm start
.
Vous verrez Hello World
dans votre console, les sources de ce programme seront dans src/index.php
.
- (Facultatif) Pour mettre à jour la version jphp de votre ancien projet :
Comment réaliser des benchmarks ?
// via jphp
./gradlew bench
// via php
php -f bench/src/bench.php
Construire SNAPSHOT à partir de sources
Utilisez gradle install
pour créer et installer les modules et bibliothèques jphp dans le référentiel local mavel. Après cela, vous pouvez utiliser jphp dans vos projets en tant que dépendance maven.
org.develnext.jphp:jphp-<module>:<version>-SNAPSHOT