LAJP名稱(chēng)來(lái)源于著名的LAMP(Linux,Apache,Mysql,Php),LAMP是輕量級(jí)的開(kāi)發(fā) Web程序的環(huán)境,在Internet上有廣泛的應(yīng)用,但對(duì)于企業(yè)開(kāi)發(fā),如金融、電信領(lǐng)域,LAMP顯得能力不足,這些領(lǐng)域通常是Java(J2EE)的 勢(shì)力范圍。LAJP是將LAMP的簡(jiǎn)便性和Java能力結(jié)合起來(lái)的一項(xiàng)技術(shù),LAJP中的J指的是Java,由于數(shù)據(jù)庫(kù)廠商對(duì)Java的廣泛支持和 LAJP針對(duì)的領(lǐng)域,數(shù)據(jù)庫(kù)不再特別限制為Mysql。
特點(diǎn)
- 優(yōu)勢(shì)互補(bǔ): PHP是非常流行的WEB編程腳本語(yǔ)言,有易學(xué)、易用、開(kāi)發(fā)部署效率高的特點(diǎn),非常適合WEB開(kāi)發(fā);JAVA適合編寫(xiě)具有復(fù)雜的業(yè)務(wù)功能和數(shù)據(jù)的程序,二 者結(jié)合可發(fā)揮各自?xún)?yōu)勢(shì),適合開(kāi)發(fā)B/S企業(yè)程序。
- 高效穩(wěn)定:Apache+PHP 組合可帶來(lái)優(yōu)異的WEB服務(wù)穩(wěn)定性,而JAVA可補(bǔ)充如連接池、事物管理、分布式、對(duì)象模型等高端特性。
- 創(chuàng)新的通信機(jī)制 PHP和Java間的通訊方式采用系統(tǒng)消息隊(duì)列和Socket兩種機(jī)制,同時(shí)兼顧通訊效率和平臺(tái)兼容性。
- 數(shù)據(jù)類(lèi)型自動(dòng)轉(zhuǎn)換機(jī)制 PHP數(shù)據(jù)和Java數(shù)據(jù)可準(zhǔn)確、自動(dòng)匹配和轉(zhuǎn)換。
- 易用:LAJP安裝配置簡(jiǎn)單,除了核心的幾個(gè)Java類(lèi)文件和Java JNI接口程序外,不需額外插件,PHP端和JAVA端編程符合各自的編程習(xí)慣。
- 輕 量級(jí):LAJP架構(gòu)非常輕量級(jí),除了最基本的PHP和Java環(huán)境,不需要任何擴(kuò)充的、第三方的組件。
LAMP和LAJP的簡(jiǎn)要對(duì)比 LAMP從傳統(tǒng)技術(shù)架構(gòu)上看屬于2層結(jié)構(gòu),雖然在php5以后增強(qiáng)了面向?qū)ο蟮哪芰Γ辛诵纬蓸I(yè)務(wù)邏輯層的語(yǔ)言基礎(chǔ),但對(duì)于復(fù)雜的企業(yè)級(jí)WEB應(yīng) 用,php語(yǔ)言能力仍顯不足。LAJP繼承了LAMP在WEB領(lǐng)域編程的活力,并用java構(gòu)建業(yè)務(wù)邏輯層,非常適合針對(duì)企業(yè)級(jí)WEB項(xiàng)目的開(kāi)發(fā)。

php和java的互通
php和 java是兩種不同的語(yǔ)言,在LAJP架構(gòu)中二者之間的互通有兩種機(jī)制。
以操作系統(tǒng)的消息隊(duì)列為溝通媒介,在通訊 過(guò)程中php作為客戶(hù)端調(diào)用java端服務(wù)。消息隊(duì)列屬于IPC技術(shù)(進(jìn)程間通訊),php語(yǔ)言中內(nèi)置了一組函數(shù)(msg_send、 msg_receive等)可以和System V消息隊(duì)列通訊,而java中沒(méi)有相似的方法,因此通過(guò)調(diào)用底層JNI接口使用C函數(shù)來(lái)實(shí)現(xiàn)。 使用消息隊(duì)列有以下好處:
- 使php和java保持獨(dú)立性
- 有極高的傳輸速度,大于socket
- 相 對(duì)于socket方式,Java服務(wù)端只向本機(jī)提供服務(wù)(沒(méi)有對(duì)外偵聽(tīng)端口),相對(duì)安全,易于管理。
消息隊(duì)列技術(shù)只能適用于Unix/Linux/BSD系統(tǒng),因此LAJP提供基于TCP/IP的通訊機(jī)制,從而適 應(yīng)各種平臺(tái)。

數(shù)據(jù)類(lèi)型轉(zhuǎn)換
PHP和Java各有其語(yǔ)言?xún)?nèi)部定義的數(shù)據(jù)類(lèi) 型,當(dāng)PHP數(shù)據(jù)傳送到Java,或Java數(shù)據(jù)傳送到PHP時(shí),LAJP在內(nèi)部自動(dòng)地、準(zhǔn)確地對(duì)他們進(jìn)行轉(zhuǎn)換,程序員無(wú)需進(jìn)行任何的解碼工作。
