WEB開発市場では現在JavaとPHPが人気のテクノロジーです。 Java の威力は、WEB 開発だけでなく、さまざまなソフトウェア アプリケーションの分野でも広く普及しています。 PHP も、オープンソースと ZEND、IBM、Oracle などの企業の力によってますます繁栄しています。 「PHP は Java よりも普及するだろう」というインターネットの先駆者 Marc Andreessen の予測を必ずしも信じる人はいないかもしれませんが、「PHP はエンタープライズ市場を目指し、Java と真っ向から競争する」という技術は実際に 2,200 万の Web サイトで使用されています。世界中で人々は注意を払わなければなりません。
2 つのテクノロジーは激しく競合することも、緊密に連携することもできます。顧客の観点から見ると、巨大なアプリケーション システムは通常、単一の言語/テクノロジだけでは独立して完成させることができないため、テクノロジの統合は非常に重要です。 PHP/Java Bridge の登場は PHP と Java の間の架け橋となり、PHP と Java を組み合わせる必要がある企業に良い選択肢を提供します。
//Haohappy は J2EE について深く理解していません。関連する内容に誤解がある場合は、批判やアドバイスを歓迎します。
(1) JSR、JSR223とは何ですか?
JSR (Java Specific Request) は、JCP (Java Community Process) に対する標準化された技術仕様の追加を求める正式なリクエストです。誰でも JSR (Java 仕様リクエスト) を送信して、新しい API やサービスを Java プラットフォームに追加できます。 JSR は Java の世界では重要な標準となっています。
Java サーブレット仕様 (サーブレット 2.4、JSR-154) では、Java プログラマーがセッション、リクエスト、返答など。プログラマがプログラムを作成するとき、これらのオブジェクトと簡単かつ安全に通信できます。 JSR223 では、これらの Java オブジェクトを他のスクリプト言語で書かれた WEB ページで開く方法を説明し、他の言語でもこれらのオブジェクトにアクセスできるようにします。現在、この仕様は PHP に使用されますが、この概念はスクリプト言語に依存しないため、将来的には PHP に加えて他のスクリプト言語にも適用される可能性があります。一言で言えば、JSR223 の目的は、スクリプト言語を Java プラットフォームに統合することです。
(2) PHP/Java Bridgeとは
PHP/Java Bridge には、PHP モジュール (java.so、php_java.dll を含む) と、PHP のオブジェクト システムを Java に接続するために使用される関連バックエンド プログラム (JavaBridge.jar、JavaBridge.war または MonoBridge.exe) が含まれています。または ECMA 335 (CLI、Microsoft .NET Framework の重要なサブセット) 仮想マシン。 JSR 223 仕様リクエストを完全に実装し、PHP スクリプトが CLR (VB.NET、C# など) または Java (Java、KAWA、JRuby) に基づくアプリケーションにアクセスできるようにします。 PHP/Java Bridge は、効率的な通信プロトコルを使用して、ローカル ソケットを通じて仮想マシンと通信します。マルチプロセス HTTP サーバーには、リクエストを処理する各 PHP プロセスに対応する仮想マシン プロセスがあります。
複数のHTTPサーバーからのリクエストは、PHP/Java Bridgeを実行しているアプリケーションサーバーに集中的に送信されるか、各HTTPサーバーがPHP/Java Bridgeを持ち、必要なクライアントクラスライブラリ(ejb client.jar)と通信します。実行時にロードされます。
Novell の MONO や Microsoft の .NET など、ECMA 仮想マシンで実行されているバックエンド プログラムが少なくとも 1 つある場合、ECMA 335 に基づくクラスにアクセスでき、可変引数、リフレクション、アセンブリの読み込みなどの機能もサポートできます。
J2EE環境で動作するバックエンドプログラムがあれば、PHPとJSPの間でセッション共有が実現でき、クラスタリングや負荷分散が実現できます。
これまでの試み(ext/java や JSR223 の例)とは異なり、PHP/Java Bridge は JNI (Java Native Interface) を使用しなくなりました。 PHP オブジェクトは HTTP (Apache/IIS) プールから取得され、Java/J2EE オブジェクトはバックエンド プログラムから割り当てられます。オブジェクトは「継続受け渡しスタイル」を通じて通信します。以下の java_closure() を参照してください。 PHP オブジェクトがクラッシュしても、Java アプリケーション サーバーとサーブレット エンジンは影響を受けません。
PHP/Java Bridge バージョン 3.0 以降では、PHP スクリプトの実行環境として Java を使用することもできます。 Java コードは、外部または内部の Java プールを通じて PHP スクリプトを配布し、呼び出すことができます。スクリプト オブジェクトは、外部 HTTP プール、内部 php FastCGI プールから取得することも、php CGI を直接使用することもできます。この機能には、Java 6 (2006 年前半にリリース予定) または外部 javax.script パッケージが必要です。