JPHP – eine Implementierung von PHP
JPHP ist eine neue Implementierung für PHP, die die Java VM nutzt. Es unterstützt viele Funktionen der PHP-Sprache (7.1+).
Wie funktioniert es? JPHP ist ein Compiler wie javac
, er kompiliert PHP-Quellen in JVM-Bytecode und kann das Ergebnis dann auf der Java VM ausführen.
- Offizielle Seite: jphp.develnext.org
- Tolles JPHP
In Produktion
Wir entwickeln eine neue IDE für Einsteiger wie Game Maker
oder Scirra Construct
. Es basiert auf JPHP, JavaFX, Java 8, Gradle und ermöglicht die Erstellung von Desktop-Spielen und Apps für Linux, Windows und Mac (in Zukunft möglicherweise auch für Android und andere Plattformen). Der Projektname ist DevelNext
(https://github.com/jphp-group/develnext-ide), der aktuelle Status und die Version des Projekts ist BETA. Das Projekt wurde noch nicht auf Englisch lokalisiert.
Ziele
JPHP ist kein Ersatz für die Zend PHP-Engine oder Facebook HHVM. Wir planen nicht, die Zend-Laufzeitbibliotheken (z. B. Curl, PRCE usw.) für JPHP zu implementieren.
Unser Projekt startete im Oktober 2013. Dafür gab es mehrere Gründe:
- Möglichkeit zur Verwendung von Java-Bibliotheken in PHP (eigene Erweiterungen + andere)
- Ersetzen der hässlichen Laufzeitbibliothek von Zend PHP durch eine bessere Laufzeitbibliothek.
- Verwendung der PHP-Sprache nicht nur im Web
- Multithreading wie in Java und C#.
- Unicode-Strings (Vollständige Unterstützung für UTF-8, UTF-16).
- Erstellen von GUI-Android- und Desktop-Anwendungen in der PHP-Sprache.
Merkmale
- PHP 7.1+ (und viele Sprachfunktionen von PHP 7.2, 7.3, 7.4).
- JIT (~2,5x schnelleres PHP 5.6, ~1,1x schnelleres PHP 7.0, ~13% langsamer als PHP 7.4, Bench).
- Verwendung von Java-Bibliotheken und -Klassen im PHP-Code.
- Unicode für Strings (UTF-16, wie in Java)
- Threading, Sockets, Umgebungsarchitektur (wie Sandbox-Objekte in der Runkit-Zend-Erweiterung).
- GUI (JavaFX oder SWT)
- Eingebettetes Cache-System für Klassen und Funktionen
- Optionales Hot Reloading für Klassen und Funktionen
- Möglichkeit zur Verwendung unter Android- Betriebssystem: jphp-android
Was unterstützt JPHP ab PHP 7.2?
- Alle Funktionen außer RFC: Parameter Type Widening
Was unterstützt JPHP ab PHP 7.3?
- Alle Funktionen außer RFC: Flexible Heredoc- und Nowdoc-Syntaxen
Was unterstützt JPHP ab PHP 7.4?
- Typed Properties 2.0 (teilweise werden Referenzen nicht unterstützt)
- Schwache Referenzen
- Pfeilfunktionen 2.0 (+ mehrzeilige Syntax)
- Auslösen von Ausnahmen von __toString() zulassen
- Null-Koaleszenz-Zuweisungsoperator
- numeric_literal_separator
- Spread-Operator im Array-Ausdruck
Eigene Erweiterungen
- Standardbibliothek – eigene Laufzeitstandardbibliothek
- HTTP-Server (+Web Sockets +Multithread)
- GUI (JavaFX oder SWT)
- Git (basierend auf JGit)
- JSoup – zum Parsen von HTML im jQuery-Stil.
- SQL (unterstützt MySQL, PostgreSQL, SQLite, Firebird).
- SSH – zum Arbeiten mit dem SSH-Protokoll.
- Yaml – zum Parsen und Formatieren von Yaml.
- Komprimieren – zum Arbeiten mit tar-, gz-, bz2-, lz4- und zip-Archiven.
- HttpClient – HTTP-Client mit Versprechen.
- SemVer – zum Parsen von Versionen im SemVer-Standard.
- Mail – zum Versenden von E-Mails über SMTP-Server.
- MongoDB – ein Treiber für Mongo DB 3.0+.
Dokumentation
- Die neueste API-Dokumentation finden Sie hier: jphp-runtime/api-docs
- Wiki hier: lesen
Erste Schritte (Hallo Welt)
- Installieren Sie den Jphp-Paketmanager (jppm), wie Sie ihn installieren.
- Neues Projekt (jppm-Paket) mit Standardwerten initiieren:
- Führen Sie
jppm start
in der Konsole aus.
In Ihrer Konsole wird Hello World
angezeigt. Die Quellen dieses Programms befinden sich in src/index.php
.
- (Optional) So aktualisieren Sie die Jphp-Version Ihres alten Projekts:
Wie führt man Benchmarks durch?
// via jphp
./gradlew bench
// via php
php -f bench/src/bench.php
Erstellen Sie SNAPSHOT aus Quellen
Verwenden Sie gradle install
um die Jphp-Module und -Bibliotheken im lokalen Mavel-Repository zu erstellen und zu installieren. Danach können Sie jphp in Ihren Projekten als Maven-Abhängigkeit verwenden.
org.develnext.jphp:jphp-<module>:<version>-SNAPSHOT