JINI

Jini(Java Intelligent Network Infrastructure)是Sun公司的研究與開發項目,它能極大擴展Java技術的能力。Jini技術可使範圍廣泛的多種硬體和軟體---即可與網路相連的任何實體---能夠自主聯網。

一:Jini白皮書

什麽是Jini

Jini可以使人們極其簡單地使用網路設備網路服務,就象今天我們使用電話一樣---通過網路撥號即插即用。Jini的目標是最大限度地簡化與網路的互動性。

Jini利用了Java技術的優勢。Jini包含了少量類庫格式的Java代碼和某些慣例,可在網路上建立一個Java虛擬機的"王國",就象我們人類創造一個社區一樣。在這個王國裏的人、設備、資料和應用程式等網路公民均被動態地連線起來,從而能夠共享信息和執行任務。

主要趨勢---網路的普及

這個世界正在網路化。例如,在今天,一個企業要想取得成功就必須建立網路。商業網路正在不斷擴大,而且已經能夠與供應商和客戶實現直接互動。與無線網路的互動也幾乎成為家常便飯。企業和消費者都要求能與網路進行更廣泛的交流。出差在外的人無不希望在到達飯店後就能把自己的電腦插入網路接口,不但能與自己單位的工作環境進行互動工作,而且還能與飯店的在地服務,如印表機或傳真機等進行互動工作。父母可能希望隻需使用行動電話或筆電就能與家裏的攝像機相連,通過它來察看家裏的情況。人們無不希望隨時隨地能夠連線和立即使用在地的定製服務。在不遠的將來,我們將看到網路滲透到很多其它環境。例如,將會出現把電視機和身曆聲設備等音頻/影片設備與家庭辦公室的電腦和外設連線起來的網路,並控製安全監視器和溫控恆溫器等網路設備。電纜和ASDL等高頻寬媒介將為家庭提供全新的服務。服務供應商不斷為駕駛員提供越來越多的服務,網路也必將隨之進入汽車領域。除導航系統外,遊覽景點和當地餐館名單等在地服務也將出現在駕駛員的螢幕上。隻要汽車與遠程診斷設備相連,它就能自動完成對汽車的維護,並在汽車出現問題時通知駕駛員。商業機遇---網路服務Jini所能帶來的商業機遇是新型的網路服務。

例如,產品製造商將在基于網路的產品上提供新的服務。例如,磁碟可被看作與網路相連的存儲服務,能向磁帶和其它新型服務提供自動存儲備份。聯網的攝像機可能將提供諸如安全監視等新型成像服務。這些新的服務使製造商成為新型的網路服務供應商。

Jini還能幫助傳統的服務供應商提供新型服務。

例如,某媒體服務供應商可能希望向某消費者的家庭印表機提供報紙列印服務。無線服務供應商可能希望通過蜂窩電話提供相似的服務。

Jini還可簡化對現有服務的管理。

在隔天交貨的情況裏,Jini簡化了分布在各處的工人與網路連通的方式。在個人銀行裏,基于Jini的電腦和外設可簡化分行的系統管理。對于無線服務供應商,Jini可使蜂窩電話具備類似于電話的網路功能:螢幕大小、處理能力、使所提供的服務根據每一部電話的特點而專門設計。問題是,在今天的環境中,聯網還是太復雜了。例如,無論是把PC連線到網路上,還是使用聯網的印表機都非常復雜。隻有經驗豐富的系統管理員才有能力處理裝載驅動程式、設定配置檔案等復雜的工作。顯然,我們不可能指望一般消費者也能管理今天這樣復雜的網路。

今天的網路還很脆弱和很不靈活。對網路稍加改動就可能造成不可挽救的大混亂。向網路中增加諸如磁碟存儲等功能的過程也很復雜。例如,要想增加一個磁碟驅動器,我們就必須開啟機箱,處理設定跳線器,並解決一系列復雜的設定問題。即使專家也會頭疼。

實際上,從消費者的角度看,他們所需要的隻不過是把硬體和軟體插入聯網的環境,並立即就能使用可用的服務:就象我們今天插接電話一樣。在今天,當消費者從商店購買一部電話後,他不必對電話進行配置。消費者隻需給電話服務供應商打一個電話,服務就會送上門。最後,消費者隻需把電話插好,就能使用電話服務了。自主的聯網。

Jini的價值

Jini的作用就是能簡化與網路的互動性。

從消費者的角度看,消費者把可插接的設備和軟體插入網路,就像今天插接一部電話一樣簡單。

從傳統服務供應商的角度看,Jini簡化了Services Delivery (服務提供)的管理。設備不但能向網路推出增值服務,而且還能提供設備的屬性和功能。現在,服務供應商可以針對每台設備設計服務。當然,Jini還將有可能開啟一扇通向新的網路化服務的大門。

從產品製造商的角度看,Jini開啟了全新的市場。因為Jini簡化了設備向網路提供增值服務的能力。所以,產品就不僅僅作為商品而投入競爭,而是作為增值服務的產品參與競爭。

從Java程式員的角度看,Jini簡化了編寫分散式應用程式的工作,因而,任何Java程式員都能利用基于Jini的新設備編寫應用程式和服務。因此,企業不再需要聘用有限的專家資源編寫分散式應用程式,任何Java程式員都能為基于Jini的網路開發服務。

Jini的起源

Bill Joy在1994年之前向Sun公司實驗室提交了一份包括以下三個主要概念的建議書:

可在所有平台上運行的語言運行該語言的虛擬機,和允許分散式虛擬機像單一系統那樣工作的網路化系統到1995年,這種語言和虛擬機相繼面市,即Java程式語言和Java虛擬機。但該系統的概念則仍保留在Sun公司的研究與開發實驗室,作進一步的研究和開發。這個系統的概念就是Jini。

