gembin

          OSGi, Eclipse Equinox, ECF, Virgo, Gemini, Apache Felix, Karaf, Aires, Camel, Eclipse RCP

          HBase, Hadoop, ZooKeeper, Cassandra

          Flex4, AS3, Swiz framework, GraniteDS, BlazeDS etc.

          There is nothing that software can't fix. Unfortunately, there is also nothing that software can't completely fuck up. That gap is called talent.

          About Me

           

          Jini

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

                Jini(發音為DJEE-nee,像“魔術師”的阿拉伯語)是一個新思想,Sun微系統稱作“自發網絡”。有了Jini體系結構,用戶就能夠把打印機,存儲設備,揚聲器和任何設備直接插入網絡,并且,網絡上的每臺電腦,設備和用戶將會知道新加入的和可用的設備。每個可插設備都會立即在網絡設備注冊處定義自己。當某人要使用或訪問這個資源時,他們的電腦將能夠從這個資源上下載必要的程序來與其通信。這樣一來,操作系統中就不再需要專門的設備支持軟件,即我們所說的設備驅動程序。操作系統將會通過網絡注冊獲悉所有可訪問設備。  

                Jini可以看作是繼Java編程語言之后邁向使網絡變為一臺大電腦的下一步。Jini承諾能使制造商生產可獨于操作系統(像Windows95)連入網 絡的設備。打印機只要裝上一個很小的,特殊用途的并很可能是嵌入式微芯片的操作系統,它就可以被插到網絡中并且立即被各種不同電腦的用戶所共享:例如 Windows,Macintosh,UNIX。移動設備可以被傳送并很方便地插入網絡,這樣一來,其他用戶就都可以使用這個設備了。  

                Jini是以Java技術為核心的分布式系統,它通過使用一個簡易的"即插即用"模型,能夠隨時改變硬件或者軟件的配置,從而提供了一個支持快速配置的分 布式計算環境。Jini的迷人之處在于它能夠使各種數字設備無需配置、安裝或者人工干預,就能夠在一個臨時的稱為服務聯盟(federations of services)的設備集合中共同工作。聯盟中的任何設備無論大小都可以自行管理,共同組成一個服務網絡,聯盟中的每一個成員都可以為其它成員提供資源 或服務,同時又可以從其它成員那里獲取自己所需的資源和服務,Jini提供一套完善的機制使得硬件設備或者軟件組件能夠隨時加入或者退出聯盟。

                Jini是一個主動的、響應式的分布式基礎結構,它提供了在分布式環境中進行服務的建立、查找、通訊和調用的一整套機制。Jini技術被設計成可以運用在 任何有能力連入網絡的器件上,而不論該器件運行什么軟件或運行在哪種硬件設備之上。Jini技術是以網絡器件中的一個構件的 面貌出現的,它為器件如何連入網絡、共享信息和與網絡進行互操作建立了一套規則,而同時又保持了對用戶的完全透明。Jini本身與平臺無關,采用它的器件 不再受到所用軟件、處理器、設備驅動器,或傳統網絡協議的制約,其唯一要求只是一個能夠運行Java字節碼的虛擬機.


                讓我們來看看Jini 是怎么做的。網路上的服務要能夠成為聯盟的一份子,不管是硬體服務也好、軟體服務也好,都必須嵌入Jini 的程式碼。此外,網路上還必須提供 JVM的 環境,才能執行Jini程式以獲得這些服務。Jini的程式碼是利用 SUN 公司所提供的 Jini package 撰寫而成。Jini package使用的語言是Java,并且包含了許多處理網路上資源的相關功能。例如:如何幫助網路服務尋找(discovery)、以及加入 (join)聯盟;或者幫助網路服務處理分散式的承租(leasing)、交易( transactions)等的問題。而這些網路服務彼此溝通時,所應用的技術是 RMI(Java Remote Method Invocation )。簡言之,網路上的服務藉由 Jini 所提供的介面,得以相互溝通、合作,來完成使用者的要求。


                任何帶支持Java的操作系統的設備都能夠被插到網絡中。(對很多設備來說,操作系統都比例如,Windows 2000小得多,因為它只提供了這個設備需要的函數。)當一個設備被插到Jini網絡中時,它立即被目錄服務層注冊為網絡的一員。它必要的程序對象被放在了JavaSpace層,這樣一來,當其他網絡成員要使用這個設備的時候就可以發現和下載它們。在JavaSpace中對象的實際通信是通過使用遠程方法調用(RMI)接口和層來實現的。支持boot,join,和discover協議的這層用于使設備,用戶,應用程序通告并自我注冊以及發現其他設備。


          一、Jini的體系結構

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

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

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

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

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

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

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

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

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

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

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

          二、JavaSpace

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

                JavaSpaces是用 Java所發展的技術,并且以RMI實作其網路通訊的功能,一般應用在n-tiers 架構的中間層middle tiers)[5] 。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等[4] 。

          三、Jini的應用

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

                想像一個劇情:一個使用者坐在公園里,想要透過掌上型電腦來使用網路上的印表機,但是他并沒有任何印表機的驅動程式。首先,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如何與眾不同?

                Jini具有創建龐大的電子設備網絡的潛力。用戶可使用標準計算機設備與之相連,或從網絡本身獲得這些服務(存儲器、存儲和計算)。因此,Jini在至少以下10個主要方面有別于傳統操作系統:
          它規模小。

                Jini的內核只需要一臺Java虛擬機,4KB常駐內存和一些計算環路(computing cycles)。Jini系統大約為600 KB。
          該系統完全基于對象。

                即,其組件包括可遠程執行的方法,如果某個方法與其執行環境不兼容(如浮點代碼),則它能自動裝載正確的方法。
          Jini的基本控制結構簡單。

                對象通過JavaSpaces (管理諸如對象處理、共享和移植等功能的系統)的基本操作--- read, write和take ---和標準Java RMI接口實現通信。
                所有服務均通過簡單的"租用"提供。

                租用是依賴 于時間的(到期后可延續),并允許對同一服務有多個租用。
                Jini包括標準Java安全性構造。
                因為環境具有分布式特點,所以這一點非常重要,因為在執行對象的地方必須具備安全性。
                借助JavaSpaces,Jini還包含可了交易 服務(兩階段提交)和持續性(即 persistency,最初 是 用Object Design公司的ObjectStore PSE Pro for Java )。
                在Jini內部,像安全策略等基本信息群均可訪問。這些信息群幾乎可以無限地匯集起來,放置在大型網絡中。
                Jini支持Java編程模式。Java服務和協議( JavaBeans等)仍可為廣大程序員使用。
                資源可免費授權(或近乎免費)。
                最重要的是,Jini提供插入即可執行的能力,新連接的設備能立刻得到網絡的認可(通過引導、join and discovery 協議),并可訪問任何已經授權的服務。Sun公司把這一特點比作標準電話網的撥號 ,并且正在考慮使用JavaTone品牌來描述整個環境。

          五、Jini為什么重要? mandate

                目前的網絡計算環境非常復雜。Windows 98和Windows NT Workstation等客戶機操作系統都包含1000萬到2000萬行代碼。這些系統的規模 和復雜性 要求使用昂貴的、資源密集型計算設備, 它們能夠隨各新版軟件的面市而不斷升級。

                在現有網絡中添加新的設備也是同樣的情況。雖然Microsoft公司在其操作系統上增加了plug-and-play (即插即用)功能,但對多數信息服務企業來說,新硬件的添加、配置和安裝設備驅動程序總是一個問題。

                對那些必須為成千上萬用戶維護穩定的計算環境的系統管理員 來說,對客戶機端軟件不斷 復制使 其工作負擔加重,且成本增加,同時也限制了能與網絡相連且有效使用的設備的范圍。

                Jini的重要性體現在,它可能 能夠做到:將服務的可用性擴展到更加廣泛的電子設備的同時,降低維護分布式計算環境的成本和復雜程度。

                降低企業網絡擁有成本是一個重要的問題。確實,在企業2000年問題解決以后,這個問題將成為各企業信息服務部門下一個10年的主要課題。

                除了降低成本以外,Jini還可能創建全新一代的網絡服務和產品。服務已經打破了本地計算機系統的界限,并將發展到與遠程設備功能相符,并且當功能受到限 制時可以從網絡上動態地提供。請想象一下這樣一種智能化家庭網絡吧:它控制著從電腦到烤面包器、從分布式超級計算機到能把呼叫自動傳輸給您(可能是您的計 算機、電話、電視和蜂窩設備)的電話網。Jini有可能使這一切及更多其它的應用成為現實。


          六、結論

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

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

          posted on 2010-03-08 17:25 gembin 閱讀(406) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           

          導航

          統計

          常用鏈接

          留言簿(6)

          隨筆分類(440)

          隨筆檔案(378)

          文章檔案(6)

          新聞檔案(1)

          相冊

          收藏夾(9)

          Adobe

          Android

          AS3

          Blog-Links

          Build

          Design Pattern

          Eclipse

          Favorite Links

          Flickr

          Game Dev

          HBase

          Identity Management

          IT resources

          JEE

          Language

          OpenID

          OSGi

          SOA

          Version Control

          最新隨筆

          搜索

          積分與排名

          最新評論

          閱讀排行榜

          評論排行榜

          free counters
          主站蜘蛛池模板: 巴塘县| 曲阳县| 会泽县| 抚州市| 观塘区| 根河市| 西华县| 聊城市| 南开区| 仁怀市| 景洪市| 清苑县| 平罗县| 淄博市| 万安县| 吉林省| 疏勒县| 石台县| 图木舒克市| 德钦县| 卢湾区| 伊吾县| 汾阳市| 卢氏县| 故城县| 南汇区| 株洲市| 玉门市| 邯郸市| 瓦房店市| 泰兴市| 山东省| 元谋县| 拜城县| 富平县| 拉萨市| 阳山县| 广汉市| 类乌齐县| 安化县| 洞头县|