Jini
是由 SUN 公司 R&D 的Bill Joy
所提出的一項(xiàng)技術(shù)。我們可以藉著使用Jini,創(chuàng)造出一個(gè)富有彈性、容易管理、且可隨時(shí)隨地使用各種服務(wù)的網(wǎng)路計(jì)算環(huán)境。為了讓使用者知道網(wǎng)路上有哪些服
務(wù)可被使用,我們必須建立一個(gè)聯(lián)盟( federation
),讓網(wǎng)路上的服務(wù)主動(dòng)加入。當(dāng)有某個(gè)服務(wù)加入聯(lián)盟時(shí),也等於同時(shí)向整個(gè)網(wǎng)路告知:「我可以被使用,有誰(shuí) 要我的服務(wù)?」。使用者透過(guò)聯(lián)盟,可以得知有哪
些服務(wù)可以使用。然而,我們要如何才能很簡(jiǎn)單、很輕易地使用這些服務(wù)關(guān)於這個(gè)問(wèn)題,也就是 Jini 的工作重點(diǎn)之一。
Jini(發(fā)音為DJEE-nee,像“魔術(shù)師”的阿拉伯語(yǔ))是一個(gè)新思想,Sun微系統(tǒng)稱作“自發(fā)網(wǎng)絡(luò)”。有了Jini體系結(jié)構(gòu),用戶就能夠把打印機(jī),存儲(chǔ)設(shè)備,揚(yáng)聲器和任何設(shè)備直接插入網(wǎng)絡(luò),并且,網(wǎng)絡(luò)上的每臺(tái)電腦,設(shè)備和用戶將會(huì)知道新加入的和可用的設(shè)備。每個(gè)可插設(shè)備都會(huì)立即在網(wǎng)絡(luò)設(shè)備注冊(cè)處定義自己。當(dāng)某人要使用或訪問(wèn)這個(gè)資源時(shí),他們的電腦將能夠從這個(gè)資源上下載必要的程序來(lái)與其通信。這樣一來(lái),操作系統(tǒng)中就不再需要專門的設(shè)備支持軟件,即我們所說(shuō)的設(shè)備驅(qū)動(dòng)程序。操作系統(tǒng)將會(huì)通過(guò)網(wǎng)絡(luò)注冊(cè)獲悉所有可訪問(wèn)設(shè)備。
Jini可以看作是繼Java編程語(yǔ)言之后邁向使網(wǎng)絡(luò)變?yōu)橐慌_(tái)大電腦的下一步。Jini承諾能使制造商生產(chǎn)可獨(dú)于操作系統(tǒng)(像Windows95)連入網(wǎng)
絡(luò)的設(shè)備。打印機(jī)只要裝上一個(gè)很小的,特殊用途的并很可能是嵌入式微芯片的操作系統(tǒng),它就可以被插到網(wǎng)絡(luò)中并且立即被各種不同電腦的用戶所共享:例如
Windows,Macintosh,UNIX。移動(dòng)設(shè)備可以被傳送并很方便地插入網(wǎng)絡(luò),這樣一來(lái),其他用戶就都可以使用這個(gè)設(shè)備了。
Jini是以Java技術(shù)為核心的分布式系統(tǒng),它通過(guò)使用一個(gè)簡(jiǎn)易的"即插即用"模型,能夠隨時(shí)改變硬件或者軟件的配置,從而提供了一個(gè)支持快速配置的分
布式計(jì)算環(huán)境。Jini的迷人之處在于它能夠使各種數(shù)字設(shè)備無(wú)需配置、安裝或者人工干預(yù),就能夠在一個(gè)臨時(shí)的稱為服務(wù)聯(lián)盟(federations
of
services)的設(shè)備集合中共同工作。聯(lián)盟中的任何設(shè)備無(wú)論大小都可以自行管理,共同組成一個(gè)服務(wù)網(wǎng)絡(luò),聯(lián)盟中的每一個(gè)成員都可以為其它成員提供資源
或服務(wù),同時(shí)又可以從其它成員那里獲取自己所需的資源和服務(wù),Jini提供一套完善的機(jī)制使得硬件設(shè)備或者軟件組件能夠隨時(shí)加入或者退出聯(lián)盟。
Jini是一個(gè)主動(dòng)的、響應(yīng)式的分布式基礎(chǔ)結(jié)構(gòu),它提供了在分布式環(huán)境中進(jìn)行服務(wù)的建立、查找、通訊和調(diào)用的一整套機(jī)制。Jini技術(shù)被設(shè)計(jì)成可以運(yùn)用在
任何有能力連入網(wǎng)絡(luò)的器件上,而不論該器件運(yùn)行什么軟件或運(yùn)行在哪種硬件設(shè)備之上。Jini技術(shù)是以網(wǎng)絡(luò)器件中的一個(gè)構(gòu)件的
面貌出現(xiàn)的,它為器件如何連入網(wǎng)絡(luò)、共享信息和與網(wǎng)絡(luò)進(jìn)行互操作建立了一套規(guī)則,而同時(shí)又保持了對(duì)用戶的完全透明。Jini本身與平臺(tái)無(wú)關(guān),采用它的器件
不再受到所用軟件、處理器、設(shè)備驅(qū)動(dòng)器,或傳統(tǒng)網(wǎng)絡(luò)協(xié)議的制約,其唯一要求只是一個(gè)能夠運(yùn)行Java字節(jié)碼的虛擬機(jī).
讓我們來(lái)看看Jini 是怎么做的。網(wǎng)路上的服務(wù)要能夠成為聯(lián)盟的一份子,不管是硬體服務(wù)也好、軟體服務(wù)也好,都必須嵌入Jini 的程式碼。此外,網(wǎng)路上還必須提供 JVM的
環(huán)境,才能執(zhí)行Jini程式以獲得這些服務(wù)。Jini的程式碼是利用 SUN 公司所提供的 Jini package 撰寫(xiě)而成。Jini
package使用的語(yǔ)言是Java,并且包含了許多處理網(wǎng)路上資源的相關(guān)功能。例如:如何幫助網(wǎng)路服務(wù)尋找(discovery)、以及加入
(join)聯(lián)盟;或者幫助網(wǎng)路服務(wù)處理分散式的承租(leasing)、交易(
transactions)等的問(wèn)題。而這些網(wǎng)路服務(wù)彼此溝通時(shí),所應(yīng)用的技術(shù)是 RMI(Java Remote Method Invocation )。簡(jiǎn)言之,網(wǎng)路上的服務(wù)藉由 Jini 所提供的介面,得以相互溝通、合作,來(lái)完成使用者的要求。
任何帶支持Java的操作系統(tǒng)的設(shè)備都能夠被插到網(wǎng)絡(luò)中。(對(duì)很多設(shè)備來(lái)說(shuō),操作系統(tǒng)都比例如,Windows 2000小得多,因?yàn)樗惶峁┝诉@個(gè)設(shè)備需要的函數(shù)。)當(dāng)一個(gè)設(shè)備被插到Jini網(wǎng)絡(luò)中時(shí),它立即被目錄服務(wù)層注冊(cè)為網(wǎng)絡(luò)的一員。它必要的程序對(duì)象被放在了JavaSpace層,這樣一來(lái),當(dāng)其他網(wǎng)絡(luò)成員要使用這個(gè)設(shè)備的時(shí)候就可以發(fā)現(xiàn)和下載它們。在JavaSpace中對(duì)象的實(shí)際通信是通過(guò)使用遠(yuǎn)程方法調(diào)用(RMI)接口和層來(lái)實(shí)現(xiàn)的。支持boot,join,和discover協(xié)議的這層用于使設(shè)備,用戶,應(yīng)用程序通告并自我注冊(cè)以及發(fā)現(xiàn)其他設(shè)備。
一、Jini的體系結(jié)構(gòu)
Jini system 是由基礎(chǔ)建設(shè)( infrastructure)、程式設(shè)計(jì)模型( programming model )、服務(wù)( services) 三方面所構(gòu)成。

