それぞれの分野で王者である 2 つの言語 (JAVA/PHP)、異なる言語、異なるメカニズムが組み合わされていることを確認します、PHP はビジネス レイヤーとデータ ロジック レイヤー はまさに黄金の組み合わせです (Java PHP 統合 = 新しいハイブリッドの最愛の人 )。それぞれの利点があり、B/S エンタープライズ プログラムの開発に適しています。
#1、技術的な問題
2 つの異なる環境、言語のさまざまなメカニズムの組み合わせで、最初に解決すべきことは、どのようにコミュニケーションをとるかということです。 2つ目は、コミュニケーションの内容をどうするかです。最後に、2 つの開発環境と展開環境の統合ですか?
1.12 つの言語の比較
Php: 直観的、高速、シンプル、学習しやすく、動的 Web ページの開発効率が高く、強力な草の根文化を持ち、結果を重視する言語界の民間ヒーローです。
Java: 強力かつ複雑で、多くのハイエンド機能を備え、IMB や Oracle などの企業の間で人気があり、言語界の高貴な王子です。
#1.2コミュニケーションの問題
##1.2.1メッセージ キュー
#オペレーティング システム レベルから観察すると、PHP と Java はシステム内で実行されている異なるプロセスです。それらの間の通信はプロセス間通信テクノロジ (IPC) に属します:
従来の Unix 環境では、IPC テクノロジにはパイプ、メッセージ キュー、共有メモリ、セマフォなどが含まれます。ただし、同じシステム内での IPC 通信は、TCP ベースのソケット通信と比較してパフォーマンスとリソースの使用量が大幅に増加します。アドバンテージ。
Unix/Linux では、PHP は基本的にすべての IPC アクセス インターフェイスを提供します。PHP は C 言語をコアとするシェルとみなすことができ、IPC はシステム カーネルの不可欠な部分であり、外部グループ C を提供します。関数インターフェイスを備えているため、PHP は IPC テクノロジを非常にスムーズに使用できます。誇張されたプラットフォーム機能を追求するために (Windows の IPC テクノロジは Unix の IPC テクノロジとは異なります)、Java はシステムレベルの IPC アクセスを提供しません。これは、均一性を追求するとパフォーマンスが犠牲になる可能性があるという Java の文化的特性も反映しています。
1.2.2 ソケット
メッセージ キュー テクノロジは Unix/Linux システムにのみ適用できますが、SOCKET は TCP/IP 通信メカニズムに基づいているため、さまざまなプラットフォームに適応できます。
上の図からわかるように、PHP は HTTP 層の役割を担い、Java はビジネス層の役割を担います。これらは、System V Message Queue (プロセス間通信 IPC の一種であるメッセージ キュー) を介して相互に通信します。 )。Java には JNI のサポートが必要です。
メッセージ キューを使用すると、次の利点があります:
1. php と java の独立性を維持します
2 非常に高い通信速度を持ちます。ソケット
3よりも大きい。ソケットメソッドと比較して、Javaサーバーはローカルマシンにのみサービスを提供します(外部リスニングポートはありません)。これは比較的安全で管理が簡単です。
|
#
1.3 通信内容の問題 #コミュニケーションの問題は解決しましたが、コミュニケーションの内容を解決するにはどうすればよいですか?
PHP と Java のそれぞれの言語内で定義されたデータ型。2 つの言語が相互にデータを送信する場合、データ型はどのように変換されますか?
(1)Xml: xml は確かにプラットフォームを誇り、オブジェクト モデルを適切に記述することができるデータ カプセル化テクノロジですが、xmlサイズが大きいため通信速度が遅く、通信の両端での解析も面倒です。
(2) シリアル化: 送信プロセス中にデータを送信するためにシリアル化オブジェクトと逆シリアル化オブジェクトを使用することは、認識されている合理的な方法であり、両方の言語がサポートされています。
2、Javaおよびphp 結合選択
Web 上で現在知られている PHP と Java の統合テクノロジは、SOAP ( Simple Object Access Protocol)、Quercus、および PHP/Java Bridge を使用すると、Web アプリケーションの開発時に PHP と Java が相互にライブラリを使用できるようになります。
SOAP
|
SOAP は IBM、A Microsoft およびその他の企業によって開発され、分散オブジェクト テクノロジを実装するために W3C によって推奨されたプロトコル。 SOAP は、XML を使用してプログラム呼び出し、パラメータ転送、および情報の返送をパッケージ化する一連のメカニズムを提供し、XML のプレーン テキスト特性により、HTTP、HTTPS、SMTP などの通信チャネルを介して企業のファイアウォールを通過できます。独自のバイナリ形式でデータを送信する分散オブジェクト技術プロトコルである CORBA、Java RMI、DCOM と比較して、SOAP はプログラミング言語、プラットフォーム、ハードウェアに依存しないという特徴があります。
|
コナラ
|
Quercus はオープンソースの PHP 5 エンジンで、すでに Pure Java で完全な実装が行われています。 Quercus は、Resin アプリケーション サーバー上で実行され、ロード バランシングやプロキシ キャッシュなどの Engine の機能を利用します。 |
#PHP/Java Bridge
|
オープン ソース製品には、Php-java-bridge および LAJP # が含まれます。
|
##
2.1 選択条件
ü 無料のオープンソース
ü 使いやすい
ü 効率的で安定した
2.2 LAJP####2.2.1 特徴
Ø 補足的な利点: PHP は非常に人気のある WEB プログラミング スクリプト言語であり、習得が簡単で、開発と展開の効率が高いです。書くのに適しています複雑なビジネス機能とデータを含むプログラムでは、この 2 つを組み合わせることで、それぞれの利点を最大限に発揮できます。 Ø
効率的で安定した: Apache PHP の組み合わせは優れた WEB サービスの安定性をもたらし、JAVA は接続プーリング、トランザクション管理、配布、オブジェクトなどを補完できます。モデルやその他のハイエンド機能。 Ø
革新的なコミュニケーションメカニズム:
PHP と Java 間の通信には、通信効率とプラットフォームの互換性を考慮して、システム メッセージ キューとソケットの 2 つのメカニズムが使用されます。 Ø
データ型自動変換メカニズム:
プログラマーが解析コードを記述する必要がなく、PHP データと Java データは自動的に照合され、正確に変換されます。
Ø 使いやすい: LAJP はインストールと設定が簡単で、PHP および JAVA プログラミングはそれぞれのプログラミング習慣に準拠しています。
Ø 軽量: LAJP アーキテクチャは非常に軽量であり、最も基本的な PHP および Java 環境に加えて、拡張コンポーネントやサードパーティ コンポーネントは必要ありません。 。 容器。
2.2.2 データ型変換
PHP と Java には、それぞれ言語内で独自のデータ型が定義されています。または、Java データが PHP に送信されると、LAJP が内部でデータを自動的かつ正確に変換するため、プログラマはデコード作業を行う必要がありません。
##2.2.3 ##LALP 実行環境
メッセージ キュー モード環境は System V メッセージ キューの動作を満たす必要があります:
##ソケット モード
php- PHP の説明によると、PHP バージョン 4.1.0 以上でソケット
# がサポートされています。 ##
- #Windows システムはソケット モードのみを使用できます
これら 2 つのモードは、開発プロセス中に同時に使用できます。たとえば、開発者は Windows 環境を使用し、プログラムは Linux システムにデプロイされます。LAJP モードの設定はコーディングとは関係ありません。
#2.2.4 デプロイメント 2.2.4.1 分散アーキテクチャ
重要かつクリティカルなビジネス シナリオでは、ユーザー インタラクション層とビジネス層が個別に導入されます。このタイプのアーキテクチャは、LAJP で使用できます。このような: ######### ###
WEB サーバーの Java は非常に「薄い」層であり、後続の EJB サービスに接続するためにのみ使用されます。
2.2.4.2
##2.2.4.3 Web クラスター
LAJP をソケット通信モードで使用すると、単純な分散 WEB クラスター アーキテクチャを構築できます。
##2.2.4.4 複雑なアーキテクチャ アプリケーション
LAJP を使用する柔軟性、アーキテクチャの設計と選択は、私たち自身の考え方に基づいています。次のアーキテクチャ リファレンスでは、WEB 層と Web 層の両方でクラスタを使用しています。 EJB 層:
memcache は分散メモリ オブジェクト キャッシング テクノロジであり、PHP では、Web クラスタ内の各ノードを同期するためにセッション データを保存すると非常に便利です。データは、WEB 分野における Java と比較した PHP の「専門性」を反映することもあります。
この記事では Java と PHP の関係について紹介します。さらに関連する内容については、php 中国語 Web サイトを参照してください。
関連する推奨事項:
PHP の実際の経験の概要
##ThinkPHP の関連する概要
#thinkphp 基本クラスに関する関連コンテンツ
以上がJavaとPHPの関係の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。