JPHP - PHP の実装
JPHP は、Java VM を使用する PHP の新しい実装です。 PHP 言語 (7.1 以降) の多くの機能をサポートしています。
どのように機能するのでしょうか? JPHP はjavac
のようなコンパイラで、php ソースを JVM バイトコードにコンパイルし、その結果を Java VM 上で実行できます。
- 公式サイト: jphp.develnext.org
- 素晴らしいJPHP
本番環境中
Game Maker
やScirra Construct
などの初心者向けの新しい IDE を開発します。 JPHP、JavaFX、Java 8、Gradle をベースにしており、Linux、Windows、Mac (将来的には Android やその他のプラットフォームにも対応する可能性があります) 用のデスクトップ ゲームやアプリを作成できます。プロジェクト名はDevelNext
(https://github.com/jphp-group/develnext-ide)、プロジェクトの現在のステータスとバージョンは BETA です。このプロジェクトはまだ英語にローカライズされていません。
目標
JPHP は、Zend PHP エンジンや Facebook HHVM に代わるものではありません。 JPHP 用の zend ランタイム ライブラリ (Curl、PRCE など) を実装する予定はありません。
私たちのプロジェクトは 2013 年 10 月に始まりました。それにはいくつかの理由がありました。
- PHP で Java ライブラリを使用する機能 (独自の拡張機能 + その他)
- Zend PHP の醜いランタイム ライブラリをより優れたランタイム ライブラリに置き換えます。
- Web だけでなく PHP 言語を使用する
- Java や C# のようなマルチスレッド。
- Unicode 文字列 (UTF-8、UTF-16 の完全サポート)。
- PHP言語でGUI Androidおよびデスクトップアプリケーションを作成します。
特徴
- PHP 7.1 以降 (および PHP 7.2、7.3、7.4 の多くの言語機能)。
- JIT (PHP 5.6 より約 2.5 倍高速、PHP 7.0 より約 1.1 倍高速、PHP 7.4 より約 13% 遅い、ベンチ)。
- PHP コードでの Java ライブラリとクラスの使用。
- 文字列の Unicode (Java のような UTF-16)
- スレッド、ソケット、環境アーキテクチャ (runkit zend 拡張機能のサンドボックス オブジェクトなど)。
- GUI (JavaFX または SWT)
- クラスと関数の組み込みキャッシュ システム
- クラスと関数のオプションのホットリロード
- Android OSで使用できる機能: jphp-android
JPHP は PHP 7.2 から何をサポートしていますか?
- RFC を除くすべての機能: パラメータ タイプの拡張
JPHP は PHP 7.3 以降何をサポートしていますか?
- RFC を除くすべての機能: 柔軟な Heredoc および Nowdoc 構文
JPHP は PHP 7.4 以降何をサポートしていますか?
- Typed Properties 2.0 (一部、参照はサポートされていません)
- 弱い参照
- アロー関数 2.0 (+ 複数行構文)
- __toString() からの例外のスローを許可する
- Null合体代入演算子
- numeric_literal_separator
- 配列式のスプレッド演算子
独自の拡張機能
- 標準ライブラリ - 独自のランタイム標準ライブラリ
- HTTP サーバー (+Web ソケット +マルチスレッド)
- GUI (JavaFX または SWT)
- Git (JGit に基づく)
- JSoup - jQuery スタイルで HTML を解析します。
- SQL (MySQL、PostgreSQL、SQLite、Firebird をサポート)。
- SSH - ssh プロトコルを使用します。
- Yaml - yaml の解析とフォーマット用。
- 圧縮 - tar、gz、bz2、lz4、zip アーカイブを操作します。
- HttpClient - Promise を備えた http クライアント。
- SemVer - SemVer 標準のバージョンを解析します。
- メール - SMTP サーバー経由で電子メールを送信します。
- MongoDB - Mongo DB 3.0+ のドライバー。
ドキュメント
- 最新の API ドキュメントはここで見つけることができます: jphp-runtime/api-docs
- Wikiはこちら:読む
はじめに (Hello World)
- jphpパッケージマネージャー(jppm)のインストール、インストール方法。
- 新しいプロジェクト (jppm パッケージ) をデフォルト値で初期化します。
- コンソールで
jppm start
実行します。
コンソールにHello World
が表示されます。このプログラムのソースはsrc/index.php
にあります。
- (オプション) 古いプロジェクトの jphp バージョンを更新するには、次の手順を実行します。
ベンチマークを実行するにはどうすればよいですか?
// via jphp
./gradlew bench
// via php
php -f bench/src/bench.php
ソースからスナップショットを構築する
gradle install
使用して、jphp モジュールとライブラリをビルドし、mavel ローカル リポジトリにインストールします。この後、プロジェクトで jphp を Maven の依存関係として使用できるようになります。
org.develnext.jphp:jphp-<module>:<version>-SNAPSHOT