top
Loading...
初識JINI技術
一、前言

長久以來許多工程師們,都一直期盼著一個超大型的計算系統,這系統是由網路上許多機器,從超大型主機乃至嵌入在某些設備上的微小晶片,彼此相互合作而成。所有的工作,都可以在任何時間被分散到網路上的任何地方、任何種類的機器上去處理。這樣的系統有很好的彈性,并且可以藉由不斷地更新設備,來解決更多問題。

然而,我們要一致的語言,以及更強的通訊協定( superprotocols)等,讓網路上眾多繁雜的成員,能彼此順利地溝通。但是就目前的情況,要達到這樣的目的很難,因此我們可以考慮把一種特殊的程式碼(genetic code)嵌入到許多軟硬體之服務中,使得網路上的成員可以輕易的相互分享彼此資源,這就是 Jini 所要達成的目標。

Jini 是由 SUN 公司 R&D 的Bill Joy 所提出的一項技術。我們可以藉著使用Jini,創造出一個富有彈性、容易管理、且可隨時隨地使用各種服務的網路計算環境。為了讓使用者知道網路上有哪些服務可被使用,我們必須建立一個聯盟( federation ),讓網路上的服務主動加入。當有某個服務加入聯盟時,也等於同時向整個網路告知:「我可以被使用,有誰要我的服務?」。使用者透過聯盟,可以得知有哪些服務可以使用。然而,我們要如何才能很簡單、很輕易地使用這些服務關於這個問題,也就是 Jini 的工作重點之一。

讓我們來看看Jini 是怎堋做的。網路上的服務要能夠成為聯盟的一份子,不管是硬體服務也好、軟體服務也好,都必須嵌入Jini 的程式碼。此外,網路上還必須提供 JVM的環境,才能執行Jini程式以獲得這些服務。

Jini的程式碼是利用 SUN 公司所提供的 Jini package 撰寫而成。Jini package使用的語言是Java,并且包含了許多處理網路上資源的相關功能。例如:如何幫助網路服務尋找(discovery)、以及加入(join)聯盟;或者幫助網路服務處理分散式的承租(leasing)、交易( transactions)等的問題。而這些網路服務彼此溝通時,所應用的技術是 RMI(Java Remote Method Invocation )。簡言之,網路上的服務藉由 Jini 所提供的介面,得以相互溝通、合作,來完成使用者的

二、體系結構

Jini system 是由基礎建設( infrastructure)、程式設計模型( programming model )、服務( services) 三方面所構成。如圖一所示 :



  • 基礎建設( infrastructure)
Jini 基礎建設的核心包含以下幾個部分:

  1. Discovery Protocol:

    提供了如何讓網路上任何種類的資源加入聯盟的方式。

  2. eXtended RMI :

    Jini的元件彼此溝通時所使用的機制。

  3. Distributed Security:

    定義了Jini 聯盟成員的使用權限。

  4. Lookup Service:

    用來展現聯盟中的所有成員,以及幫助使用者尋找網路資源,或者負責提供聯盟中的資源給使用者用。

  • 程式設計模型( programming model )
Jini 提供一些分散式的程式設計模型,而 Jini 的基礎構造,就是利用這些模型來組合。模型所提供的介面(Interface),包括以下幾個類型:

  1. Leasing Interface:

    負責管理物件被使用的時間。

  2. Two Phase Commit Interface :

    是一個輕量級的(light-weight)、物件導向的( object-oriented)介面。負責管理分散式交易( transaction)的動作,如:roll back 、roll forward 等。

  3. Events Interface:

    在分散式計算的環境中,必須確保程式執行的先後順序,利用事件的觀念可以幫助我們解決這個問題。

  • 服務(services)
有了Jini的架構以及程式設計模型後,我們可以利用這些技術來設計管理網路資源的服務,以促進分散式計算的發展。例如:JavaSpaces、Two Phase Commit Manager。
三、JavaSpace

Jini提供了在分散式環境中尋找( look-up)、注冊( registration)、租借(leasing)等功能。而 JavaSpaces則負責管理分散式物件的處理程序( processing)、分享(sharing)、以及流通(migration )等。因此 Jini 與 JavaSpaces 彼此存在著相互合作的關系 。以軍隊作比喻, Jini扮演的是軍官的角色,負責分派許多武器裝備給軍隊。JavaSpaces則扮演軍隊的角色,負則使用那些被分派的武器以執行命令。簡單的說, JavaSpaces就好像網路上的一個市場,它提供一個簡單、快速、統一的介面,讓網路上分散的資源可以被分享、協調與流通 。

JavaSpaces是用 Java所發展的技術,并且以RMI實作其網路通訊的功能,一般應用在n-tiers 架構的中間層( middle tiers) 。JavaSpaces雖然能提供求者與供應者之間查詢與溝通的機制,但它并不是資料庫,而是以簡單的messaging system為基礎,進而提供更強大的功能。

除了Jini之外, JavaSpaces技術也可被應用在其它系統與服務中,如: 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等。

四、應用

Jini技術有一個主要目的:讓許多電子產品可以容易的被加入至網路上,也就是隨插即用(plug-and-play) 。任何物件,如: DVD、CD 、VCR、桌上型電腦、可攜式電腦、印表機、掃描器、磁碟機、播放器、電話、電視機、警報系統、醫療器材、空調系統、廚具、汽車引擎、汽車的丁器板等,只要利用Jini技術,就可以結合各類的電子產品成為網路上的資源服務 ,而使用者只透過電話或無限通訊器材就能使用這些服務。

想像一個劇情:一個使用者坐在公園里,想要透過掌上型電腦來使用網路上的印表機,但是他并沒有任何印表機的驅動程式。首先,Jini會啟動 Lookup服務(類似 JavaSpaces),到聯盟(federation )中搜尋符合使用者條件的印表機。找到之後,Jini會跟那臺印表機溝通,取得它的驅動程式,并且傳至使用者的掌上型電腦。使用者於是可以輕易的使用網路上的印表機。

我們也可以把家中的電器用品都結合到網路上,這樣可以讓我們在任何時間、任何地點來控制家里的電器,這將是多堋令人期待的一個理想。

目前已經有許多公司正在發展相關的技術,這些公司包括Axis、Canon、 Computer Associates、Datek 、Enocanto、Epson 、Ericsson、FedEx 、Mitsubishi、 Norwest Mortgage 、Novell、ODI、 Oki、Quantum、 Salomon Brother、 Seagate、以及 Toshiba等。

五、結論

Jini讓許多電器設備、網路服務結成聯盟( federation)。 Jini的最上層以 Lookup機制為基礎的目錄服務( directory service ),讓許多含有 Jini技術的資源,來注冊以及被公布於網路上。下一層則利用JavaSpaces 技術來管理聯盟的資源,以讓使用者或其他應用程式使用資源。底層則是以RMI為基礎的協定,用來規范物件之間在網路上的溝通。

如同SUN公司所說:「網路就是電腦(The network is the computer)」。網路的出現提供了無限的計算資源,讓我們可望達成一個超大型的計算系統。Java技術使得分散式計算變得容易可行,Jini 則實現網路就是一個超大型電腦的理想。

作者:http://www.zhujiangroad.com
來源:http://www.zhujiangroad.com
北斗有巢氏 有巢氏北斗