
下載本文檔
版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、java能扮演嵌入式應(yīng)用開(kāi)發(fā)的主角嗎?對(duì)系統(tǒng)設(shè)計(jì)師來(lái)說(shuō),java有許多優(yōu)點(diǎn)。作為一門(mén)開(kāi)源的編程語(yǔ)言,java允許面對(duì)對(duì)象編程,又沒(méi)有c中存在的嚴(yán)峻問(wèn)題。java運(yùn)行時(shí)環(huán)境還提供了實(shí)用屬性。java提供的內(nèi)存管理功能使得編程人員不必分配及釋放內(nèi)存。運(yùn)行時(shí)環(huán)境甚至可以通過(guò)整合核心類(lèi)庫(kù)來(lái)簡(jiǎn)化程序分配。 但大多數(shù)嵌入式應(yīng)用瀕臨java沒(méi)有處理好的兩大約束:沒(méi)有足夠的空間和時(shí)光。那么,java作為一種在c+基礎(chǔ)上改進(jìn)了的面對(duì)對(duì)象的開(kāi)源語(yǔ)言,在嵌入式應(yīng)用開(kāi)發(fā)方面能挑大梁?jiǎn)??能否為它自己撐起一片蔚藍(lán)的天空呢?一、為什么會(huì)是java?對(duì)于嵌入式系統(tǒng)來(lái)說(shuō),java技術(shù)比和匯編語(yǔ)言具有很顯然的優(yōu)越性。最顯著的特點(diǎn)
2、是削減了系統(tǒng)的開(kāi)發(fā)和維護(hù),增加了代碼的重利用能力,提高了java代碼與系統(tǒng)原有代碼的可整合性。1. 提高開(kāi)發(fā)效率和可維護(hù)性在項(xiàng)目的囫圇生命周期中,java環(huán)境大大的簡(jiǎn)化了開(kāi)發(fā)和維護(hù)。因?yàn)槟繕?biāo)環(huán)境是建立在一個(gè)虛擬機(jī)上,代碼可以很簡(jiǎn)單的編寫(xiě)、調(diào)試、分析、更改、維護(hù)。加上未來(lái)要銜接的外接設(shè)備,將來(lái)的系統(tǒng)可能比目前的嵌入式系統(tǒng)復(fù)雜無(wú)數(shù)。升級(jí)手冊(cè)大概不會(huì)在囫圇項(xiàng)目的生命周期中都能起到作用。取而代之的是,硬件設(shè)備的可銜接性使得能夠遠(yuǎn)程管理模塊,這樣就保證了開(kāi)發(fā)人員能在產(chǎn)品上增強(qiáng)新的性能,同時(shí)解決了在產(chǎn)品生產(chǎn)后軟件升級(jí)和維護(hù)的問(wèn)題。2. 重復(fù)利用代碼因?yàn)榍度胧较到y(tǒng)有特別的需求,以及不同的特地硬件要協(xié)同工作,
3、嵌入式軟件開(kāi)發(fā)者通常用法十分原始的辦法來(lái)開(kāi)發(fā),有時(shí)每一個(gè)新的項(xiàng)目都要從頭再來(lái)一遍?,F(xiàn)在,隨著嵌入式技術(shù)的成熟以及系統(tǒng)本身變得更大更優(yōu)化,無(wú)數(shù)人開(kāi)頭對(duì)于把一個(gè)產(chǎn)品的模塊甚至是所有的應(yīng)用程序用到另一個(gè)產(chǎn)品感愛(ài)好。這種可重新利用性使得一次開(kāi)發(fā),多次利用成為了可能。java環(huán)境使得一個(gè)模塊可以只要做很少的工作就可以適應(yīng)多個(gè)項(xiàng)目和平臺(tái)。甚至包括有時(shí)客戶(hù)需要一個(gè)新的目標(biāo)板,或者采納新的硬件(cpu或外設(shè))和軟件,或者用法不同的都可以舉行移植。3. 集成java代碼和源代碼用法源代碼顯然是指應(yīng)用程序的多可用性以及代碼的重利用能力。在開(kāi)源的java語(yǔ)言的應(yīng)用中,一個(gè)設(shè)計(jì)很好的界面,或者虛擬機(jī),或者是底層的硬件
4、都可以很好的兼容到嵌入式系統(tǒng)中。盡管無(wú)法移植,對(duì)于無(wú)數(shù)功能和硬件界面來(lái)說(shuō),在本地環(huán)境下開(kāi)發(fā)的代碼大概仍然是最好的解決計(jì)劃。在c、c+或者匯編語(yǔ)言中,加入標(biāo)準(zhǔn)的通信、接口模塊、用戶(hù)界面、平安特性會(huì)花費(fèi)無(wú)數(shù)時(shí)光與金錢(qián)。與之相比較,java的基本庫(kù)本身就提供了這些東西甚至還更多,這樣就可以加速開(kāi)發(fā)。二、java碎片真的會(huì)有影響嗎?在用法javame cldc舉行移動(dòng)電話(huà)開(kāi)發(fā)時(shí),人們常常會(huì)遇到碎片這個(gè)詞。java強(qiáng)調(diào)“一次開(kāi)發(fā),多次利用”,但碎片浮現(xiàn),卻打破了這種傳說(shuō)。于是,這就導(dǎo)致應(yīng)用開(kāi)發(fā)人員不得不在許多不同的設(shè)備舉行應(yīng)用程序的測(cè)試,甚至于不得不在應(yīng)用程序中對(duì)某些特別的設(shè)備舉行一步客戶(hù)化的工作。對(duì)程
5、序開(kāi)發(fā)人員來(lái)說(shuō),碎片真是個(gè)惡夢(mèng),由于碎片無(wú)緣無(wú)故的增添了代碼量和測(cè)試工作量。固然,對(duì)移動(dòng)電話(huà)持有者來(lái)說(shuō)也不是什么好事,由于碎片消耗了設(shè)備的空間。不管怎么說(shuō),碎片對(duì)每個(gè)人來(lái)說(shuō)都是件很厭煩的事情。但對(duì)于嵌入開(kāi)發(fā)者而,碎片又意味著什么呢?首先來(lái)看看碎片產(chǎn)生的根源。移動(dòng)電話(huà)行業(yè)標(biāo)準(zhǔn)原來(lái)給不同的產(chǎn)品預(yù)留了一定的自由空間,這初衷是好的。但實(shí)際上,這種預(yù)留的空間,卻導(dǎo)致了不同產(chǎn)品之間的矛盾,不能舉行很好的兼容。這就是碎片產(chǎn)生的最根本緣由。于是這種不兼容性進(jìn)而升級(jí)到了java實(shí)現(xiàn)的程序里。這正是java想花大力量創(chuàng)建一個(gè)統(tǒng)一java實(shí)現(xiàn)的緣由所在,如jsr248,msa(mobile service arch
6、itecture)的建立。從嵌入式開(kāi)發(fā)人員的角度來(lái)看,大概并沒(méi)有這么糟糕。其實(shí)碎片并不會(huì)影響到嵌入式開(kāi)發(fā)人員,由于已經(jīng)可以確定設(shè)備之間的硬件是徹低兼容的。假如用法的是原始語(yǔ)言像c/c+的話(huà),嵌入式開(kāi)發(fā)人員可以在任何地方來(lái)編寫(xiě)代碼,并在不同的設(shè)備上舉行代碼的重用。三、 java平臺(tái)的測(cè)試假如采納java來(lái)實(shí)現(xiàn)嵌入式設(shè)備開(kāi)發(fā),會(huì)不會(huì)遇到c/c+常常遇到的測(cè)試成本太高的難題呢?固然,采納java來(lái)開(kāi)發(fā)的話(huà),可以對(duì)軟件舉行多次的重復(fù)測(cè)試,盡管這不一定是必須的。而徹低需要舉行重復(fù)測(cè)試的只是那些新加的java實(shí)現(xiàn)。假如是java平臺(tái)的合法用戶(hù)的話(huà),還可以用法sun提供的tck來(lái)舉行程序兼容性的檢測(cè)。假如付
7、費(fèi)的話(huà),還有無(wú)數(shù)壓力測(cè)試可供挑選。只要能保證java平臺(tái)的正常運(yùn)行并按java的測(cè)試通過(guò)了的話(huà),那么所開(kāi)發(fā)的程序其可移植性是徹低可以保證的。固然,在此有必需有提示一下只測(cè)試java實(shí)現(xiàn)端口的開(kāi)發(fā)人員。由于有一些端口的實(shí)現(xiàn)有可能是采納c/c+來(lái)編寫(xiě)的,這些必需測(cè)試??梢杂梅ㄈ略O(shè)備來(lái)對(duì)囫圇程序舉行測(cè)試以達(dá)到這一目的。1. 測(cè)試工具包通過(guò)采納java來(lái)舉行編程,可以確保平臺(tái)的apis是否正確的工作。假如采納c/c+或挺直對(duì)操作系統(tǒng)編程,則用法全新的設(shè)備時(shí),無(wú)法保證apis的正常性。因?yàn)檫@些問(wèn)題取決于所采納的測(cè)試包的全面性和牢靠性,因此,在開(kāi)發(fā)階段有可能發(fā)覺(jué)不了它們,而在部署的階段發(fā)覺(jué)了它們時(shí),問(wèn)題
8、已經(jīng)蔓延得超出控制范圍了。而對(duì)于java平臺(tái)的測(cè)試,普通比較全面。所以,c/c+或挺直對(duì)操作系統(tǒng)編程的問(wèn)題能比較早的被發(fā)覺(jué)并解決。因此,采納java平臺(tái)時(shí),其測(cè)試時(shí)光有可能跟用法c/c+來(lái)開(kāi)發(fā)囫圇程序的時(shí)光差不多。但結(jié)果大大不同,用法java平臺(tái)時(shí),其最差的測(cè)試效果往往可以與c/c+環(huán)境下最好的測(cè)試效果媲美。就測(cè)試的挑選而言,采納java平臺(tái)時(shí),可以用法sun的tck來(lái)確保程序?qū)π略O(shè)備的適用性,同時(shí),還可以得到j(luò)ava的其它測(cè)試包,不過(guò)是收費(fèi)的。然而用法c/c+時(shí),則只能依賴(lài)開(kāi)發(fā)人員自己來(lái)保證程序?qū)π略O(shè)備的適應(yīng)性了。2. 端口兼容性那么如何知道設(shè)備所依靠的操作系統(tǒng)端口是兼容的呢?沒(méi)法知道,由于
9、操作系統(tǒng)供給商通過(guò)沒(méi)有測(cè)試它。除非所用法的設(shè)備是標(biāo)準(zhǔn)的硬件,沒(méi)有舉行任何的客戶(hù)化工作,或是可以讓操作系統(tǒng)提供商對(duì)這特別的端口舉行單獨(dú)的測(cè)試。相樣,采納java平臺(tái)時(shí),這又是怎么的結(jié)果呢?可喜的是,因?yàn)閖ava平臺(tái)的tck已經(jīng)做了這樣的工作,因此,這可以更好的提高其兼容性??傊杉{java平臺(tái)所需的測(cè)試,最差的狀況也就跟采納原始語(yǔ)言(c/c+)一樣,但大部分狀況下,都優(yōu)于后者。而且,更具有兼容性的保證。四、java很占內(nèi)存嗎?用法java平臺(tái)舉行嵌入式設(shè)備開(kāi)發(fā)時(shí),其對(duì)內(nèi)在的用法量,會(huì)不會(huì)比用法原始語(yǔ)言如c/c+更大些呢?這取決于軟件的復(fù)雜性。java因?yàn)樘摂M機(jī)和內(nèi)庫(kù)的緣由,有可能會(huì)導(dǎo)致內(nèi)存開(kāi)銷(xiāo)
10、的增大。下面比較一下java平臺(tái)內(nèi)存的占用狀況(基于sun的實(shí)現(xiàn)):cldc(connected limited device configuration,運(yùn)算功能有限、電力有限的嵌入式裝置,如pda 、手機(jī)等):可工作于100k(ram),jit(just in time,即時(shí)編譯技術(shù))需要最大些。典型的部署要求500k-16m(ram)。cdc(connected device configuration,運(yùn)算能力相對(duì)較佳、并請(qǐng)?jiān)陔娏┙o上相對(duì)照較充沛的嵌入式裝置,如冷氣機(jī)、電冰箱等):vm約為250k,jit小于300k,vm+jit+基礎(chǔ)類(lèi)庫(kù)約占2-2.5m。典型的部署要求:4m-32
11、m。固然,內(nèi)存的占用量還取決于應(yīng)用的大小及內(nèi)在的用法狀況??梢钥闯觯鋵?shí)java平臺(tái)不會(huì)占用太大的內(nèi)存。但是,這只是問(wèn)題的一半。另一半是,java代碼最后部署時(shí)是以類(lèi)文件來(lái)部署的,它主要是包括字節(jié)碼和元數(shù)據(jù)。通過(guò)對(duì)cvm數(shù)據(jù)的分析,可以看出,字節(jié)碼占領(lǐng)著也許30%的數(shù)據(jù)量。而采納jit編譯的代碼相對(duì)于字節(jié)碼而言,可以發(fā)覺(jué),內(nèi)存的占有量增強(qiáng)了,并有一個(gè)7-8倍的命令集。因?yàn)?,可以估量:java類(lèi)轉(zhuǎn)成字節(jié)碼的速度1/30%3.3x;原始語(yǔ)言轉(zhuǎn)成字節(jié)碼的速度7x。這意味著,java代碼的內(nèi)存用法量約為原始語(yǔ)言代碼的一半。固然這只是十分粗略的估算,但卻是合理的估算。用法java的jit后,惟獨(dú)那些用法
12、頻率高的代碼才會(huì)被編譯。而在系統(tǒng)中只是偶然被執(zhí)行的代碼則采納說(shuō)明來(lái)編譯。同時(shí),jit盡量使被編譯的代碼其內(nèi)存占有量保持在一較小的范圍內(nèi)。對(duì)cvm(cdc所用法虛擬機(jī)),默認(rèn)值為512k。而在一些較優(yōu)秀的程序中,可以發(fā)覺(jué),其值為100k-300k。這也就是說(shuō),用法java編寫(xiě)的程序,惟獨(dú)用法頻率比較高的代碼才導(dǎo)致內(nèi)存占用的增強(qiáng)。相反,用法c/c+編寫(xiě)的程序,囫圇代碼都需要舉行編譯。因此,不能說(shuō)用法java語(yǔ)言編寫(xiě)的程序占用的內(nèi)存就會(huì)比用法c/c+編寫(xiě)的程序大。這打算于軟件相對(duì)于平臺(tái)代碼的復(fù)雜度及大小。假如軟件規(guī)模比較大,java平臺(tái)所消耗的內(nèi)存遠(yuǎn)小于java類(lèi)文件簡(jiǎn)潔性節(jié)省的內(nèi)存,這種狀況下,用法java平臺(tái)將有利于節(jié)省內(nèi)存。假如軟件的規(guī)模比較小,則java平臺(tái)消耗的內(nèi)存就比較顯然了,可以考慮用法c/c+來(lái)開(kāi)發(fā),以節(jié)省內(nèi)存。五、 結(jié)論jav
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 北京債權(quán)債務(wù)合同范本
- 公司預(yù)繳水費(fèi)合同范本
- 人才培養(yǎng)合同范例
- 公司銷(xiāo)售合同范本6
- 《種樹(shù)郭橐駝傳》教案
- 買(mǎi)賣(mài)合同范本電子合同
- 協(xié)議酒店招標(biāo)合同范本
- 出國(guó)焊工勞務(wù)合同范本
- 買(mǎi)車(chē)定金有效合同范本
- 《動(dòng)物聚會(huì)》教學(xué)反思
- 《紅巖》中考試題(截至2024年)
- 2025年合肥職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)適應(yīng)性測(cè)試題庫(kù)完整版
- 2025年黑龍江旅游職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)傾向性測(cè)試題庫(kù)匯編
- 2025年湖南城建職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)技能測(cè)試題庫(kù)新版
- 國(guó)家基本藥物臨床應(yīng)用指南
- 企業(yè)級(jí)軟件開(kāi)發(fā)作業(yè)指導(dǎo)書(shū)
- 《中國(guó)古代文學(xué)史及作品選II》教學(xué)大綱
- 代工生產(chǎn)合同范本
- 人教版英語(yǔ)2025七年級(jí)下冊(cè) Unit1Animal Friends教師版 語(yǔ)法講解+練習(xí)
- DeepSeek新手入門(mén)教程
- 課件:《教育強(qiáng)國(guó)建設(shè)規(guī)劃綱要(2024-2035年)》學(xué)習(xí)宣講
評(píng)論
0/150
提交評(píng)論