Jini與藍(lán)牙技術(shù)是兩種互補(bǔ)性很強(qiáng)的技術(shù)。藍(lán)牙技術(shù)主要實(shí)現(xiàn)鄰近的電子設(shè)備無(wú)線連接,是硬件設(shè)備的無(wú)線互連協(xié)議;Jini則是實(shí)現(xiàn)分布式軟件服務(wù)(包括無(wú)線設(shè)備)的軟件技術(shù)。藍(lán)牙技術(shù)是對(duì)固定的一組協(xié)議間互操作的靜態(tài)說(shuō)明;而Jini的“移動(dòng)代碼”代理服務(wù)對(duì)象可以動(dòng)態(tài)地互操作。兩者在ISO/OSI的體系結(jié)構(gòu)中的位置如圖2的慰。Jini主要位于表示層和會(huì)話層,而藍(lán)牙的協(xié)議棧貫空了整個(gè)體系結(jié)構(gòu)。Jini的發(fā)現(xiàn)協(xié)議和分布式安全模型加強(qiáng)了藍(lán)牙技術(shù)的發(fā)展進(jìn)程和完全管理模塊。
3.2 應(yīng)用方案
Jini的注冊(cè)和注銷(xiāo)服務(wù)與藍(lán)牙設(shè)備在網(wǎng)絡(luò)中的加入和退出非常類(lèi)似。Jini控制網(wǎng)絡(luò)服務(wù)的租借,始終使查找服務(wù)保持最新狀態(tài)。在下一節(jié)中將詳細(xì)描述應(yīng)用實(shí)例,本節(jié)進(jìn)行方案設(shè)計(jì)。
通常有三種形式來(lái)實(shí)現(xiàn)其Jini網(wǎng)絡(luò)功能:基于完整虛機(jī)的設(shè)備實(shí)現(xiàn),基于嵌入式虛機(jī)的設(shè)備實(shí)現(xiàn)和基于共享虛機(jī)的設(shè)備實(shí)現(xiàn)。
基于完整虛機(jī)設(shè)備實(shí)現(xiàn)中的設(shè)備指一般的通用設(shè)備,具有網(wǎng)絡(luò)連接、較強(qiáng)的計(jì)算存儲(chǔ)功能,能夠運(yùn)行完整的Java虛機(jī)環(huán)境。在這種設(shè)備上能夠?qū)崿F(xiàn)Jini系統(tǒng)的所有功能,如各種協(xié)議功能、RMI、租借更新功能、動(dòng)態(tài)代碼移動(dòng)功能、分布式安全機(jī)制等。Jini是位于操作系統(tǒng)和虛擬機(jī)之上的功能層,多個(gè)設(shè)備隨機(jī)聯(lián)網(wǎng)形成一分布式資源共享系統(tǒng),網(wǎng)絡(luò)傳輸協(xié)議一般由操作系統(tǒng)分別采用TCP/IP協(xié)議有線方式和基于藍(lán)牙協(xié)議的無(wú)線連接方式兩種。本設(shè)計(jì)方案就是基于協(xié)議的無(wú)線連接方式實(shí)現(xiàn)。圖3描述了一種應(yīng)用方案。服務(wù)客戶、設(shè)備和網(wǎng)絡(luò)代理通過(guò)藍(lán)牙網(wǎng)絡(luò)進(jìn)行連接,同時(shí)也支持TCP/IP協(xié)議。網(wǎng)絡(luò)中包含可以訪問(wèn)的設(shè)備數(shù)據(jù)庫(kù)、查找服務(wù)。藍(lán)牙網(wǎng)絡(luò)通過(guò)SDP協(xié)議負(fù)責(zé)設(shè)備加入網(wǎng)絡(luò),使設(shè)備能夠查詢、發(fā)現(xiàn)最鄰近的設(shè)備,并對(duì)這些設(shè)備進(jìn)行訪問(wèn),從而實(shí)現(xiàn)遠(yuǎn)程控制。遠(yuǎn)程控制實(shí)現(xiàn)藍(lán)牙網(wǎng)絡(luò)與Jini的查找服務(wù)對(duì)話、詢問(wèn)網(wǎng)絡(luò)可用設(shè)備的功能。查找服務(wù)保持網(wǎng)絡(luò)中運(yùn)行的所有設(shè)備的動(dòng)態(tài)列表,如:PDA、電話和CD播放機(jī)等。當(dāng)服務(wù)客戶(遠(yuǎn)程控制)請(qǐng)求時(shí),所有這些設(shè)備將相關(guān)的驅(qū)動(dòng)程序發(fā)送到服務(wù)客戶。當(dāng)設(shè)備不再用時(shí),通過(guò)租借終止對(duì)網(wǎng)絡(luò)發(fā)出警告,這是Jini的功能,主要用Java的RMI來(lái)實(shí)現(xiàn)。這種通信和保持服務(wù)更新的方式使Jini與藍(lán)牙網(wǎng)絡(luò)進(jìn)行了很好的結(jié)合。
4 應(yīng)用實(shí)例
基于Jini與藍(lán)牙開(kāi)發(fā)了一個(gè)無(wú)線網(wǎng)絡(luò)點(diǎn)歌器JBMP3。它具有以下功能:播放客戶選取歌典、客戶端圖形界面、個(gè)性化定制客戶播放列表。系統(tǒng)結(jié)構(gòu)如圖4所示。它由一個(gè)能播放音樂(lè)文件(mp3文件)的服務(wù)端程序、若干能控制服務(wù)程序的客戶端程序(遠(yuǎn)程控制)和一個(gè)能支持Jini服務(wù)的查找服務(wù)組成。運(yùn)行的網(wǎng)絡(luò)是TCP/IP網(wǎng)絡(luò)。
對(duì)應(yīng)用結(jié)合附圖作如下詳細(xì)說(shuō)明:
(1)點(diǎn)歌器發(fā)布一個(gè)服務(wù)自己擁有的代理對(duì)象。例如,能夠按先進(jìn)先出順序播放音樂(lè)文件。
(2)客戶端程序——通用遠(yuǎn)程控制,詢問(wèn)查找服務(wù)網(wǎng)絡(luò)能提供什么服務(wù)。
(3)查找服務(wù)通過(guò)與請(qǐng)求相匹配的代理對(duì)象副本答復(fù)客戶端的詢問(wèn)。
(4)客戶端所有的請(qǐng)求都被送到同樣的服務(wù)器(點(diǎn)歌服務(wù)器)。請(qǐng)求通過(guò)Jini網(wǎng)絡(luò)5到達(dá)點(diǎn)歌服務(wù)器,服務(wù)器通過(guò)各自的鏈接
(5)更新與之相連的代理對(duì)象。同時(shí)點(diǎn)歌器的更新以一致的形式顯示出來(lái)。
設(shè)計(jì)主要分為三部分:遠(yuǎn)程控制接口設(shè)計(jì)、客戶端設(shè)計(jì)、服務(wù)器設(shè)計(jì)。
4.1 遠(yuǎn)程控制接口產(chǎn)生的代碼
import net.jini.core .lease.*;
public interface RemoteControl {
public String getName ();
public java.awt .Component.getDisplay();
public Lease lease (long time)
throws
java.rmi.RemoteException,
LeaseDeniedException,
UnknownLeaseException;
}
getName():通用遠(yuǎn)程控制需要知道服務(wù)的名稱以便能在圖形界面上顯示服務(wù)的正確名稱。
getDisplay():通用遠(yuǎn)程控制需要一個(gè)圖形界面來(lái)控制已經(jīng)發(fā)現(xiàn)的不同服務(wù)。
lease(long time):通用遠(yuǎn)程控制需要知道在多長(zhǎng)的時(shí)間內(nèi)被允許使用某一服務(wù)(租借時(shí)間)。
4.2 客戶機(jī)設(shè)計(jì)
客戶機(jī)該僅需作有限的操作,而讓服務(wù)器作大部分的工作。因?yàn)槭褂煤苌儋Y源的客戶機(jī)在慢速處理器和小存儲(chǔ)器的設(shè)備上運(yùn)行只適合象PDA一類(lèi)手持設(shè)備或蜂窩電話,因此在這里客戶機(jī)必需支持一些操作。它們是:
(1)發(fā)現(xiàn)已經(jīng)在網(wǎng)絡(luò)上注冊(cè)的服務(wù)的能力。例如,詢問(wèn)查找服務(wù)器可用的服務(wù)。
(2)當(dāng)一個(gè)服務(wù)在網(wǎng)絡(luò)上可行時(shí)被告知的能力。例如,發(fā)出需求后從查找服務(wù)接收代理對(duì)象。
(3)租借任意一段時(shí)間(非無(wú)限長(zhǎng))服務(wù)器資源的能力。這由客戶機(jī)的租借管理器完成。
(4)接收代理對(duì)象,而后經(jīng)接口向客戶機(jī)顯示的能力。本文是在通用遠(yuǎn)程控制中的Java面板上實(shí)現(xiàn)的。
客戶機(jī)接口應(yīng)該能顯示網(wǎng)絡(luò)提供的不同服務(wù)。當(dāng)前播放列表中的歌曲隊(duì)列應(yīng)在顯示器上自動(dòng)更新。
4.3 服務(wù)器設(shè)計(jì)
因?yàn)榭蛻魴C(jī)功能不強(qiáng),一些附加的功能就必需在服務(wù)器上添加。因此服務(wù)器至少必需支持以下操作:
(1)提供一個(gè)服務(wù)。如代理對(duì)象。
(2)發(fā)現(xiàn)查找服務(wù)和在網(wǎng)絡(luò)上公布代理對(duì)象。
(3)寫(xiě)服務(wù)身份(對(duì)每一個(gè)代理獨(dú)一無(wú)二)對(duì)象到文件。
(4)更新租借。
(5)斷開(kāi)租借已經(jīng)到期的客戶機(jī)聯(lián)接。
上機(jī)幾點(diǎn)是應(yīng)用的核心。這幾點(diǎn)組成了用于構(gòu)建Jini應(yīng)用的基本通信特征。服務(wù)器應(yīng)該加載目錄和發(fā)現(xiàn)所有的mp3文件。服務(wù)器是物理點(diǎn)歌器,它應(yīng)具有某種硬件用來(lái)播放mp3音頻文件。
Jini和藍(lán)牙技術(shù)的結(jié)合應(yīng)用在通信環(huán)境中有以下優(yōu)點(diǎn):首先,不需要網(wǎng)絡(luò)連接線;其次,不需要安裝設(shè)備驅(qū)動(dòng)程序,再次,一個(gè)設(shè)備遠(yuǎn)程控制另一個(gè)設(shè)備。這些特點(diǎn)使得網(wǎng)絡(luò)更容易連接和管理。雖然藍(lán)牙技術(shù)開(kāi)和生產(chǎn)的代價(jià)較高,Jini是SUN公司的免費(fèi)產(chǎn)品,很容易掌握應(yīng)用編程接口,并可進(jìn)行分布式計(jì)算。隨著藍(lán)牙技術(shù)和Jini技術(shù)規(guī)范的布、不斷推廣與相互結(jié)合,生活中各種電路的互連將變得愈來(lái)愈方便,Jini的即插即用功能和藍(lán)牙的無(wú)線連網(wǎng)使得設(shè)備的增減變得非常簡(jiǎn)單,使網(wǎng)絡(luò)的建設(shè)可以分階段逐步完善而不必一次到位,滿足了一般用戶的需求。Jini技術(shù)和藍(lán)牙的結(jié)合,必將進(jìn)一步推動(dòng)信息無(wú)線網(wǎng)絡(luò)的快速發(fā)展,成為信息網(wǎng)絡(luò)又一重要應(yīng)用領(lǐng)域,將極大地改變?nèi)藗兊纳罘绞?,促進(jìn)普適計(jì)算時(shí)代的到來(lái)。
評(píng)論