<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > Jini在分布式嵌入式系統中的應用

Jini在分布式嵌入式系統中的應用

作者: 時(shí)間:2004-12-11 來(lái)源:網(wǎng)絡(luò ) 收藏
摘要:是一種基于Java的全新的構建的技術(shù),具有動(dòng)態(tài)的、自形成的和自管理的特性,可用于構建動(dòng)態(tài)的。本文首先介紹體系結構及特點(diǎn),然后闡述如何利用來(lái)開(kāi)發(fā)系統。其中包括Jini在構建分布式系統中的優(yōu)勢、嵌入式系統接入Jini網(wǎng)絡(luò )的方法和當前Jini在分布式嵌入式系統中的實(shí)例。

關(guān)鍵詞:Jini 分布式嵌入式系統 Jini代理體系結構 EIB

引 言

  嵌入式系統是指以為中心、以計算機技術(shù)為基礎、軟件硬件可裁剪,適用于對功能、可靠性、成本、體積、功耗嚴格要求的專(zhuān)用計算機系統。隨著(zhù)計算機技術(shù)和相關(guān)電子技術(shù)的發(fā)展,嵌入式系統的已經(jīng)深入到社會(huì )中的各個(gè)領(lǐng)域,如家用電器、移動(dòng)通信、航空、航天、醫療、工業(yè)控制和軍事等。在嵌入式系統的某些應用中,通常采用分布式體系結構,不同的嵌入式設備之間以某種方式相互連接、彼此協(xié)作,這就要求整個(gè)系統具有很好的靈活性和可靠性。

  Jini是一種全新的構建分布式系統的技術(shù),具有動(dòng)態(tài)的、自形成的和自管理的特性,它是一種真正的基于服務(wù)的分布式體系結構。另外,基于Java的Jini技術(shù)提高了分布式系統編程的抽象級別,簡(jiǎn)化了分布式系統的開(kāi)發(fā)。在構建分布式嵌入式系統的過(guò)程中利用Jini互聯(lián)技術(shù),不但可以降低系統開(kāi)發(fā)難度,實(shí)現嵌入式環(huán)境中基于服務(wù)級的互操作,而且還可提高整個(gè)系統的靈活性和可靠性。因此Jini技術(shù)推出后,人們很快就開(kāi)始關(guān)注如何將Jini應用于分布式嵌入式系統的開(kāi)發(fā)[1~3]。

1 Jini技術(shù)概述

1.1 Jini的體系結構

   Jini是1999年1月Sun公司發(fā)布的一種基于Java的全新的用于構建分布式系統的技術(shù),利用Jini可以使得軟件和硬件自發(fā)地結合起來(lái),形成一個(gè)Jini服務(wù)聯(lián)盟。

  一個(gè)Jini系統由下列組件組成[4]:

◇基礎設施組件――提供一個(gè)在分布式系統中建立起服務(wù)聯(lián)盟的框架;

◇編程模型組件――支持建立可靠的分布式服務(wù);

◇服務(wù)組件――可以成為Jini服務(wù)聯(lián)盟中的一部分并且向聯(lián)盟中的其它成員提供服務(wù)。

   盡管Jini系統由三部分組件組成,但是它們之間的界限是模糊的,組件之間緊密相連、彼此協(xié)作。Jini是建立在分布式系統、經(jīng)常動(dòng)態(tài)變化這一原則之上的。它的體系結構如圖1所示。

  服務(wù)是Jini體系結構中最重要的概念。它可以指任何實(shí)體提供的功能。其中實(shí)體可以是任何硬件設備、軟件或是硬件和軟件的結合體。服務(wù)通過(guò)查找服務(wù)注冊后就可以通過(guò)實(shí)現了Java遠程接口的一個(gè)接口來(lái)調用。用戶(hù)通過(guò)向查找服務(wù)請求并且下載服務(wù)的代理對象來(lái)和服務(wù)之間通信。查找服務(wù)自身也是一個(gè)服務(wù),能夠跟蹤每個(gè)服務(wù)并且向用戶(hù)提供服務(wù)的代理對象。

  Jini的體系結構建立在以下環(huán)境假設的基礎上[5]:

