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

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