LAJP名稱來源于著名的LAMP(Linux,Apache,Mysql,Php),LAMP是輕量級的開發(fā) Web程序的環(huán)境,在Internet上有廣泛的應(yīng)用,但對于企業(yè)開發(fā),如金融、電信領(lǐng)域,LAMP顯得能力不足,這些領(lǐng)域通常是Java(J2EE)的 勢力范圍。LAJP是將LAMP的簡便性和Java能力結(jié)合起來的一項技術(shù),LAJP中的J指的是Java,由于數(shù)據(jù)庫廠商對Java的廣泛支持和 LAJP針對的領(lǐng)域,數(shù)據(jù)庫不再特別限制為Mysql。
LAMP和LAJP的簡要對比 LAMP從傳統(tǒng)技術(shù)架構(gòu)上看屬于2層結(jié)構(gòu),雖然在php5以后增強(qiáng)了面向?qū)ο蟮哪芰Γ辛诵纬蓸I(yè)務(wù)邏輯層的語言基礎(chǔ),但對于復(fù)雜的企業(yè)級WEB應(yīng) 用,php語言能力仍顯不足。LAJP繼承了LAMP在WEB領(lǐng)域編程的活力,并用java構(gòu)建業(yè)務(wù)邏輯層,非常適合針對企業(yè)級WEB項目的開發(fā)。
php和 java是兩種不同的語言,在LAJP架構(gòu)中二者之間的互通有兩種機(jī)制。
以操作系統(tǒng)的消息隊列為溝通媒介,在通訊 過程中php作為客戶端調(diào)用java端服務(wù)。消息隊列屬于IPC技術(shù)(進(jìn)程間通訊),php語言中內(nèi)置了一組函數(shù)(msg_send、 msg_receive等)可以和System V消息隊列通訊,而java中沒有相似的方法,因此通過調(diào)用底層JNI接口使用C函數(shù)來實現(xiàn)。 使用消息隊列有以下好處:
消息隊列技術(shù)只能適用于Unix/Linux/BSD系統(tǒng),因此LAJP提供基于TCP/IP的通訊機(jī)制,從而適 應(yīng)各種平臺。
PHP和Java各有其語言內(nèi)部定義的數(shù)據(jù)類 型,當(dāng)PHP數(shù)據(jù)傳送到Java,或Java數(shù)據(jù)傳送到PHP時,LAJP在內(nèi)部自動地、準(zhǔn)確地對他們進(jìn)行轉(zhuǎn)換,程序員無需進(jìn)行任何的解碼工作。