◇有一個(gè)網(wǎng)絡(luò )并且具有合理的網(wǎng)絡(luò )延遲,以不影響Jini系統的性能(要求網(wǎng)絡(luò )底層使用的通信協(xié)議是TCP和UDP[3]);

◇每個(gè)支持Jini的設備具有一定內存和處理能力;

◇每個(gè)設備都需要裝備一個(gè)Java虛擬機。

任何實(shí)體都可以成為服務(wù)提供者(即服務(wù))或服務(wù)請求者(即用戶(hù))。當一個(gè)實(shí)體作為一個(gè)服務(wù)的提供者時(shí),對它具有如下的要求:

◇為實(shí)現發(fā)現和加入查找服務(wù)的功能,服務(wù)提供者必須擁有網(wǎng)絡(luò )功能;

◇為了能夠下載一個(gè)查找服務(wù)的代理,需要一個(gè)Java虛擬機,并且虛擬機支持標準的Java和RMI;

◇為保存與注冊相關(guān)的信息,需要有存儲功能;

◇為了實(shí)現以上的各種計算,需要有一個(gè)處理器。

同樣,一個(gè)服務(wù)請求者的實(shí)體具有如下要求:

◇為實(shí)現發(fā)現查找服務(wù)的功能,服務(wù)請求者必須支持網(wǎng)絡(luò );

◇為了下載并且服務(wù)對象代理,需要一個(gè)Java虛擬機和存儲功能;

◇需要實(shí)現計算的處理器。

因此,一個(gè)實(shí)體要接入Jini網(wǎng)絡(luò )成為服務(wù)提供者或是服務(wù)請求者,它自身需要具備一定的內存和處理能力,以及網(wǎng)絡(luò )和Java功能,稱(chēng)滿(mǎn)足這些要求的實(shí)體是支持Jini的。

1.2 Jini技術(shù)的特點(diǎn)

  Jini的核心功能是提供一種基于網(wǎng)絡(luò )動(dòng)態(tài)的、自形成的和自管理的服務(wù)聯(lián)盟,具有如下特點(diǎn)。

 ?、?Jini是即插即用的:服務(wù)提供者加入Jini網(wǎng)絡(luò )后,通過(guò)查找服務(wù)注冊后即可向使用者提供服務(wù);服務(wù)的使用者加入Jini網(wǎng)絡(luò )后即可通過(guò)查找服務(wù)使用相應的服務(wù),之后離開(kāi)。

 ?、?使用戶(hù)可以很容易地訪(fǎng)問(wèn)網(wǎng)絡(luò )中任何位置的資源,即使是用戶(hù)在網(wǎng)絡(luò )中的位置經(jīng)常變化。

 ?、?Jini以自發(fā)的方式實(shí)現實(shí)體間的互聯(lián):任何實(shí)體之間可以相互發(fā)現和加入Jini網(wǎng)絡(luò )來(lái)組成一個(gè)Jini聯(lián)盟。

 ?、?Jini消除了硬件和軟件之間的差別:Jini把硬件和軟件都抽象為服務(wù),是一種真正的基于服務(wù)的體系結構。

 ?、?Jini是一種分布式計算框架,使得分布式編程變得容易:Jini將Java應用環(huán)境由單獨的Java虛擬機擴展到一個(gè)Java虛擬機網(wǎng)絡(luò );Java虛擬機屏蔽了不同機器平臺和操作系統的異構性,降低了分布式編程的難度。