Jini戰略部署與合作伙伴Sun公司部署了廣泛的戰略,力求將Jini推向市場。我們可以這樣說,Jini與任何向網路化環境提供產品和/或服務的企業都密切相關。這包括傳統的設備製造商、服務供應商和軟體開發商。

Jini將如何進行授權?

為推動Jini的進一步創新,使其盡快被市場所接受,Jini原始碼將象Netscape公司的Mozilla模型一樣向所有開發商公開。為確保兼容性和質量,正在考慮對商業產品進行標記。圍繞授權方式的很多具體細節目前仍在最後確定過程之中。擬議中的授權草案將于今年8月公布。

Jini技術概述

Jini技術可劃分為兩個範疇:體系結構和分散式編程。此外,還將提供在Jini上運行的網路服務。

基礎結構

Jini基礎結構解決設備和軟體如何與網路連線並進行註冊等基本問題。

基礎結構的第一種要素稱作Discovery and Join (發現與聯合)。Discovery and Join解決設備和應用程式在對網路一無所知的情況下如何向網路進行首次註冊這樣的難題。

基礎結構的第二個要素是Lookup (搜尋)。Lookup可被看作網路中所有服務的公告板。

Network Services ---網路服務Other Services ---其它服務Leasing ---租用Transactions ---交易Distributed Event---分散式事件Other OS ---其它作業系統Other CPU ---其它CPU DISCOVERY AND JOIN 設備或應用程式插入網路後需要完成的第一個任務就是發現該網路,並使網路發現該設備或應用程式。我們之所以使用Discovery and Join這樣的說法,是因為設備或應用程式事前不可能對網路有任何了解。

Discovery的工作原理如下:

當基于Jini的設備插入網路後,它就通過一個眾所周知的連線埠向網路傳送一個512位元組的多路廣播Discovery包。在其它信息中,該包包含對自己的引用。

Jini Lookup在眾所周知的連線埠上進行監聽。當接收到Discovery包後,Lookup就利用該設備的接口將Lookup的接口傳遞回插接的設備或應用程式。

現在,該設備或應用程式已經發現了該網路,並準備將其所有特徵上傳到Jini Lookup。上傳特徵是Discovery and Join中Join這方面的特徵。

現在該設備或應用程式使用在Discovery階段所接收到的Lookup接口與網路相連。上傳到Lookup的特徵包括該設備或應用程式所提供的所有增值服務(如驅動程式、幫助向導、屬性等)。

LookupLookup是網路上所有服務的網路公告板。Lookup不但存儲著指向網路上服務的指針,而且還存儲著這些服務的代碼和/或代碼指針。

例如,當印表機向Lookup註冊時,印表機將印表機驅動程式或驅動程式接口上傳到Lookup。當客戶機需要使用印表機時,該驅動程式和驅動程式接口就會從Lookup下載到客戶機。這樣,就不必事先把驅動程式裝載到客戶機上。

印表機還可能把其它增值服務裝載入Lookup。例如,印表機可能存儲關于自己的屬性(如它是否支持postscript,或它是否為彩色印表機)。印表機還可能存儲可在客戶機上運行的幫助向導。

如果網路上沒有Lookup,則網路就會使用一個Peer Lookup (對等Lookup )程式。當需要服務的客戶機在網路上找不到Lookup時,Peer Lookup就開始工作。在這種情況下,客戶機可傳送與Lookup所用的相同的Discovery and Join包,並要求任何服務供應商進行註冊。隨後,服務供應商就會在客戶機上註冊,盡管那不是Lookup。

分散式編程

Jini分散式編程為Java增添了建立分散式系統所必需的其它功能。尤其是Jini分散式編程可提供租用、分散式交易和分散式事件。

租用租用與租用一套公寓很類似。我們在租用一套公寓時,一般會商定使用該公寓的時間。類似地,在Jini中,對象彼此之間商定租期。例如,當某設備使用Discovery and Join協定發現網路時,它就註冊一段租用時間。在租約到期之前,該設備必須重新商定租期。這樣,如果租約到期或設備拔下後,該設備在Lookup中的記錄就會被自動移除。這就是分散式垃圾收集的工作原理。

分散式事件在單一的電腦中,事件肯定能被接收方接收到,序列也肯定能按照順序進行。

但在分散式環境中,分布的事件可能不是按照順序被接收,或者,某個事件還可能丟失。

為便于在Java環境中處理分布的事件,Jini為分布的事件提供了一個簡單的Java API。例如,當一個分布的事件發生時,該事件都帶有一個事件號和序列號。利用這種信息,接收方就能檢查事件是否丟失(序列號丟失)或事件是否按照順序接收(序列號順序不對)到。

分散式交易在分散式Java環境中,有時需要一種很簡便的方法,來確保在整個交易完成之前,在該交易中發生的所有事件都被真正提交了(兩階段提交)。

為便于進行此類分散式計算,Jini提供了一種簡單的Java API。該API可使對象起動一個能管理交易的交易管理器。每個參與交易的對象都向交易管理器註冊。

當交易發生時,如果某個參與的對象說,交易中的某個事件沒有發生,則此信息就被送回交易管理器。隨後,交易管理器就告訴所有參與的對象回滾(rool back)到前一個已知狀態。類似地,如果所有對象都完成了其交易的過程,則整個交易就向前進行。

Jini上的網路服務在Jini基礎結構和分散式編程之上,可提供便于分散式計算的網路服務。JavaSpace就是這樣的一種網路服務

相關詞條

相關搜尋

其它詞條