国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > PHP > 正文

Java與PHP之間的關聯

2020-03-22 18:01:18
字體:
來源:轉載
供稿:網友

驗證兩種各自領域稱王的語言(JAVA /PHP),不同語言、不同機制的組合在一起,PHP負責WEB層,Java負責業務和數據邏輯層,真是一對黃金組合(Java+PHP整合=混血新寵兒),發揮各自優勢,適合開發B/S企業程序。

1技術問題

兩種不同環境,不同機制的語言結合,首先要解決的是如何通訊?其次是通訊內容如何處理?最后是兩者開發,部署環境整合?

1.1兩種語言對比

Php:直觀,快速,簡單,易學,開發動態網頁效率高,草根文化氣息濃重,是語言世界的平民英雄,注重于結果。

Java:強大而復雜,有眾多高端功能,又有IMB、Oracle等企業大顎的追捧,是語言世界的貴族王子。

1.2通訊問題

1.2.1消息隊列

從操作系統層面觀察: PHP和Java是系統中運行的不同進程,他們之間溝通屬于進程間通信技術(IPC):

在傳統的Unix環境中,IPC技術有:管道、消息隊列、共享內存、信號量等,但在同一個系統中,IPC通信比基于TCP的socket通信在性能、資源占用方面有相當大的優勢。

在Unix/Linux中,PHP基本提供了所有IPC的訪問接口,因為PHP可以看作是以C語言為核心的一個殼,而IPC是系統內核的組成部分,對外提供了一組C函數接口,因此PHP可以非常順暢的運用IPC技術。而Java為了追求夸平臺性(Windows的IPC技術和Unix的不同),沒有提供系統級的IPC訪問,這也體現了Java的文化特色:為追求統一可犧牲效能。

1.2.2 Socket

消息隊列技術只能適用于Unix/html' target='_blank'>Linux系統,而SOCKET基于TCP/IP的通訊機制,從而適應各種平臺。

從上圖中看出,PHP承擔HTTP層的職責,而Java承擔業務層的職責,他們通過System V Message Queue(消息隊列,進程間通訊IPC中的一種)相互溝通,Java需要JNI的支持。

使用消息隊列有以下好處:


1. 使php和java保持獨立性

2. 有極高的傳輸速度,大于socket

3. 相對于socket方式,Java服務端只向本機提供服務(沒有對外偵聽端口),相對安全,易于管理。


1.3 通訊內容問題

通信問題解決了,通信內容如何解決呢?

PHP和Java各自語言內部定義的數據類型,當兩種語言互相傳輸數據時,數據類型怎樣進行轉換呢?

(1)Xml: xml確是一種夸平臺、能夠很好描述對象模型的數據封裝技術,但xml體積大傳輸速率慢,通訊兩端解析也比較麻煩。

(2) 序列化: 在傳輸過程中使用序列化和反序列化對象來傳輸數據是一種公認且比較合理的方式,且兩種語言都支持。

2 Java與php 結合選型

目前已知的PHP與Java在Web間整合技術可分成SOAP(Simple Object Access Protocol)、Quercus、PHP/Java Bridge三種,這些技術可以讓PHP與Java在開發Web應用程序時互相使用彼此的程序庫。


SOAP

SOAP是IBM、Microsoft等公司開發、W3C推薦,用來實現分布式對象技術的協議。SOAP提供了一套以XML來包裝程序調用、參數傳遞與信息回傳的機制,借助XML純文字的特性,可通過HTTP、HTTPS、SMTP等通信管道穿越企業的防火墻。比起CORBA、Java RMI及DCOM這些以專屬binary格式傳送數據的分布式對象技術協議,SOAP具有與程序語言、平臺和硬件無關的特性。

Quercus

Quercus是一個開源 PHP 5 引擎,它已經擁有了純 Java 的完整實現。Quercus 在 Resin 應用服務器之上運行,利用了負載平衡、代理緩存等 Resin 特性。

PHP/Java Bridge

開源產品有:Php-java-bridge 與 LAJP


2.1 選擇條件

ü 免費、開源

ü 簡單易用