1.3 利用Jini開(kāi)發(fā)分布式嵌入式系統

  近些年來(lái)隨著(zhù)計算機網(wǎng)絡(luò )技術(shù)的不斷發(fā)展,分布式系統已經(jīng)得到了越來(lái)越廣泛的研究和應用,分布式計算成為實(shí)現高性能和高可靠性計算的一種新的計算模型[5]。在嵌入式應用領(lǐng)域中采用分布式體系結構,一方面可以實(shí)現嵌入式環(huán)境中的分布式計算(例如一個(gè)系統本身可能是由分布在不同位置的多個(gè)嵌入式系統相互連接構成的,如電梯、汽車(chē)等);另一方面可以在可靠性要求較高的嵌入式應用中實(shí)現容錯計算。

  Jini可以把分布式嵌入式系統變成動(dòng)態(tài)的、靈活的和易管理的系統。Jini的自形成特性提供了一種自動(dòng)相互發(fā)現和加入Jini網(wǎng)絡(luò )來(lái)組成服務(wù)聯(lián)盟的能力,可以使各種嵌入式設備以一種簡(jiǎn)捷的方式實(shí)現集成和互操作。Jini的動(dòng)態(tài)性使得每個(gè)嵌入式設備可以靈活地加入和離開(kāi)Jini服務(wù)聯(lián)盟。這樣,當一些嵌入式設備(如移動(dòng)設備、PDA等)在需要使用服務(wù)時(shí),可以建立暫時(shí)性的連接加入Jini聯(lián)盟;服務(wù)完成時(shí),離開(kāi)。在不需要人為參與管理的情況下,整個(gè)系統仍具有良好的可伸縮性。

  另外,Jini是基于Java的。Java虛擬機屏蔽了不同機器平臺和操作系統的異構性,簡(jiǎn)化了嵌入式系統的編程;而且Jini將Java的應用環(huán)境由單獨的Java虛擬機擴展到一個(gè)Java虛擬機網(wǎng)絡(luò ),為實(shí)現分布式計算提供了一個(gè)良好的計算平臺。它提高了分布式系統編程的抽象級別,使得用戶(hù)只需在高層的對象接口上進(jìn)行編程,而不必處理底層的通信協(xié)議,簡(jiǎn)化了分布式系統的開(kāi)發(fā)。

  因此,Jini為開(kāi)發(fā)分布式嵌入式系統提供了一種新的解決方案。但是,要把Jini應用到嵌入式領(lǐng)域中也存在一些需要解決的問(wèn)題,下面將進(jìn)行說(shuō)明。

2 嵌入式系統接入Jini網(wǎng)絡(luò )的方法

  Jini并不是專(zhuān)門(mén)為開(kāi)發(fā)嵌入式應用而設計的。由上面的分析可知,一個(gè)支持Jini的設備必須具備一定的處理能力、內存、網(wǎng)絡(luò )功能和Java功能;而通常嵌入式系統對資源是嚴格限制的,完全支持Jini的嵌入式設備實(shí)際上并不多。另外,一些分布式嵌入式應用中底層的通信協(xié)議也不支持Jini。

  如何使嵌入式系統能夠加入到Jini網(wǎng)絡(luò ),成為在分布式嵌入式應用領(lǐng)域中應用Jini技術(shù)的難點(diǎn)。結合現有的技術(shù),目前主要有三種解決方法:一種是提高嵌入式設備的資源,如采用32位的處理器、2MB以上的存儲空間和支持網(wǎng)絡(luò )連接,這樣的嵌入式系統可以完全支持Jini;另外一種方法是采用Jini代理體系結構,不要求設備自身支持Java和Jini技術(shù);第三種方法是將Jini進(jìn)行移植。

2.1 J2ME與Jini技術(shù)相結合

   繼Java技術(shù)在桌面系統和后端服務(wù)器領(lǐng)域取得巨大成功后,為了將Java的應用擴展到消費類(lèi)電子設備和嵌入式設備,Sun推出了Java 2 平臺Micro Edition(J2ME)。它包括兩個(gè)基本的配置集:連接設備配置集(CDC ,Connected Device Configuration)和連接有限設備配置集(CLDC ,Connected Limited Device Configuration)。CDC面向的是具有更強計算能力的嵌入式設備;CLDC面向的是資源有限的消費類(lèi)電子設備。對應于CDC和CLDC兩個(gè)不同的配置集,可以將J2ME設備分為兩類(lèi):低端信息設備和高端信息設備。J2ME設備分類(lèi)如表1所列。

表1 J2ME設備分類(lèi)表

 低端信息設備高端信息設備