基礎(chǔ)建設(shè)( infrastructure)
Jini 基礎(chǔ)建設(shè)的核心包含以下幾個(gè)部分:
Discovery Protocol:
提供了如何讓網(wǎng)路上任何種類的資源加入聯(lián)盟的方式。
eXtended RMI :
Jini的元件彼此溝通時(shí)所使用的機(jī)制。
Distributed Security:
定義了Jini 聯(lián)盟成員的使用權(quán)限。
Lookup Service:
用來(lái)展現(xiàn)聯(lián)盟中的所有成員,以及幫助使用者尋找網(wǎng)路資源,或者負(fù)責(zé)提供聯(lián)盟中的資源給使用者用。
程式設(shè)計(jì)模型( programming model )
Jini 提供一些分散式的程式設(shè)計(jì)模型,而 Jini 的基礎(chǔ)構(gòu)造,就是利用這些模型來(lái)組合。模型所提供的介面(Interface),包括以下幾個(gè)類型:
Leasing Interface:
負(fù)責(zé)管理物件被使用的時(shí)間。
Two Phase Commit Interface :
是一個(gè)輕量級(jí)的(light-weight)、物件導(dǎo)向的( object-oriented)介面。負(fù)責(zé)管理分散式交易( transaction)的動(dòng)作,如:roll back 、roll forward 等。
Events Interface:
在分散式計(jì)算的環(huán)境中,必須確保程式執(zhí)行的先後順序,利用事件的觀念可以幫助我們解決這個(gè)問(wèn)題。
服務(wù)(services)
有了Jini的架構(gòu)以及程式設(shè)計(jì)模型後,我們可以利用這些技術(shù)來(lái)設(shè)計(jì)管理網(wǎng)路資源的服務(wù),以促進(jìn)分散式計(jì)算的發(fā)展。例如:JavaSpaces、Two Phase Commit Manager。
二、JavaSpace
Jini提供了在分散式環(huán)境中尋找( look-up)、注冊(cè)(
registration)、租借(leasing)等功能。而 JavaSpaces則負(fù)責(zé)管理分散式物件的處理程序(
processing)、分享(sharing)、以及流通(migration )等。因此 Jini 與 JavaSpaces
彼此存在著相互合作的關(guān)系[3] 。以軍隊(duì)作比喻,
Jini扮演的是軍 官的角色,負(fù)責(zé)分派許多武器裝備給軍隊(duì)。JavaSpaces則扮演軍隊(duì)的角色,負(fù)則使用那些被分派的武器以執(zhí)行命令。簡(jiǎn)單的說(shuō),
JavaSpaces就好像網(wǎng)路上的一個(gè)市場(chǎng),它提供一個(gè)簡(jiǎn)單、快速、統(tǒng)一的介面,讓網(wǎng)路上分散的資源可以被分享、協(xié)調(diào)與流通[4] 。
JavaSpaces是用 Java所發(fā)展的技術(shù),并且以RMI實(shí)作其網(wǎng)路通訊的功能,一般應(yīng)用在n-tiers 架構(gòu)的中間層( middle tiers)[5] 。JavaSpaces雖然能提供 求者與供應(yīng)者之間查詢與溝通的機(jī)制,但它并不是資料庫(kù),而是以簡(jiǎn)單的messaging system為基礎(chǔ),進(jìn)而提供更強(qiáng)大的功能。
除了Jini之外, JavaSpaces技術(shù)也可被應(yīng)用在其它系統(tǒng)與服務(wù)中,如: Workflow
systems 、Customer management systems、Supply chain management
、Intelligent rich data distribution、 Trading services 、Auction systems
、Resource allocation and management systems、Agent Systems、以及 Publish
and subscribe services等[4] 。
三、Jini的應(yīng)用
Jini技術(shù)有一個(gè)主要目的:讓許多電子產(chǎn)品可以容易的被加入至網(wǎng)路上,也就是隨插即用(plug-and-play) [6] 。任何物件,如:
DVD、CD
、VCR、桌上型電腦、可攜式電腦、印表機(jī)、掃描器、磁碟機(jī)、播放器、電話、電視機(jī)、警報(bào)系統(tǒng)、醫(yī)療器材、空調(diào)系統(tǒng)、廚具、汽車引擎、汽車的丁器板等,只
要利用Jini技術(shù),就可以結(jié)合各類的電子產(chǎn)品成為網(wǎng)路上的資源服務(wù)[6] ,而使用者只 透過(guò)電話或無(wú)限通訊器材就能使用這些服務(wù)。
想像一個(gè)劇情:一個(gè)使用者坐在公園里,想要透過(guò)掌上型電腦來(lái)使用網(wǎng)路上的印表機(jī),但是他并沒(méi)有任何印表機(jī)的驅(qū)動(dòng)程式。首先,Jini會(huì)啟動(dòng)
Lookup服務(wù)(類似 JavaSpaces),到聯(lián)盟(federation
)中搜尋符合使用者條件的印表機(jī)。找到之後,Jini會(huì)跟那臺(tái)印表機(jī)溝通,取得它的驅(qū)動(dòng)程式,并且傳至使用者的掌上型電腦。使用者於是可以輕易的使用網(wǎng)路
上的印表機(jī)。
我們也可以把家中的電器用品都結(jié)合到網(wǎng)路上,這樣可以讓我們?cè)谌魏螘r(shí)間、任何地點(diǎn)來(lái)控制家里的電器,這將是多堋令人期待的一個(gè)理想。
目前已經(jīng)有許多公司正在發(fā)展相關(guān)的技術(shù),這些公司包括Axis、Canon、 Computer
Associates、Datek 、Enocanto、Epson 、Ericsson、FedEx 、Mitsubishi、 Norwest
Mortgage 、Novell、ODI、 Oki、Quantum、 Salomon Brother、 Seagate、以及 Toshiba等。
四、Jini如何與眾不同?
Jini具有創(chuàng)建龐大的電子設(shè)備網(wǎng)絡(luò)的潛力。用戶可使用標(biāo)準(zhǔn)計(jì)算機(jī)設(shè)備與之相連,或從網(wǎng)絡(luò)本身獲得這些服務(wù)(存儲(chǔ)器、存儲(chǔ)和計(jì)算)。因此,Jini在至少以下10個(gè)主要方面有別于傳統(tǒng)操作系統(tǒng):
它規(guī)模小。
Jini的內(nèi)核只需要一臺(tái)Java虛擬機(jī),4KB常駐內(nèi)存和一些計(jì)算環(huán)路(computing cycles)。Jini系統(tǒng)大約為600 KB。
該系統(tǒng)完全基于對(duì)象。
即,其組件包括可遠(yuǎn)程執(zhí)行的方法,如果某個(gè)方法與其執(zhí)行環(huán)境不兼容(如浮點(diǎn)代碼),則它能自動(dòng)裝載正確的方法。
Jini的基本控制結(jié)構(gòu)簡(jiǎn)單。
對(duì)象通過(guò)JavaSpaces (管理諸如對(duì)象處理、共享和移植等功能的系統(tǒng))的基本操作--- read, write和take ---和標(biāo)準(zhǔn)Java RMI接口實(shí)現(xiàn)通信。
所有服務(wù)均通過(guò)簡(jiǎn)單的"租用"提供。
租用是依賴 于時(shí)間的(到期后可延續(xù)),并允許對(duì)同一服務(wù)有多個(gè)租用。
Jini包括標(biāo)準(zhǔn)Java安全性構(gòu)造。
因?yàn)榄h(huán)境具有分布式特點(diǎn),所以這一點(diǎn)非常重要,因?yàn)樵趫?zhí)行對(duì)象的地方必須具備安全性。
借助JavaSpaces,Jini還包含可了交易 服務(wù)(兩階段提交)和持續(xù)性(即 persistency,最初 是 用Object Design公司的ObjectStore PSE Pro for Java )。
在Jini內(nèi)部,像安全策略等基本信息群均可訪問(wèn)。這些信息群幾乎可以無(wú)限地匯集起來(lái),放置在大型網(wǎng)絡(luò)中。
Jini支持Java編程模式。Java服務(wù)和協(xié)議( JavaBeans等)仍可為廣大程序員使用。
資源可免費(fèi)授權(quán)(或近乎免費(fèi))。
最重要的是,Jini提供插入即可執(zhí)行的能力,新連接的設(shè)備能立刻得到網(wǎng)絡(luò)的認(rèn)可(通過(guò)引導(dǎo)、join and discovery
協(xié)議),并可訪問(wèn)任何已經(jīng)授權(quán)的服務(wù)。Sun公司把這一特點(diǎn)比作標(biāo)準(zhǔn)電話網(wǎng)的撥號(hào) ,并且正在考慮使用JavaTone品牌來(lái)描述整個(gè)環(huán)境。
五、Jini為什么重要? mandate
目前的網(wǎng)絡(luò)計(jì)算環(huán)境非常復(fù)雜。Windows 98和Windows NT
Workstation等客戶機(jī)操作系統(tǒng)都包含1000萬(wàn)到2000萬(wàn)行代碼。這些系統(tǒng)的規(guī)模 和復(fù)雜性 要求使用昂貴的、資源密集型計(jì)算設(shè)備,
它們能夠隨各新版軟件的面市而不斷升級(jí)。
在現(xiàn)有網(wǎng)絡(luò)中添加新的設(shè)備也是同樣的情況。雖然Microsoft公司在其操作系統(tǒng)上增加了plug-and-play (即插即用)功能,但對(duì)多數(shù)信息服務(wù)企業(yè)來(lái)說(shuō),新硬件的添加、配置和安裝設(shè)備驅(qū)動(dòng)程序總是一個(gè)問(wèn)題。
對(duì)那些必須為成千上萬(wàn)用戶維護(hù)穩(wěn)定的計(jì)算環(huán)境的系統(tǒng)管理員 來(lái)說(shuō),對(duì)客戶機(jī)端軟件不斷 復(fù)制使 其工作負(fù)擔(dān)加重,且成本增加,同時(shí)也限制了能與網(wǎng)絡(luò)相連且有效使用的設(shè)備的范圍。
Jini的重要性體現(xiàn)在,它可能 能夠做到:將服務(wù)的可用性擴(kuò)展到更加廣泛的電子設(shè)備的同時(shí),降低維護(hù)分布式計(jì)算環(huán)境的成本和復(fù)雜程度。
降低企業(yè)網(wǎng)絡(luò)擁有成本是一個(gè)重要的問(wèn)題。確實(shí),在企業(yè)2000年問(wèn)題解決以后,這個(gè)問(wèn)題將成為各企業(yè)信息服務(wù)部門下一個(gè)10年的主要課題。
除了降低成本以外,Jini還可能創(chuàng)建全新一代的網(wǎng)絡(luò)服務(wù)和產(chǎn)品。服務(wù)已經(jīng)打破了本地計(jì)算機(jī)系統(tǒng)的界限,并將發(fā)展到與遠(yuǎn)程設(shè)備功能相符,并且當(dāng)功能受到限
制時(shí)可以從網(wǎng)絡(luò)上動(dòng)態(tài)地提供。請(qǐng)想象一下這樣一種智能化家庭網(wǎng)絡(luò)吧:它控制著從電腦到烤面包器、從分布式超級(jí)計(jì)算機(jī)到能把呼叫自動(dòng)傳輸給您(可能是您的計(jì)
算機(jī)、電話、電視和蜂窩設(shè)備)的電話網(wǎng)。Jini有可能使這一切及更多其它的應(yīng)用成為現(xiàn)實(shí)。
六、結(jié)論
Jini讓許多電器設(shè)備、網(wǎng)路服務(wù)結(jié)成聯(lián)盟( federation)。
Jini的最上層以 Lookup機(jī)制為基礎(chǔ)的目錄服務(wù)( directory service ),讓許多含有
Jini技術(shù)的資源,來(lái)注冊(cè)以及被公布於網(wǎng)路上。下一層則利用JavaSpaces
技術(shù)來(lái)管理聯(lián)盟的資源,以讓使用者或其他應(yīng)用程式使用資源。底層則是以RMI為基礎(chǔ)的協(xié)定,用來(lái)規(guī)范物件之間在網(wǎng)路上的溝通。
如同SUN公司所說(shuō):「網(wǎng)路就是電腦(The network is the
computer)」。網(wǎng)路的出現(xiàn)提供了無(wú)限的計(jì)算資源,讓我們可望達(dá)成一個(gè)超大型的計(jì)算系統(tǒng)。Java技術(shù)使得分散式計(jì)算變得容易可行,Jini
則實(shí)現(xiàn)網(wǎng)路就是一個(gè)超大型電腦的理想。