- 相關(guān)推薦
Java用于嵌入式系統(tǒng)的局限
java語(yǔ)言的諸多優(yōu)點(diǎn)在某些情況下恰恰可能成為其不利于在嵌入式系統(tǒng)中得以廣泛應(yīng)用的絆腳石。yjbys小編下面為你整理了關(guān)于Java用于嵌入式系統(tǒng)的局限,希望對(duì)你有所幫助。
局限1:性能較低
由于解釋Java字節(jié)碼比相當(dāng)?shù)腃或C++寫的程序運(yùn)行起來(lái)要慢5到10倍,對(duì)一些并非受制于CPU的嵌入系統(tǒng)來(lái)說(shuō),這一性能缺點(diǎn)不是問(wèn)題,但是更經(jīng)常的較慢的速度會(huì)導(dǎo)致無(wú)法接受的應(yīng)答時(shí)間。
解決方案
有幾種可能的解決方案可緩解速度慢的問(wèn)題。
使用更快、更強(qiáng)大的處理器,使系統(tǒng)響應(yīng)時(shí)間縮小到可以接受的范圍。不過(guò)這個(gè)方法將增加每個(gè)系統(tǒng)的成本。
使用母語(yǔ)Java編譯器來(lái)獲得比較好的性能。但這樣做,就放棄了與Java平臺(tái)無(wú)關(guān)的優(yōu)點(diǎn),好在大多數(shù)嵌入系統(tǒng)都只在一種平臺(tái)上運(yùn)行。
在系統(tǒng)上并入一個(gè)JIT編譯器,這樣Java類裝入時(shí)就被編譯。不過(guò),如果為接納JIT編譯器而不得不增加額外的內(nèi)存,這個(gè)方法也會(huì)增加系統(tǒng)成本。另外,若系統(tǒng)各部分是按需求逐漸添加,則應(yīng)該控制程序裝入的時(shí)機(jī),以使在裝入類進(jìn)行編譯時(shí)產(chǎn)生的暫停不會(huì)影響系統(tǒng)的響應(yīng)時(shí)間。
局限2:垃圾收集的系統(tǒng)開(kāi)銷過(guò)大
Java中的自動(dòng)內(nèi)存分配和垃圾收集性能是很實(shí)惠的,但是,從實(shí)時(shí)系統(tǒng)的角度來(lái)看,它的問(wèn)題恰好就在于它是自動(dòng)的。當(dāng)垃圾收集進(jìn)行時(shí),開(kāi)發(fā)者對(duì)系統(tǒng)的控制就受限了。因?yàn),垃圾收集運(yùn)行時(shí),它凍結(jié)了系統(tǒng)其余部分的處理。這是因?yàn)樗仨氁趦?nèi)存中移動(dòng)對(duì)象,并必須在程序再次運(yùn)行前,更新所有引用(指向)那些對(duì)象的程序變量。垃圾收集需要凍結(jié)處理的時(shí)間,具體取決于內(nèi)存量和處理器的速度。很顯然,這對(duì)硬實(shí)時(shí)系統(tǒng)是無(wú)法接受的,甚至極端時(shí)對(duì)軟實(shí)時(shí)系統(tǒng)也是成問(wèn)題的。
解決方案
垃圾收集以三種方式開(kāi)啟。首先JVM有一個(gè)后臺(tái)垃圾收集線程,此線程傾向于在它一看見(jiàn)系統(tǒng)有空閑就開(kāi)始垃圾收集,若有事件想要喚醒另一個(gè)線程,后臺(tái)垃圾收集就會(huì)被該線程占先,但它不會(huì)立刻被占先,它得更新那些已被移動(dòng)的對(duì)象的所有引用后,才能讓一個(gè)線程運(yùn)行。其次,若JVM沒(méi)找到足夠內(nèi)存來(lái)滿足某個(gè)內(nèi)存分配請(qǐng)求,它將啟動(dòng)一個(gè)不會(huì)被占先的垃圾收集,在該操作完成之前,系統(tǒng)的其余部分被禁止。最后,一個(gè)應(yīng)用程序能通過(guò)調(diào)用Systev.gc()方法來(lái)啟動(dòng)垃圾收集。所以,如果知道系統(tǒng)暫時(shí)不會(huì)執(zhí)行任何時(shí)序上關(guān)鍵的任務(wù),就可以啟動(dòng)垃圾收集,避免稍后在更關(guān)鍵時(shí)段進(jìn)行收集。
局限3:JVM的內(nèi)存開(kāi)銷過(guò)大
前面我們也論述了許多 JVM的內(nèi)置特點(diǎn),比如圖形和網(wǎng)絡(luò),它們使得Java程序更快上市。所有這些特點(diǎn)的負(fù)面是JVM的內(nèi)存開(kāi)銷。因?yàn)镴VM是一個(gè)整塊(要達(dá)到Java的可移植的目的,必須完整的采納),JVM的內(nèi)存占用量不能減少,F(xiàn)在的JVM最少需要2MB以上的內(nèi)存。
解決方案
如果Java程序也在使用一些消耗內(nèi)存的功能,由于一個(gè)JVM中有那么多的功能,各個(gè)Java應(yīng)用程序就能寫得小一點(diǎn)。如果建立的是一個(gè)從網(wǎng)絡(luò)上動(dòng)態(tài)下載并運(yùn)行多個(gè)程序的系統(tǒng),那么這將是個(gè)很大的優(yōu)點(diǎn)。但Java仍然不具備可配置性和可伸縮性。
局限4:缺乏直接硬件接口能力
Java缺乏直接同硬件接口的能力。JVM僅僅是一個(gè)虛擬的機(jī)器,一個(gè)對(duì)硬件的軟件抽象,虛擬機(jī)控制與實(shí)際硬件的接口,而我們只能和虛擬機(jī)打交道。
解決方案
但這并非是無(wú)法逾越的限制,很多C程序使用內(nèi)嵌匯編來(lái)規(guī)避性能上的瓶頸,所以Java程序也能使用C來(lái)獲得對(duì)硬件的直接訪問(wèn)。
讓Java和C一起工作有兩種方式。首先,可以使用本地方式,它們是用C/C++或另一種語(yǔ)言寫的,但當(dāng)調(diào)用時(shí),則裝入與JVM同樣的內(nèi)存空間,運(yùn)行于同樣的環(huán)境。因?yàn)樗鼈儽痪幾g成機(jī)器碼,本地方式運(yùn)行更快并能直接訪問(wèn)硬件。本地過(guò)程與Java代碼之間通過(guò)套接來(lái)彼此交流,就像網(wǎng)絡(luò)中通信端點(diǎn)使用的套接一樣。不過(guò)在選擇了混合語(yǔ)言方法后,Java的與平臺(tái)無(wú)關(guān)和安全特點(diǎn)就沒(méi)有了。
另外,可以考慮將前面提到的Java處理器作為軟件JVM的解釋器部分作為一種硬件實(shí)現(xiàn)方案。Java程序能在這些處理器上直接運(yùn)行并操縱硬件,要注意的是必需加一些特殊目的的指令給這種語(yǔ)言才能直接與處理器一起工作。
局限5:語(yǔ)言尚不夠成熟
從標(biāo)準(zhǔn)的程序設(shè)計(jì)語(yǔ)言角度來(lái)看,Java還很年輕,也很粗糙。如果Java不是由一個(gè)小組開(kāi)發(fā)的,也許某些錯(cuò)誤和疏忽已經(jīng)被發(fā)現(xiàn)和解決了。在Java亮相以后,它立即被用于比原來(lái)預(yù)期更多的地方。這一切都意味著Java最初的構(gòu)思和實(shí)現(xiàn),雖然堅(jiān)實(shí)和有用,但在安全、大小和性能幾方面仍感欠缺。
在其進(jìn)一步發(fā)展中,Sun公司分了三個(gè)步驟來(lái)促進(jìn)Java成為一種通用語(yǔ)言和計(jì)算機(jī)平臺(tái)。首先,用Java編程實(shí)現(xiàn)現(xiàn)存的商業(yè)和企業(yè)的一些功能活動(dòng),諸如電子郵件、日歷和字處理程序。其次,把Java提供給企業(yè),使它成為一種編寫內(nèi)部應(yīng)用程序的方法。最后一步,是為傳統(tǒng)嵌入式設(shè)備應(yīng)用,比如為移動(dòng)電話、機(jī)頂盒以及打印機(jī)定義Java API以及語(yǔ)言功能。
由此可見(jiàn),Java的嵌入式應(yīng)用是排在Sun公司日程的最后的,Sun公司在繼續(xù)為這些用途發(fā)展此語(yǔ)言,但對(duì)這方面的發(fā)展次于桌面及企業(yè)用途。按Sun公司的優(yōu)先順序,很可能還要過(guò)一段時(shí)間才能解決嵌入式應(yīng)用中涉及到的一些問(wèn)題。在此之前,嵌入式系統(tǒng)的編程人員可能不得不迂回、妥協(xié)以及使用第三方解決方案。
Java開(kāi)發(fā)的編程工具也仍在發(fā)展之中。有幾個(gè)廠家提供編譯器和開(kāi)發(fā)工具,如Symantec、Microsoft以及Sun公司。Sun不再是JVM和JIT的惟一供應(yīng)商,其他幾個(gè)供應(yīng)商的產(chǎn)品也很有競(jìng)爭(zhēng)力。Parasoft公司的Jtest軟件自動(dòng)為Java模塊生成檢測(cè)案例,而Numega公司的Jcheck為JVM中的程序行為提供一定的可見(jiàn)性。不過(guò)兩者都只能處理調(diào)試程序中的一小部分,而且都是針對(duì)桌面系統(tǒng)開(kāi)發(fā)設(shè)計(jì)的,雖然它們也能用于嵌入開(kāi)發(fā)過(guò)程。
目前Java仍然沒(méi)有交叉調(diào)試解決方案,即那種傳統(tǒng)上被嵌入系統(tǒng)開(kāi)發(fā)者用來(lái)處理目標(biāo)平臺(tái)上程序的方案,所以很可能必須用C/C++來(lái)寫程序中針對(duì)硬件的部分。不管怎樣,開(kāi)發(fā)者最好用一個(gè)C/C++交互調(diào)試器來(lái)調(diào)試那些代碼,并在目標(biāo)系統(tǒng)上用彈出對(duì)話框,保持記錄文件,或其他類技巧來(lái)調(diào)試Java.
java專業(yè)就業(yè)方向
java是一種簡(jiǎn)單的,面向?qū)ο蟮模植际降,說(shuō)明型的,健壯安全的,結(jié)構(gòu)中立的,可移植的,性能優(yōu)異、多線程的動(dòng)態(tài)語(yǔ)言。以下java是專業(yè)就業(yè)方向,歡迎閱覽!
Java分為三個(gè)體系JavaSE(Java2 Platform Standard Edition,java平臺(tái)標(biāo)準(zhǔn)版),JavaEE(Java 2 Platform,Enterprise Edition,java平臺(tái)企業(yè)版),JavaME(Java 2 Platform Micro Edition,java平臺(tái)微型版)。所以一般JAVA培訓(xùn)也分為J2SE,J2EE,J2ME培訓(xùn),各個(gè)體系的方向有所不同,JAVA培訓(xùn)的內(nèi)容也有所不同。
通過(guò)JAVA培訓(xùn),學(xué)員可以系統(tǒng)把握面向?qū)ο缶幊陶Z(yǔ)言JAVA的核心語(yǔ)法,能夠理解J2SE、J2ME、J2EE三種體系架構(gòu)的理論思想和架構(gòu)內(nèi)容,把握J(rèn)AVA程序設(shè)計(jì)的主要模式和核心思想,熟練把握基于JAVA語(yǔ)言的編程技巧和編程工具,能夠獨(dú)立完成基于JAVA的客戶端和服務(wù)器端應(yīng)用程序的開(kāi)發(fā)、調(diào)試、部署和執(zhí)行。一般Java培訓(xùn)包括以下內(nèi)容:HTML/XML語(yǔ)言、 數(shù)據(jù)庫(kù)技術(shù)、Java程序設(shè)計(jì)、 數(shù)據(jù)結(jié)構(gòu)與算法、Java設(shè)計(jì)模式、J2EE設(shè)計(jì)和應(yīng)用、Eclipse/CVS/OpenSource. 軟件測(cè)試/安全性編碼技術(shù)、UML設(shè)計(jì)、UNIX. 項(xiàng)目實(shí)戰(zhàn)。
JAVA就業(yè)前景
JAVA人才社會(huì)需求量大,根據(jù)IDC的統(tǒng)計(jì)數(shù)字,在所有軟件開(kāi)發(fā)類人才的需求中,對(duì)JAVA工程師的需求達(dá)倒全部需求量的60%~70%。同時(shí),JAVA工程師薪水相對(duì)較高。通常來(lái)說(shuō),具有3~5年開(kāi)發(fā)經(jīng)驗(yàn)的工程師,擁有年薪10萬(wàn)元是很正常的一個(gè)薪酬水平。80%學(xué)員畢業(yè)后年薪都超過(guò)了5萬(wàn)元。Java平臺(tái)以其移動(dòng)性、安全性和開(kāi)放性受倒追捧。
java專業(yè)就業(yè)方向
1 可視化編程
掌握程序設(shè)計(jì)方法及可視化技術(shù),精通一種可視化平臺(tái)及其軟件開(kāi)發(fā)技術(shù)。獲取Delphi程序員系列、Java初級(jí)或VB開(kāi)發(fā)能手認(rèn)證。
就業(yè)方向:企業(yè)、政府、社區(qū)、各類學(xué)校等可視化編程程序員。
2 WEB應(yīng)用程序設(shè)計(jì)
具有美工基礎(chǔ)和網(wǎng)頁(yè)動(dòng)畫設(shè)計(jì)能力,掌握交互式網(wǎng)頁(yè)程序的設(shè)計(jì)技術(shù),能進(jìn)行網(wǎng)站建設(shè)和維護(hù)。獲取Macromedia多媒體互動(dòng)設(shè)計(jì)師或Delphi初級(jí)程序員或Delphi快速網(wǎng)絡(luò)開(kāi)發(fā)工程師認(rèn)證。
就業(yè)方向:企業(yè)、政府、社區(qū)、各類學(xué)校等WEB應(yīng)用程序員。
3 軟件測(cè)試
掌握軟件測(cè)試的基本原理、方法和組織管理,精通軟件測(cè)試工具。獲取ATA軟件測(cè)試工程師或Delphi初級(jí)程序員或Java初級(jí)程序員認(rèn)證。
就業(yè)方向:企業(yè)、政府、社區(qū)、各類學(xué)校等軟件測(cè)試員。
4 數(shù)據(jù)庫(kù)管理
能應(yīng)用關(guān)系范式進(jìn)行數(shù)據(jù)庫(kù)設(shè)計(jì),精通SQL語(yǔ)言,勝任數(shù)據(jù)庫(kù)服務(wù)器管理與應(yīng)用工作。獲取Oracle數(shù)據(jù)庫(kù)管理或SQL Server數(shù)據(jù)庫(kù)應(yīng)用或Windows XP應(yīng)用認(rèn)證。
就業(yè)方向:企業(yè)、政府、社區(qū)、各類學(xué)校等部門的中、大型數(shù)據(jù)庫(kù)管理員。
5 圖形圖像制作
精通國(guó)際上流行的圖形/圖像制作工具(如CorelDraw、Photoshop、Pagemaker等)。獲取平面設(shè)計(jì)師相關(guān)的認(rèn)證。
就業(yè)方向:廣告制作公司、建筑設(shè)計(jì)公司、包裝裝璜設(shè)計(jì)公司、居室裝修公司、出版印刷
公司。
6 網(wǎng)絡(luò)構(gòu)建技術(shù)
熟悉網(wǎng)絡(luò)結(jié)構(gòu)和組網(wǎng)方式,掌握建網(wǎng)方法,能利用工具分析和排除常見(jiàn)網(wǎng)絡(luò)故障。獲取Cisco路由配置或華為網(wǎng)絡(luò)工程或AMP應(yīng)用工程師認(rèn)證。
就業(yè)方向:企業(yè)、政府、社區(qū)、各類學(xué)校等網(wǎng)絡(luò)構(gòu)建工程師。
7 網(wǎng)絡(luò)系統(tǒng)管理
掌握網(wǎng)絡(luò)系統(tǒng)管理的基本知識(shí)與應(yīng)用技能,能進(jìn)行網(wǎng)絡(luò)系統(tǒng)的安全設(shè)置。獲取Window2000 Server或TurboLinux TLCE或Cisco路由配置專家認(rèn)證。
就業(yè)方向:企業(yè)、政府、社區(qū)、各類學(xué)校等網(wǎng)絡(luò)系統(tǒng)管理員。
8 多媒體制作
具有多媒體程序設(shè)計(jì)與多媒體制作策劃的能力。基本掌握面向?qū)ο蟪绦蛟O(shè)計(jì)與建模、造型設(shè)計(jì)、場(chǎng)景設(shè)計(jì)、分鏡頭原理等技能。獲取多媒體設(shè)計(jì)師相關(guān)的認(rèn)證。
就業(yè)方向:多媒體設(shè)計(jì)與制作公司、動(dòng)畫美術(shù)制作出版公司、廣告制作公司。
【Java用于嵌入式系統(tǒng)的局限】相關(guān)文章:
嵌入式系統(tǒng)組成03-09
嵌入式系統(tǒng)介紹01-13
嵌入式系統(tǒng)現(xiàn)狀發(fā)展03-09
嵌入式系統(tǒng)歷史發(fā)展01-13
嵌入式系統(tǒng)開(kāi)發(fā)特點(diǎn)03-20
嵌入式系統(tǒng)應(yīng)用領(lǐng)域01-13
嵌入式系統(tǒng)的應(yīng)用領(lǐng)域01-12
嵌入式系統(tǒng)的基本概念01-12