技術(shù)頻道

娓娓工業(yè)
您現(xiàn)在的位置: 中國(guó)傳動(dòng)網(wǎng) > 技術(shù)頻道 > 技術(shù)百科 > 嵌入式系統(tǒng)高級(jí)編程語言技術(shù)分析

嵌入式系統(tǒng)高級(jí)編程語言技術(shù)分析

時(shí)間:2007-12-27 09:44:00來源:shixiang

導(dǎo)語:?從嵌入式系統(tǒng)高級(jí)編程語言特點(diǎn)入手,對(duì)高級(jí)語言的基本性能作簡(jiǎn)要總結(jié)
摘 要: 隨著嵌入式技術(shù)的普及推廣,嵌入式系統(tǒng)高級(jí)語言編程勢(shì)在必行。然而,人們?cè)谶x擇語言系統(tǒng)時(shí)往往具有很大的隨意性。對(duì)價(jià)格、獲取方便性等因素考慮較多,而對(duì)語言本身的技術(shù)因素考慮較少。文章從嵌入式系統(tǒng)高級(jí)編程語言特點(diǎn)入手,對(duì)高級(jí)語言的基本性能作簡(jiǎn)要總結(jié),對(duì)目前比較流行的幾種嵌入式系統(tǒng)編程語言——Ada、C/C++、Modula-2的基本技術(shù)性能進(jìn)行分析比較;對(duì)Java作簡(jiǎn)要介紹。 關(guān)鍵詞:嵌入式系統(tǒng) 高級(jí)語言 基本性能 編程特點(diǎn) 一、嵌入式系統(tǒng)高級(jí)語言編程特點(diǎn) 隨著嵌入式系統(tǒng)應(yīng)用范圍的不斷擴(kuò)大和嵌入式實(shí)時(shí)操作系統(tǒng)RTOS(Real Time Operating System)的廣泛使用,高級(jí)語言編程已是嵌入式系統(tǒng)設(shè)計(jì)的必然趨勢(shì)。因?yàn)閰R編語言和具體的微處理器的硬件結(jié)構(gòu)密切相關(guān),移植性較差,既不宜在復(fù)雜系統(tǒng)中使用,又不便于實(shí)現(xiàn)軟件重用;而高級(jí)語言具有良好的通用性和豐富的軟件支持,便于推廣,易于維護(hù)。因此高級(jí)語言編程具有許多優(yōu)勢(shì)。 (1) 通用性強(qiáng)。隨著微處理器技術(shù)的不斷發(fā)展,其功能越來越具體,種類越來越多,而不同種類的微處理器都有自己專用的匯編語言。這就為系統(tǒng)開發(fā)者設(shè)置了一個(gè)巨大的障礙,使得系統(tǒng)編程更加困難,軟件重用無法實(shí)現(xiàn);而高級(jí)語言一般和具體機(jī)器的硬件結(jié)構(gòu)聯(lián)系較少,比較流行的高級(jí)語言對(duì)多數(shù)微處理器都有良好的支持,通用性較好。 (2) 容易編程。隨著嵌入式系統(tǒng)應(yīng)用范圍的不斷擴(kuò)大和應(yīng)用層面的不斷深入,系統(tǒng)規(guī)模越來越大,結(jié)構(gòu)越來越復(fù)雜,設(shè)計(jì)變得越來越困難。一個(gè)系統(tǒng)內(nèi)有多種微處理器已是常見的事情。這時(shí),要用匯編語言編程不僅要求編程人員要對(duì)所有微處理器的匯編語言都了如指掌,而且隨著任務(wù)復(fù)雜程度的不斷提高,用匯編語言實(shí)現(xiàn)規(guī)模較大的任務(wù)難度極大;而高級(jí)語言的語意層次較高,且有豐富的程序庫(kù)支持,因此,編寫較復(fù)雜的程序相對(duì)簡(jiǎn)單。使用高級(jí)語言編程,不僅能夠加快系統(tǒng)開發(fā)進(jìn)程,節(jié)省大量時(shí)間,同時(shí)也有利于系統(tǒng)調(diào)試及維護(hù)工作。 (3) 容易閱讀。由于匯編語言的語意層次較低,在閱讀匯編語言程序時(shí),往往要花費(fèi)大量精力分析"細(xì)節(jié)"問題,如為什么把一個(gè)數(shù)據(jù)傳送給一個(gè)寄存器,為什么把某個(gè)標(biāo)志位清零等。當(dāng)把注意力放在這些"細(xì)節(jié)"上的時(shí)候,往往又把程序的主線忘記了。因此,匯編語言程序不僅難寫,而且難讀。采用高級(jí)語言就可以很好地解決這些問題。因?yàn)楦呒?jí)語言的語意層次較高,表達(dá)方式更接近人們?nèi)粘5乃季S方法,一些數(shù)學(xué)表達(dá)式可以直接用一條語句表達(dá),程序的思路更加清晰、簡(jiǎn)捷。因此,程序也就容易閱讀。 (4) 可移植性好。由于匯編語言和具體的微處理器密切相關(guān),為某個(gè)微處理器設(shè)計(jì)的程序不能直接移植到另一個(gè)不同種類的微處理器上使用,因此,移植性差;而高級(jí)語言對(duì)所有微處理器都是通用的,因此,程序可以在不同的微處理器上運(yùn)行,可移植性較好。這是實(shí)現(xiàn)軟件重用的基礎(chǔ)。 (5) 可維護(hù)性好。高級(jí)語言程序往往是模塊化設(shè)計(jì),各個(gè)模塊之間的接口是固定的。因此,當(dāng)系統(tǒng)出現(xiàn)問題時(shí),可以很快地將問題定位到某個(gè)模塊內(nèi),并盡快得到解決。另外,模塊化設(shè)計(jì)也便于系統(tǒng)功能的擴(kuò)充和升級(jí)。 (6) 直接支持中斷管理。中斷是嵌入式系統(tǒng)最重要也是最常用的信息交換方式,因此中斷系統(tǒng)是否靈活,中斷功能是否強(qiáng)大對(duì)系統(tǒng)的性能影響極大。在高級(jí)語言中,一般都有強(qiáng)大的中斷管理機(jī)制,以便構(gòu)建高效靈活的中斷系統(tǒng);而在匯編語言中,一般要由程序設(shè)計(jì)者自己編程來進(jìn)行中斷管理。這不僅增加了編程的難度,而且效果也不一定好。 (7) 支持軟件重用。由于匯編語言的可移植性極差,使得其軟件重用性嚴(yán)重受阻;而高級(jí)語言具有較好的通用性和可移植性,這就使得高級(jí)語言程序可以在不同時(shí)間、不同地點(diǎn)、不同系統(tǒng)、不同人員之間分享,實(shí)現(xiàn)軟件重用。這不僅可以提高產(chǎn)品質(zhì)量,縮短開發(fā)周期,降低產(chǎn)品成本,而且還可以使軟件開發(fā)走上正規(guī)化、產(chǎn)業(yè)化的道路[1]。 二、嵌入式系統(tǒng)高級(jí)編程語言概述   在過去40多年,人們開發(fā)研制了幾十種計(jì)算機(jī)語言,但是僅有少數(shù)幾種得到了廣泛應(yīng)用。這就提示我們選擇一個(gè)合適的語言系統(tǒng)并不容易。在小型嵌入式系統(tǒng)中,通常只有一個(gè)微處理器,并且其主要工作往往不是計(jì)算,而是控制,應(yīng)選擇控制能力較強(qiáng)的語言。在大型嵌入式系統(tǒng)中,往往會(huì)有多個(gè)微處理器或計(jì)算機(jī)并行工作,構(gòu)成多機(jī)系統(tǒng)。它們中有些工作于真正的嵌入式模式,有的則為純粹的信息處理。此時(shí),對(duì)系統(tǒng)的編程就變得相當(dāng)復(fù)雜,不同的任務(wù)可能會(huì)用不同的語言編程。因此,大型系統(tǒng)往往是一個(gè)多語言系統(tǒng)。對(duì)于這種"混合"系統(tǒng)的語言選擇更應(yīng)慎重考慮。   目前,在嵌入式系統(tǒng)開發(fā)過程中使用的語言種類很多,但僅有少數(shù)幾種語言得到了比較廣泛的應(yīng)用。本文選擇了Ada、C/C++、Modula-2作為討論對(duì)象,并對(duì)Java作簡(jiǎn)要介紹。   Ada語言是20世紀(jì)70年代美國(guó)國(guó)防部開發(fā)并投入使用的功能強(qiáng)大的通用系統(tǒng)開發(fā)語言,最初為Ada83。它支持模塊化、獨(dú)立編譯、協(xié)處理等功能。其可靠性、可維護(hù)性、可讀性都是相當(dāng)好的。后來,為了更好地支持OOP(Object-Oriented Programming),對(duì)其進(jìn)行了改進(jìn),形成了目前廣泛使用的Ada95。使用Ada語言可以大大改善系統(tǒng)的清晰性、可靠性、可維護(hù)性等性能指標(biāo)[2,3]。它是美國(guó)國(guó)防部指定的唯一一種可用于軍用系統(tǒng)開發(fā)的語言。   C語言是由Dennis Richie于1972年在AT&Bell實(shí)驗(yàn)室研究成功并投入使用的系統(tǒng)編程語言。其設(shè)計(jì)目標(biāo)是使C既具有匯編語言的效率,又具有高級(jí)語言的易編程性。其最具代表性的應(yīng)用是UNIX操作系統(tǒng)。從20世紀(jì)80年代中期C語言涉足實(shí)時(shí)系統(tǒng)后,受到了普遍歡迎。目前是使用最廣泛的嵌入式系統(tǒng)編程語言。C++是由Bjarne Stroustrup 于1995年在Bell實(shí)驗(yàn)室研制成功并投入使用的。C++在支持現(xiàn)代軟件工程、OOP、結(jié)構(gòu)化等方面對(duì)C進(jìn)行了卓有成效的改進(jìn),但在程序代碼容量、執(zhí)行速度、程序復(fù)雜程度等方面比C語言程序性能差一些[2,4,5]。   Modula-2是由Nicklans Wirth在70年代后期根據(jù)Pascal 和Modula開發(fā)的系統(tǒng)設(shè)計(jì)語言。其主要目標(biāo)是在模塊化、系統(tǒng)編程、協(xié)同處理等方面對(duì)Pascal 進(jìn)行改進(jìn)。Modula-2具有很強(qiáng)的類型檢查能力和豐富的低級(jí)功能支持。因此,可用它設(shè)計(jì)一個(gè)完整的實(shí)時(shí)程序而不用匯編語言的支持。Modula-3是1988年由DEC(Digital Equipment Company)和ORC(Olivetti Research Center)根據(jù)Modula-2開發(fā)研制并投入使用的系統(tǒng)開發(fā)語言。目標(biāo)是設(shè)計(jì)一個(gè)功能強(qiáng)大但結(jié)構(gòu)簡(jiǎn)單的通用編程語言。它在協(xié)同處理、OOP、自動(dòng)垃圾收集以及對(duì)C語言和UNIX的支持等方面對(duì)Modula-2進(jìn)行了改進(jìn)[6]。   考察一門語言是否適用,需要從多個(gè)方面進(jìn)行考慮。不同語言,都有自己的特色。很難將其全面進(jìn)行比較。另外,任何一門語言的運(yùn)行特性都與運(yùn)行環(huán)境密切相關(guān),因此,選擇語言時(shí),應(yīng)綜合考慮。為敘述方便,我們把語言的性能劃分為基本性能和運(yùn)行性能兩個(gè)方面進(jìn)行分析。  ?。?) 基本性能   一門語言的基本性能主要是指語言本身的固有特性,或稱靜態(tài)特性,即構(gòu)成語言的組成部分所具有的特性。它不僅決定著語言的可用性、適用性、可靠性等,而且對(duì)應(yīng)用程序的開發(fā)產(chǎn)量、便攜性、可維護(hù)性、安全性也有一定影響。它是一門語言的核心和基石??疾檎Z言的基本性能主要從以下幾個(gè)方面入手:與匯編語言/機(jī)器語言的接口,直接尋址,對(duì)硬件的控制,位操作,中斷處理,指針操作,數(shù)據(jù)類型的支持及檢測(cè),控制結(jié)構(gòu)的支持及檢測(cè),模塊化支持,獨(dú)立編譯支持,任務(wù)結(jié)構(gòu)支持,異常事件處理,數(shù)學(xué)模型支持,語法和整體結(jié)構(gòu),多任務(wù)支持,標(biāo)準(zhǔn)程序庫(kù),面向?qū)ο缶幊蹋∣OP)結(jié)構(gòu)等。   (2) 運(yùn)行性能   語言的運(yùn)行性能是指其應(yīng)用軟件在實(shí)際運(yùn)行時(shí)所表現(xiàn)出來的行為特點(diǎn),是一門語言的動(dòng)態(tài)特性。它對(duì)語言的適用性、實(shí)用性及可用性影響極大。主要表現(xiàn)在任務(wù)期限設(shè)置、代碼執(zhí)行時(shí)間的簡(jiǎn)單評(píng)價(jià),調(diào)度策略選擇,時(shí)序分析支持等幾個(gè)方面。由于語言的運(yùn)行性能和運(yùn)行環(huán)境密切相關(guān),如CPU速度、內(nèi)存大小、硬盤速度、操作系統(tǒng)、編譯環(huán)境等。因此,評(píng)價(jià)語言的運(yùn)行性能應(yīng)和具體的應(yīng)用環(huán)境聯(lián)系起來,任何理論上的評(píng)價(jià)都沒有多大的實(shí)際意義。故本文不再討論這方面的內(nèi)容。 三、常用嵌入式系統(tǒng)高級(jí)編程語言基本性能   一門語言的基本性能是組成這門語言的基本要素,是決定其性能好壞的關(guān)鍵因素。因此,認(rèn)真研究語言的基本性能是非常必要的。下面對(duì)上述幾種流行的嵌入式系統(tǒng)編程語言的基本性能進(jìn)行簡(jiǎn)單的分析和比較[7]。  ?。?) 與匯編語言和機(jī)器代碼的接口 在Ada語言中,可以通過子程序功能實(shí)現(xiàn)對(duì)匯編語言及機(jī)器代碼的訪問。標(biāo)準(zhǔn)程序包MACHINE-CODE支持這一功能。在C中,匯編語言可以定義為一個(gè)asm模塊嵌入在C源代碼中,也可以編寫成一個(gè)獨(dú)立的外部進(jìn)程,用功能調(diào)用進(jìn)行通訊。宏(Macros)也可以用來提供匯編語言操作。語言本身沒有提供這方面的機(jī)制,由編譯器提供支持。  ?。?) 直接尋址   Ada通過SYSTEM包中的Address類尋址絕對(duì)地址;C/C++ 通過指針完成絕對(duì)尋址,在C++中也可以通過Peek、Poke操作完成存儲(chǔ)器尋址;Modula-2 通過SYSTEM模塊支持絕對(duì)尋址。  ?。?) 對(duì)硬件的訪問和控制   Ada通過表述從句把Ada代碼映射到具體器件;C/C++通過指針完成對(duì)硬件的操作;在Modula-2中器件被標(biāo)識(shí)為具有絕對(duì)地址的對(duì)象,通過賦值語句訪問這些對(duì)象。  ?。?) 位操作   Ada 具體的位可以在表述從句中指明,多個(gè)獨(dú)立位也可組成一個(gè)邏輯字,通過邏輯操作對(duì)它們進(jìn)行加工處理。位操作是C的強(qiáng)項(xiàng),邏輯操作、移位操作均可實(shí)現(xiàn)位操作;在C++中,還可以通過定義"bitfields"結(jié)構(gòu)實(shí)現(xiàn)更多的位操作功能。Modula-2用"SET"結(jié)構(gòu)處理位操作。在嵌入式應(yīng)用中最有用的結(jié)構(gòu)是"BITSET",通過它可以方便地實(shí)現(xiàn)各種位操作。  ?。?) 中斷處理   Ada通過中斷處理任務(wù)實(shí)現(xiàn)中斷處理。一個(gè)中斷任務(wù)和一個(gè)中斷矢量密切相關(guān),在中斷矢量地址處存放中斷任務(wù)入口地址。C/C++語言本身沒有提供標(biāo)準(zhǔn)的中斷處理機(jī)制,用戶可以自行處理。Modula-2通過SYSTEM模塊中的IOTRANSFER進(jìn)程實(shí)現(xiàn)中斷處理。用戶也可以編寫自己的中斷處理程序。   (6) 指針   三種語言都提供了較強(qiáng)的指針操作。  ?。?) 數(shù)據(jù)類型檢測(cè)   Ada 有嚴(yán)格的數(shù)據(jù)類型檢測(cè)機(jī)制,混合類型是禁止的,數(shù)據(jù)類型的轉(zhuǎn)換是允許的,但有嚴(yán)格的規(guī)范。C語言的數(shù)據(jù)類型檢測(cè)功能較弱,在數(shù)據(jù)類型轉(zhuǎn)換時(shí)可能會(huì)出現(xiàn)錯(cuò)誤,C++有改進(jìn)。Modula-2 對(duì)數(shù)據(jù)類型檢測(cè)嚴(yán)格,不允許不明確的數(shù)據(jù)類型轉(zhuǎn)換。  ?。?) 程序控制結(jié)構(gòu)   Ada 提供了一整套嚴(yán)格的程序控制結(jié)構(gòu)以支持分支、循環(huán)等功能,也支持無條件轉(zhuǎn)移;C/C++提供了分支、循環(huán)等控制結(jié)構(gòu),方便靈活,但在使用時(shí)應(yīng)注意避免不安全因素;Modula-2在分支、循環(huán)控制方面是很嚴(yán)格的,但在使用CASE-ELSE結(jié)構(gòu)時(shí)應(yīng)注意,在無條件轉(zhuǎn)移時(shí),用EXIT跳出循環(huán),用RETURN結(jié)束進(jìn)程,使用時(shí)應(yīng)多加小心。  ?。?) 模塊結(jié)構(gòu)與獨(dú)立編譯   Ada程序的基本單元是subprogram、package、task和generic,而編譯的基本單元是subprogram和package,所有程序單元都可以獨(dú)立編譯,類型檢查嚴(yán)格,沒有公用數(shù)據(jù)區(qū)。C程序的基本單元是function,外部變量是全局變量,內(nèi)部變量是局部變量;C++程序是若干編譯文件的集合,每個(gè)文件可以定義class、function全局變量等類型,每個(gè)文件可以獨(dú)立編譯。Modula-2 的主程序由若干程序模塊和庫(kù)模塊組成,程序模塊是程序單元的最高層,各模塊可獨(dú)立編譯。  ?。?0) 異常事件處理   Ada提供了一個(gè)綜合錯(cuò)誤處理機(jī)制,用于處理由于語言本身和用戶自己引起的異常事件;C/C++語言沒有提供直接的異常事件處理機(jī)制,需由用戶自己處理,C++(V3.0)提供直接的異常事件處理功能;PIM Modula-2不提供異常事件處理功能,但也有一些其它編譯系統(tǒng)提供運(yùn)行錯(cuò)誤檢測(cè)和處理機(jī)制。  ?。?1) 任務(wù)(task)結(jié)構(gòu)支持   "task"是Ada程序標(biāo)準(zhǔn)的組成模塊,是該語言重要的和不可分割的組成部分;C中沒有獨(dú)立的"task"結(jié)構(gòu),但可以通過"function"實(shí)現(xiàn);在C++中可以通過"classes"實(shí)現(xiàn);Modula-2中沒有獨(dú)立的"task"結(jié)構(gòu),可以用"PROC"結(jié)構(gòu)實(shí)現(xiàn)。  ?。?2) 數(shù)學(xué)模型支持   Ada提供了較好的數(shù)學(xué)模型支持,無論在何種微處理器上運(yùn)行,其程序行為都會(huì)受到嚴(yán)格檢查;C/C++支持定點(diǎn)、浮點(diǎn)運(yùn)算。但數(shù)學(xué)模型并不完善,容易引起一些無定義的行為,如被0除或上下溢出等;PIM Modula-2的數(shù)學(xué)模型與運(yùn)行環(huán)境有聯(lián)系,新標(biāo)準(zhǔn)在改進(jìn)。   (13) 語法與結(jié)構(gòu)   Ada英語式結(jié)構(gòu)及語法,程序易讀易懂;C/C++是一種簡(jiǎn)潔(terse)語言,程序比較難讀,C++更難讀;Modula-2語言結(jié)構(gòu)定義明確,程序容易閱讀。  ?。?4) 多任務(wù)支持   多任務(wù)支持是Ada語言的一大特點(diǎn),是其不可分割的組成部分;C/C++不支持多任務(wù);Modula-2通過"Coroutines"等機(jī)制支持多任務(wù)。  ?。?5) 標(biāo)準(zhǔn)庫(kù)   Ada有豐富的基本功能庫(kù);C/C++有非常豐富的庫(kù)程序,但在應(yīng)用中應(yīng)當(dāng)注意兼容性;Modula-2有比較豐富的庫(kù)程序,但也應(yīng)注意兼容性。  ?。?6) OOP結(jié)構(gòu)支持   Ada83就是一個(gè)OOP語言,Ada95又有增強(qiáng);C不支持OOP,C++具有較強(qiáng)的OOP功能;Modula-2不支持OOP,Modula-3支持OOP。 四、關(guān)于Java   Java語言是Sun Microsystems公司于1995年在Internet上發(fā)布的面向?qū)ο蟮某绦蛟O(shè)計(jì)語言。其主要研制人是Gosling。他的目標(biāo)是設(shè)計(jì)一個(gè)能夠運(yùn)行于規(guī)模巨大、地域分布、體系異構(gòu)的網(wǎng)絡(luò)環(huán)境中的語言系統(tǒng),完成多個(gè)電子設(shè)備之間的通訊與協(xié)同工作。Gosling在設(shè)計(jì)中采用了虛擬機(jī)器碼(virtual machine code)方式,即Java語言編譯后產(chǎn)生的是虛擬機(jī),虛擬機(jī)運(yùn)行在一個(gè)解釋器上,解釋器用來解釋Java編譯器編譯后的程序。這使得Java成為一個(gè)與平臺(tái)無關(guān)的計(jì)算機(jī)語言,即Java應(yīng)用程序不用修改即可在不同的軟硬件平臺(tái)上運(yùn)行。從而實(shí)現(xiàn)了"一次編程,到處可用"(Write once,Run anywhere),使得Java語言很快風(fēng)靡全球,甚至有人說是一場(chǎng)革命[8]。  ?。?) Java的特點(diǎn)   Java語言是一種網(wǎng)絡(luò)語言,但它又不僅僅局限于此。近兩年Java語言發(fā)展迅速,在很多領(lǐng)域得到廣泛使用。這說明Java確實(shí)具有鮮明的特色。   首先,Java是簡(jiǎn)單的。它刪除了一些高級(jí)語言不是絕對(duì)必要的東西,如運(yùn)算符重載、標(biāo)題文件、指針運(yùn)算、隱式類型轉(zhuǎn)換、多重繼承等,并通過自動(dòng)垃圾收集功能大大簡(jiǎn)化了程序設(shè)計(jì)者的內(nèi)存管理工作,使程序設(shè)計(jì)變得簡(jiǎn)單。   第二,Java是面向?qū)ο蟮?。Java語言的設(shè)計(jì)集中于對(duì)象及其接口,它提供了簡(jiǎn)單的類機(jī)制及動(dòng)態(tài)的接口模型。對(duì)象中封裝了它的狀態(tài)變量及相應(yīng)的方法,實(shí)現(xiàn)了模塊化和信息隱藏;而類則提供了一類對(duì)象的原型,并通過繼承機(jī)制使子類可以使用父類的方法,實(shí)現(xiàn)代碼重用。   第三,Java的體系結(jié)構(gòu)是中立的。一般來說,網(wǎng)絡(luò)是由不同結(jié)構(gòu)的機(jī)器構(gòu)成,CPU和作業(yè)結(jié)構(gòu)均有不同。讓應(yīng)用程序在不同結(jié)構(gòu)的機(jī)器上運(yùn)行是一件困難的事;但Java編譯器能產(chǎn)生一種結(jié)構(gòu)中立的目標(biāo)文件格式,使編譯碼可以在不同的處理器上運(yùn)行。   第四,Java是健全的。Java在編譯和運(yùn)行程序時(shí)都要對(duì)可能出現(xiàn)的問題進(jìn)行檢查,以防止錯(cuò)誤的產(chǎn)生。當(dāng)程序出現(xiàn)例外時(shí),Java會(huì)把它拋棄,以保證計(jì)算機(jī)系統(tǒng)不會(huì)崩潰。   第五,Java是安全的。Java不支持指針操作,避免了指針操作帶來的種種弊端。Java擁有多個(gè)階層的互鎖(interlocking)保護(hù)措施,能有效防止病毒的侵入和破壞行為的發(fā)生。字節(jié)碼驗(yàn)證被Web瀏覽器用來確保小程序不含病毒。    第六,Java是多線程的。Java可以同時(shí)執(zhí)行多個(gè)線程,如它可以在進(jìn)行計(jì)算的同時(shí)與用戶交互對(duì)話。通常,編寫多線程程序是困難的;但Java提供了容易使用的同步機(jī)制,使程序設(shè)計(jì)方便容易。   第七,Java是可擴(kuò)展的。Java的設(shè)計(jì)使它能夠適應(yīng)不斷發(fā)展的環(huán)境。在類庫(kù)中可以自由地加入新的方法和實(shí)例變量而不影響用戶程序的執(zhí)行,同時(shí),Java通過接口來支持多重繼承,使之比嚴(yán)格的類繼承具有更靈活的方式和更大的擴(kuò)展性。  ?。?) Java與嵌入式系統(tǒng)   Java是網(wǎng)絡(luò)語言,而嵌入式系統(tǒng)則在功能、價(jià)格、體積、功耗、上市時(shí)間等方面有特殊要求。因此Java語言受速度和代碼容量的限制,本身并不適合于嵌入式系統(tǒng)的應(yīng)用。但Sun公司并不愿意放棄這個(gè)發(fā)展?jié)摿薮蟮膽?yīng)用市場(chǎng),對(duì)Java進(jìn)行改進(jìn)后發(fā)表了J2ME(Java2 Micro Edition)。它是Java API的一個(gè)子集,只包含了Java的關(guān)鍵特性,是專門針對(duì)對(duì)內(nèi)存具有苛刻要求的嵌入式系統(tǒng)而設(shè)計(jì)的。J2ME粗略地將應(yīng)用對(duì)象劃分為兩大類:內(nèi)存在128KB~512KB之間的設(shè)備和內(nèi)存大于512KB的設(shè)備,根據(jù)不同的類別提供不同的用戶接口和軟件包。   但是由于嵌入式系統(tǒng)的特殊性,一些在Java語言中被認(rèn)為是特性優(yōu)異的東西卻在嵌入式系統(tǒng)中成了十分棘手的問題。如缺乏指針尋址和運(yùn)行于Java虛擬機(jī)模式中的安全特性都使Java很難對(duì)硬件進(jìn)行直接控制;自動(dòng)垃圾收集功能使應(yīng)用失去了實(shí)時(shí)決策能力,即它不能以可預(yù)知、可重復(fù)的時(shí)間長(zhǎng)度來處理一個(gè)具體的代碼部分。實(shí)際上Java在進(jìn)行垃圾收集時(shí)暫停了整個(gè)應(yīng)用程序的執(zhí)行,因此,開發(fā)人員幾乎不能控制垃圾收集的時(shí)間。令人鼓舞的是這些問題已經(jīng)或正在被解決。即時(shí)編譯(just-in-time-compiler)程序和預(yù)先編譯(ahead-of-time-compiler)程序都可以提高Java代碼的執(zhí)行速度。如New Monic公司的Real Time Executive和WindRiver公司的Fast J都可以在一定程度上保證絕對(duì)時(shí)間決策應(yīng)用的開發(fā)。   另一方面,為能夠從硬件上更好地支持Java,很多廠家都致力于Java芯片的開發(fā)研制,以充分發(fā)揮嵌入式Java小巧靈活的特點(diǎn)來開拓嵌入式市場(chǎng)。如HP公司正在開發(fā)、完善自己的編譯工具和Java虛擬機(jī)。其目的是要Java嵌入到如打印機(jī)、醫(yī)學(xué)監(jiān)視器、自動(dòng)取款機(jī)等設(shè)備中,使設(shè)備具有一定的智能,增加設(shè)備的可管理性和可用性,大大提高設(shè)備的工作效率。Sun公司宣稱將在J2ME中以Profile的形式為每個(gè)領(lǐng)域規(guī)定API組件。Java TV就是其中面向雙向數(shù)碼電視的API組件。Sun表示,Java TV技術(shù)將提供雙向電視所需的基本環(huán)境、安全性、擴(kuò)展性及可攜帶性。通過Java TV技術(shù),開發(fā)人員可以開發(fā)出更加富有吸引力的信息內(nèi)容和服務(wù)。Sun還宣布,將和通用汽車公司達(dá)成合作伙伴關(guān)系,共同致力于汽車工業(yè)Java標(biāo)準(zhǔn)的確立。一旦Java成為汽車工業(yè)的電腦標(biāo)準(zhǔn)語言,Java將增加數(shù)百萬用戶。在過去的一年里,J2ME在無線通訊領(lǐng)域得到了充分的重視和廣泛的應(yīng)用。因?yàn)镴2ME中包含了能夠在大多數(shù)消費(fèi)者的設(shè)備中運(yùn)行的Java虛擬機(jī)、專用的API函數(shù)庫(kù)和用于開發(fā)和設(shè)置的工具。因此,手機(jī)生產(chǎn)商紛紛推出能夠上網(wǎng)的手機(jī)供用戶選用。   在控制系統(tǒng)中,Java可以使所有操作在由標(biāo)準(zhǔn)Web瀏覽器提供的面板上完成。這些控制面板就是Java Applet。Web瀏覽器可以用來監(jiān)視或設(shè)置系統(tǒng)。這些監(jiān)視和設(shè)置操作均可以通過網(wǎng)絡(luò)遠(yuǎn)程進(jìn)行,這使得系統(tǒng)更加容易管理,特別是那些設(shè)置在危險(xiǎn)的、遙遠(yuǎn)的或不易接近地區(qū)的設(shè)備尤其需要Java的介入。   Java不僅是一門語言,更是一種思想。它將使軟件開發(fā)在設(shè)計(jì)風(fēng)格、設(shè)計(jì)方法、設(shè)計(jì)目標(biāo)、設(shè)計(jì)過程等方面發(fā)生根本性變化。它將成為軟件再實(shí)現(xiàn)的基礎(chǔ),未來OS的核心,各種應(yīng)用軟件的開發(fā)平臺(tái)和實(shí)現(xiàn)環(huán)境。但Java并不是萬能的,它有自己的應(yīng)用范圍,在網(wǎng)絡(luò)管理、網(wǎng)絡(luò)應(yīng)用、面向?qū)ο蟮膽?yīng)用、可視化操作、交互式應(yīng)用領(lǐng)域Java是優(yōu)秀的;但在實(shí)時(shí)控制領(lǐng)域,如火箭控制、傳感器控制、宇宙飛行器的方位控制等方面C或匯編語言依然是最佳選擇。 總結(jié)   近年來計(jì)算機(jī)語言發(fā)展很快。新的語言不斷產(chǎn)生;流行語言不斷改進(jìn),逐步完善;不適用的語言逐步被淘汰。計(jì)算機(jī)語言的發(fā)展呈現(xiàn)出生機(jī)勃勃的景象。隨著嵌入式技術(shù)的發(fā)展,嵌入式系統(tǒng)高級(jí)編程語言倍受重視,逐步形成了百花齊放,百家爭(zhēng)鳴的局面。未來的嵌入式系統(tǒng)編程語言誰主潮流,現(xiàn)在還很難預(yù)測(cè)。Ada語言定義嚴(yán)格,易讀易懂,有較豐富的庫(kù)程序支持,目前在國(guó)防、航空、航天等相關(guān)領(lǐng)域應(yīng)用比較廣泛,未來仍將在這些領(lǐng)域占有重要地位。C語言具有廣泛的庫(kù)程序支持,目前在嵌入式系統(tǒng)中是應(yīng)用最廣泛的編程語言,未來仍將在嵌入式系統(tǒng)應(yīng)用領(lǐng)域占重要地位。C++在PC機(jī)系統(tǒng)和工作站系統(tǒng)中都是重要的編程語言。Visual C++將在圖形用戶接口——GUI方面有較大作用。但C++的目標(biāo)代碼往往比較龐大和復(fù)雜,在嵌入式系統(tǒng)應(yīng)用中應(yīng)充分考慮這一因素。Modula-2定義清晰,支持豐富,具有較好的模塊化結(jié)構(gòu),在教學(xué)科研方面有較廣泛的應(yīng)用。雖然該語言的開發(fā)應(yīng)用一直比較平緩,但近兩年在歐洲有所復(fù)蘇。Java語言相對(duì)年輕,但發(fā)展勢(shì)頭強(qiáng)勁。它的"一次編程,到處可用"的特性使得它在很多領(lǐng)域倍受歡迎。隨著網(wǎng)絡(luò)技術(shù)和嵌入式技術(shù)的不斷發(fā)展,Java及嵌入式Java的應(yīng)用也將越來越廣泛。   從運(yùn)行特性來說,Ada語言具有較好的運(yùn)行行為。因?yàn)樗瓦\(yùn)行環(huán)境聯(lián)系較少,語言本身定義嚴(yán)格,因此其運(yùn)行行為是比較出色的。C/C++語言程序的運(yùn)行行為和硬件環(huán)境及編譯系統(tǒng)有較大聯(lián)系,因此,可能會(huì)產(chǎn)生較多意想不到的問題。在某個(gè)環(huán)境下運(yùn)行的程序換個(gè)機(jī)器或換個(gè)編譯系統(tǒng)就可能會(huì)產(chǎn)生錯(cuò)誤。因此,無論是C還是C++都有幾頁無定義行為的說明。 Modula-2也有比較好的運(yùn)行行為,且仍在改進(jìn)。Java語言采用虛擬機(jī)技術(shù),使得其應(yīng)用程序的運(yùn)行與具體的應(yīng)用平臺(tái)無關(guān),因此,具有良好的運(yùn)行特性。   雖然我們僅僅討論了Ada、C/C++、Modula-2三種語言的基本特性,對(duì)Java語言做了簡(jiǎn)要介紹。但這足以提示我們?cè)谇度胧较到y(tǒng)開發(fā)應(yīng)用中,應(yīng)高度重視高級(jí)語言在嵌入式系統(tǒng)編程中的優(yōu)勢(shì)所在,并應(yīng)合理地選擇、研究、開發(fā)、應(yīng)用適合自己的嵌入式系統(tǒng)高級(jí)編程語言。這不僅是未來嵌入式系統(tǒng)開發(fā)應(yīng)用的發(fā)展方向,而且對(duì)我國(guó)的嵌入式技術(shù)發(fā)展意義重大。MES 參考文獻(xiàn) 1 Kernebeck U.Component libraries for software re-use.Microprocessors and Microsystems, 1997,21(1):49~54 2 Hill A D.The choice of programming languages for highly reliable software-a comparison of C and Ada.Ada user, 1991(3):11~103 3 http://www.ada-usa.com/about-ada-page.html/ 4 Stroustrup B.The C++ programming language.3rdedn, Reading MA:Addison-Wesly, 1997 5 K H Ha.C language for finite element programming.Comput.Struct,1990,37(4):873~880 6 Wirth W.Programming in modula-2.Springer-verlag, Berlin, 4thedn, 1988 7 Cooling J E.Languages for the programming of real-time embedded systems-a survey and comparison.Microprocessors and Microsystems, 1996,20(1):67~77 8 http://www.computerworld.com.cn/search/theme/themefile.asp?themeID=327/ 9 Fazio P, Gowri K.Structural Analysis Software and C Programming Language.Comput Struct, 1987,25(2): 463