典型設備尋呼機、蜂窩式電話(huà)、移動(dòng)式收款機終端電視機頂盒、汽車(chē)導航系統、Web電話(huà)、網(wǎng)絡(luò )路由器
處理器/位16/3232
存儲特性/B256K~512K2M~16M
網(wǎng)絡(luò )連接特性帶寬較窄,且不一定是基于TCP/TP協(xié)議的通常具有持續的TCP/IP連接

  這兩種不同設備要求的J2ME的運行環(huán)境也不同。低端信息設備比較適合使用CLDC中定義的KVM,這是一款專(zhuān)用的Java虛擬機,是以小型的資源有限的消費類(lèi)設備為目標平臺的;而高端信息設備適合使用CDC中定義的CVM,它與常規的JVM是完全兼容的。

  J2ME CDC可以使嵌入式設備具備Java 2的功能?;贘2ME CDC的RMI可選包完全滿(mǎn)足實(shí)現Jini的技術(shù)需求,因此可以直接加入Jini網(wǎng)絡(luò )。

  對于那些J2ME CLDC的設備或是根本不支持Java和Jini的嵌入式設備來(lái)說(shuō),Jini代理體系結構(Jini Surrogate Architecture)使其接入Jini網(wǎng)絡(luò )成為可能。

2.2 Jini代理體系結構

  Jini代理體系結構是由Sun公司的工程師Jim Waldo提出的,現在已成為www.jini.org站點(diǎn)中一個(gè)開(kāi)放源代碼的項目。開(kāi)發(fā)Jini代理的主要目標是使那些資源有限的設備能夠完全參與到Jini網(wǎng)絡(luò )中。

  Jini代理體系結構由下列組件構成:可宿主機(host-capable machine)、代理宿主(Surrogate Host)、宿主資源(Host Resources)和相互連接(Interconnect)。組件之間的關(guān)系如圖2所示[6]。

  設備是指那些不能夠加入Jini網(wǎng)絡(luò )的任何硬件設備或者軟件;可宿主機具備執行Java語(yǔ)言編寫(xiě)的,用于代表設備的代碼,并且能夠為執行這些Java代碼提供所需的資源;代理宿主是駐留在可宿主機上,為執行代理體系結構的組件提供Java運行環(huán)境的框架,除了提供計算資源、運行環(huán)境和生命周期管理外,它還提供宿主的其它資源來(lái)幫助體系結構中的組件。

  可宿主機在Jini網(wǎng)絡(luò )和設備兩者之間建立連接,在Jini網(wǎng)絡(luò )中充當這個(gè)設備的代言人。設備和代理宿主之間可以用有線(xiàn)或無(wú)線(xiàn)的方式相互連接。連接也可以采用任何的協(xié)議,有線(xiàn)連接如TCP/IP、RS-232、USB和IEEE1394等;無(wú)線(xiàn)連接可以采用藍牙協(xié)議。

  這樣,Jini代理體系結構通過(guò)降低對設備資源的要求,實(shí)現了小型設備完全參與到Jini網(wǎng)絡(luò )中的目標,使得那些資源有限的小型設備可以充分利用Jini技術(shù)的優(yōu)勢。代理通過(guò)一個(gè)運行Java 2虛擬機支持Jini技術(shù)的宿主代理系統,使得本來(lái)需要運行在用戶(hù)中的服務(wù)代理對象可以在代理的環(huán)境中運行。任何小型設備與代理宿主通過(guò)相互連接進(jìn)行對話(huà),從而成為一個(gè)完全的支持Jini的用戶(hù)或服務(wù),且仍保持Jini即插即用的特性。

2.3 移植Jini

  Jini體系結構假設網(wǎng)絡(luò )底層使用的通信協(xié)議是TCP和UDP,而一些分布式嵌入式系統中通常采用的是實(shí)時(shí)、可靠的數據傳輸協(xié)議,如CAN、TTP等。為了在這樣的應用領(lǐng)域中使用Jini技術(shù),可以考慮將Jini進(jìn)行移植。RoSES(Robust Self-Configuring Embedded Systems)[3]是卡耐基梅隆大學(xué)通用發(fā)動(dòng)機協(xié)作實(shí)驗室的一個(gè)研究項目。目的是尋找一種建立靈活的、健壯的和可維護的分布式嵌入式系統的通用方法,在研究過(guò)程中嘗試把Jini移植到CAN上。移植Jini的方法也可以解決嵌入式系統接入Jini網(wǎng)絡(luò )的問(wèn)題,但其中的工作量相對較大。