ü 高效穩定

2.2 LAJP

2.2.1 特點

? 優勢互補: PHP是非常流行的WEB編程腳本語言,有易學、易用、開發部署效率高的特點, 非常適合網頁編程;JAVA適合編寫具有復雜的業務功能和數據的程序,二者結合可發揮各自優勢。

? 高效穩定:Apache+PHP組合可帶來優異的WEB服務穩定性,而JAVA可補充如連接池、事物管理、分布式、對象模型等高端特性。

? 創新的通信機制: PHP和Java間的通訊方式采用系統消息隊列和Socket兩種機制,兼顧通訊效率和平臺兼容

? 數據類型自動轉換機制: PHP數據和Java數據可準確地自動匹配和轉換,無須程序員編寫解析代碼。

? 易用:LAJP安裝配置簡單,PHP端和JAVA端編程符合各自的編程習慣。

? 輕量級:LAJP架構非常輕量級,除了最基本的PHP和Java環境,不需要任何擴充的、第三方的組件、容器。

2.2.2 數據類型轉換

PHP和Java各有其語言內部定義的數據類型,當PHP數據傳送到Java,或Java數據傳送到PHP時,LAJP在內部自動地、準確地對他們進行轉換,程序員無需進行任何的解碼工作。

2.2.3 LALP 運行環境

消息隊列模式

環境需要滿足System V消息隊列的運行:

系統 目前常見的Unix/Linux系統都可滿足php(Apache)、java的運行,其中大部分默認支持System V消息隊列。

php php需要通過消息隊列和java進程通信,按php的說明,php在4.3.0版本以后支持System V消息隊列。

apache 無特殊要求,滿足php要求即可。

java java版本在1.5以后。

在Unix/Linux環境中,推薦使用消息隊列模式。

socket模式

系統 沒有限制,很難找到不支持TCP/IP的系統。

php 按php的說明,php版本 =4.1.0支持socket

apache 無特殊要求,滿足php要求即可。

java java版本在1.5以后。

Windows系統只能使用socket模式

在開發過程中可以同時使用這兩種模式,比如一般開發者使用Windows環境,而程序部署在Linux系統中,LAJP在模式的配置上和編碼無關。

2.2.4 部署

2.2.4.1 分布式架構

在重要的、關鍵性的業務場景中,用戶交互層和業務層是分開部署的,LAJP在此類架構中可以這樣使用:

WEB服務器中的Java是非常“薄”的一層,僅用來連接后面的EJB服務。

2.2.4.2 集群

隨著用戶訪問量的增加,WEB服務往往成為系統中的瓶頸,下面是LAJP在集群中的架構參考:

2.2.4.3 web集群

通過使用socket通訊模式的LAJP,可以搭建出簡單的分布式的WEB集群架構:

2.2.4.4 復雜架構應用

LAJP使用的靈活性,架構的設計和選擇更多在于我們自己的思想,下面的架構參考在WEB層、EJB層都使用了集群:

memcache是分布式的內存對象緩存技術,在PHP中可以非常方便的將Session數據存儲在其中,來同步WEB集群中各節點中的數據,從這里也可以體現到PHP在WEB領域相對于Java的“專業”。

本文介紹了Java與PHP之間的關聯,更多相關內容請關注php 。

相關推薦:

對于php實用經驗的總結

ThinkPHP的相關總結

關于??thinkphp基類的相關內容

以上就是Java與PHP之間的關聯的詳細內容,PHP教程

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 松潘县| 宕昌县| 观塘区| 芮城县| 筠连县| 镇原县| 保康县| 平南县| 邢台市| 衡阳市| 沁水县| 荔浦县| 苏州市| 辰溪县| 辽宁省| 奉贤区| 西宁市| 阿鲁科尔沁旗| 佛山市| 资阳市| 乐至县| 清流县| 昌黎县| 深水埗区| 广东省| 宁都县| 元朗区| 枣庄市| 比如县| 南雄市| 广州市| 桂林市| 彭山县| 慈利县| 蒙山县| 汪清县| 日土县| 高淳县| 东山县| 乐至县| 阿图什市|