標(biāo)簽:

點(diǎn)贊

分享到:

上一篇:人機(jī)界面中的LCD控制驅(qū)動(dòng)與接...

下一篇:微能WIN-V63矢量控制變頻器在...

中國(guó)傳動(dòng)網(wǎng)版權(quán)與免責(zé)聲明:凡本網(wǎng)注明[來源:中國(guó)傳動(dòng)網(wǎng)]的所有文字、圖片、音視和視頻文件,版權(quán)均為中國(guó)傳動(dòng)網(wǎng)(www.wangxinlc.cn)獨(dú)家所有。如需轉(zhuǎn)載請(qǐng)與0755-82949061聯(lián)系。任何媒體、網(wǎng)站或個(gè)人轉(zhuǎn)載使用時(shí)須注明來源“中國(guó)傳動(dòng)網(wǎng)”,違反者本網(wǎng)將追究其法律責(zé)任。

本網(wǎng)轉(zhuǎn)載并注明其他來源的稿件,均來自互聯(lián)網(wǎng)或業(yè)內(nèi)投稿人士,版權(quán)屬于原版權(quán)人。轉(zhuǎn)載請(qǐng)保留稿件來源及作者,禁止擅自篡改,違者自負(fù)版權(quán)法律責(zé)任。

網(wǎng)站簡(jiǎn)介|會(huì)員服務(wù)|聯(lián)系方式|幫助信息|版權(quán)信息|網(wǎng)站地圖|友情鏈接|法律支持|意見反饋|sitemap

傳動(dòng)網(wǎng)-工業(yè)自動(dòng)化與智能制造的全媒體“互聯(lián)網(wǎng)+”創(chuàng)新服務(wù)平臺(tái)

網(wǎng)站客服服務(wù)咨詢采購(gòu)咨詢媒體合作

Chuandong.com Copyright ?2005 - 2025 ,All Rights Reserved 深圳市奧美大唐廣告有限公司 版權(quán)所有
粵ICP備 14004826號(hào) | 營(yíng)業(yè)執(zhí)照證書 | 不良信息舉報(bào)中心 | 粵公網(wǎng)安備 44030402000946號(hào)