3 應用實(shí)例

  Jini在開(kāi)發(fā)分布式嵌入式系統方面已經(jīng)做了很多的工作[1~3]。下面介紹一下Jini在EIB(European Installation Bus)中的應用[1,2]。

  現場(chǎng)總線(xiàn)分為多種,不同廠(chǎng)商的現場(chǎng)總線(xiàn)產(chǎn)品是不兼容的。為了解決這一問(wèn)題,EIBA(European Installation Bus Association)提出了EIB。EIB代表了最新的現場(chǎng)總線(xiàn)技術(shù),主要應用領(lǐng)域是家庭和建筑物的自動(dòng)化。EIB網(wǎng)絡(luò )的拓撲結構可以是線(xiàn)形、星形和樹(shù)形。

  EIB網(wǎng)絡(luò )中每個(gè)節點(diǎn)是一個(gè)EIB設備。一個(gè)EIB系統中最大可以安裝60 000個(gè)設備。每個(gè)EIB設備中有一個(gè)嵌入式微控制器用來(lái)運行通信協(xié)議。它從總線(xiàn)上接收數據后傳送給應用程序,或是把應用程序數據傳給其它設備。每個(gè)EIB設備通過(guò)LC(Line Connector,具有路由功能)連接到主線(xiàn)(Main Line)上,BC(Bus Coupling)向特定應用的硬件(如傳感器和作動(dòng)器)提供了定義良好的接口。

  EIB中的設備(例如傳感器)都是資源非常有限的設備,很難直接支持Jini,而且EIB系統使用的底層通信協(xié)議也不支持Jini。因此在實(shí)現中,采用Jini代理體系結構來(lái)使EIB設備接入Jini網(wǎng)絡(luò )。系統結構如圖3所示[2]。

  EIB代理(EIB Agent)是EIB設備在Jini網(wǎng)絡(luò )中映射的服務(wù)代理。它向服務(wù)的使用者(Service User)提供EIB設備的功能;EIB服務(wù)器(EIB Server)由Jini數據庫(Jini Database)和EIB控制器(EIB Controller)兩個(gè)模塊組成。它負責管理代理宿主機與現場(chǎng)總線(xiàn)之間的連接,其中Jini數據庫是一個(gè)存放EIB設備和相應的EIB代理之間的映射關(guān)系的數據庫。EIB代理和EIB服務(wù)器運行在代理宿主機上。

  這樣,在EIB系統中使用Jini技術(shù)會(huì )帶來(lái)如下好處:

◇EIB系統中,每個(gè)設備提供的功能都可以映射成Jini服務(wù),這樣,不僅可以被其它的現場(chǎng)總線(xiàn)使用,而且還可以被支持Jini的任何設備(如PDA)來(lái)訪(fǎng)問(wèn);

◇Jini簡(jiǎn)化了網(wǎng)絡(luò )編程,并且Java提高了系統的安全性;

◇EIB網(wǎng)絡(luò )可以連接到Internet,這樣系統變成了開(kāi)放的,提高了EIB設備的可訪(fǎng)問(wèn)性;

◇Jini使EIB系統中的設備可以與家用消費電器和自動(dòng)化設備通信,增強EIB設備的功能;

◇Jini提供了一種獨立于廠(chǎng)商的服務(wù)平臺,使得不同廠(chǎng)商的現場(chǎng)總線(xiàn)產(chǎn)品相互兼容。

  應當指出的是,Jini并不是完全適用于實(shí)時(shí)性要求高的嵌入式應用。RoSES的研究項目中,將Jini移植到了CAN上;但實(shí)驗結果表明,Jini的實(shí)時(shí)性能并不令人滿(mǎn)意。

4 總 結

  在構建分布式嵌入式系統的過(guò)程中利用Jini技術(shù),不但可以降低系統的開(kāi)發(fā)難度、實(shí)現嵌入式環(huán)境中基于服務(wù)級的互操作,而且可使系統具有很好的靈活性和可靠性。同時(shí),在分布式嵌入式領(lǐng)域中使用Jini技術(shù)也存在一些需要解決的問(wèn)題,包括如何使得嵌入式系統支持Jini以及Jini的實(shí)時(shí)性等。

linux操作系統文章專(zhuān)題:linux操作系統詳解(linux不再難懂)


關(guān)鍵詞: 應用 系統 嵌入式 分布式 Jini

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>