長久以來許多工程師們,都一直期盼著一個超大型的計算系統,這系統是由網路上許多機器,從超大型主機乃至嵌入在某些設備上的微小晶片,彼此相互合作而成。所有的工作,都可以在任何時間被分散到網路上的任何地方、任何種類的機器上去處理。這樣的系統有很好的彈性,并且可以藉由不斷地更新設備,來解決更多問題。
然而,我們 要一致的語言,以及更強的通訊協定( 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) 三方面所構成。如圖一所示 :
提供了如何讓網路上任何種類的資源加入聯盟的方式。
Jini的元件彼此溝通時所使用的機制。
定義了Jini 聯盟成員的使用權限。
用來展現聯盟中的所有成員,以及幫助使用者尋找網路資源,或者負責提供聯盟中的資源給使用者用。
負責治理物件被使用的時間。
是一個輕量級的(light-weight)、物件導向的( object-oriented)介面。負責治理分散式交易( transaction)的動作,如:roll back 、roll forward 等。
在分散式計算的環境中,必須確保程式執行的先後順序,利用事件的觀念可以幫助我們解決這個問題。
Jini提供了在分散式環境中尋找( look-up)、注冊( registration)、租借(leasing)等功能。而 JavaSpaces則負責治理分散式物件的處理程序( processing)、分享(sharing)、以及流通(migration )等。因此 Jini 與 JavaSpaces 彼此存在著相互合作的關系 。以軍隊作比喻, Jini扮演的是軍 官的角色,負責分派許多武器裝備給軍隊。JavaSpaces則扮演軍隊的角色,負則使用那些被分派的武器以執行命令。簡單的說, JavaSpaces就似乎網路上的一個市場,它提供一個簡單、快速、統一的介面,讓網路上分散的資源可以被分享、協調與流通 。
JavaSpaces是用 Java所發展的技術,并且以RMI實作其網路通訊的功能,一般應用在n-tiers 架構的中間層( middle tiers) 。JavaSpaces雖然能提供求者與供給者之間查詢與溝通的機制,但它并不是資料庫,而是以簡單的messaging system為基礎,進而提供更強大的功能。
新聞熱點
疑難解答