PHP と Java の接続 -- PHP/Java Bridge [1]

WBOY
リリース: 2016-06-21 09:00:01
オリジナル
1446 人が閲覧しました

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 プログラマーが WEB プログラムを作成できるようにするために、一連の中核となる抽象概念 (WEB プログラムの処理中に考慮する必要があるさまざまなオブジェクト) が定義されています。セッション、リクエスト、レスポンスなどが含まれます。プログラマがプログラムを作成するとき、これらのオブジェクトと簡単かつ安全に通信できます。 JSR223 では、これらの Java オブジェクトを他のスクリプト言語で書かれた WEB ページで開く方法を説明し、他の言語でもこれらのオブジェクトにアクセスできるようにします。現在、この仕様は PHP に使用されますが、この概念はスクリプト言語に依存しないため、将来的には PHP に加えて他のスクリプト言語にも適用される可能性があります。一言で言えば、JSR223 の目的は、スクリプト言語を Java プラットフォームに統合することです。

(2) PHP/Java Bridge とは?

PHP/Java Bridge には、PHP モジュール (java.so、php_java.dll を含む) と関連するバックエンド プログラム (JavaBridge.jar、JavaBridge.war または MonoBridge.exe) は、PHP のオブジェクト システムを Java または 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 があり、J2EE アプリケーション サーバーと通信します。 必須 クライアント クラス ライブラリ (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 パッケージが必要です。



関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のおすすめ
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート