當(dāng)前位置:首頁(yè) > 嵌入式培訓(xùn) > 嵌入式學(xué)習(xí) > 入門指導(dǎo) > 嵌入式比java難多少?
嵌入式技術(shù)已經(jīng)很多次的出現(xiàn)在我們生活中了,不光這樣,現(xiàn)在也有很多公司都開(kāi)始招聘嵌入式開(kāi)發(fā)技術(shù)崗位了,相對(duì)于java的話,大家還是比較熟悉的,不少人也會(huì)拿這兩樣最對(duì)比,下面一起來(lái)了解下嵌入式比java難多少吧。
1、Java語(yǔ)言與嵌入式
對(duì)于選用嵌入式編程語(yǔ)言,一般說(shuō),越是高級(jí)的語(yǔ)言,其編譯和運(yùn)行庫(kù)施加的開(kāi)銷越大,你的應(yīng)用程序也越大,越慢。已經(jīng)公認(rèn)用匯編語(yǔ)言能寫出最小最快的程序,其次是用C或Forth,接下來(lái)較大的是C++或Basic,然后才是Java。因此一般來(lái)說(shuō),編程人員都會(huì)首選匯編和C,而然后才會(huì)考慮C++或Java。
但是嵌入式開(kāi)發(fā)者為何要來(lái)關(guān)注Java呢?筆者以為,隨著不斷增長(zhǎng)的市場(chǎng)需求,很多嵌入設(shè)備必須適應(yīng)網(wǎng)上交流的需要,為了迎合此要求,考慮這種到開(kāi)發(fā)Internet應(yīng)用程序的便利,眾多開(kāi)發(fā)者都發(fā)現(xiàn)使用這種語(yǔ)言是有意義的。另一個(gè)原因是隨著內(nèi)存條及32位處理器價(jià)格的下降,最初在嵌入系統(tǒng)使用Java太昂貴的問(wèn)題不再有了。隨著使用Java的成本代價(jià)減少,它的很多優(yōu)點(diǎn)應(yīng)當(dāng)被考慮作為嵌入平臺(tái)。
2、Java對(duì)于嵌入式的優(yōu)點(diǎn)分析
Java語(yǔ)言的優(yōu)點(diǎn)在于:它當(dāng)初就是由理解和信奉網(wǎng)絡(luò)計(jì)算夢(mèng)想的一個(gè)小巧而專注的開(kāi)發(fā)組設(shè)計(jì)的,雖然該語(yǔ)言最初的實(shí)施方案有點(diǎn)缺陷,有許多后來(lái)已被解決了,但為了這個(gè)夢(mèng)想,他們很少在技術(shù)上妥協(xié),結(jié)果誕生了一種專為以相互通訊為主要目的的設(shè)備而設(shè)計(jì)的語(yǔ)言。
有許多技術(shù)上的優(yōu)點(diǎn)都可能會(huì)引導(dǎo)嵌入系統(tǒng)開(kāi)發(fā)者選擇Java,以下就是這些優(yōu)點(diǎn)(其中有幾個(gè)也適用于通用編程)
A)與處理器無(wú)關(guān)
Java的第一個(gè)優(yōu)點(diǎn)就是與處理器無(wú)關(guān),這個(gè)優(yōu)點(diǎn)似乎與嵌入式系統(tǒng)沒(méi)什么相干。傳統(tǒng)上,嵌入程序就是針對(duì)特定的微處理器設(shè)計(jì)并在其上運(yùn)行的,而C語(yǔ)言程序的可移植性則可通過(guò)編譯或交叉編譯來(lái)保障。
B)面向?qū)ο蟮木幊?/span>
Java是一種純粹面向?qū)ο蟮恼Z(yǔ)言。所有代碼和數(shù)據(jù)都是某個(gè)類的一部分,沒(méi)有全局變量或是獨(dú)立于類存在的代碼,一個(gè)對(duì)象是一個(gè)類的實(shí)例,對(duì)象是通過(guò)調(diào)用操作方法,或者說(shuō)函數(shù)來(lái)操作的,而這些方法或函數(shù)也是類的一部分,對(duì)象的方法就對(duì)象的數(shù)據(jù)進(jìn)行操作。Java類被組織成一個(gè)等級(jí)層次,在層次結(jié)構(gòu)中,一個(gè)子類能夠繼承其超類的行為,并可用子類所具備的一些特有功能來(lái)擴(kuò)展其超類的功能。對(duì)象模型是你能定義對(duì)應(yīng)真實(shí)事物的數(shù)據(jù)結(jié)構(gòu),使得程序的任務(wù)和任務(wù)如何實(shí)現(xiàn)者二者之間的轉(zhuǎn)換變得基本上透明。
C)安全和安全操作
由于有了JVM,一個(gè)Java應(yīng)用程序與操作系統(tǒng)或硬件完全隔絕,因此計(jì)算機(jī)病毒或其它作祟的的代碼就很難獲得對(duì)設(shè)備的控制。虛擬機(jī)是主機(jī)設(shè)備和那些可能難以確定其質(zhì)量和可靠性的軟件之間的一個(gè)保護(hù)層。
D)內(nèi)存管理
Java的內(nèi)存管理遠(yuǎn)比其他語(yǔ)言簡(jiǎn)單,因?yàn)樗皇褂弥羔槨.?dāng)對(duì)象被實(shí)例化時(shí),內(nèi)存被動(dòng)態(tài)分配。正如我們前面分析的,對(duì)個(gè)別內(nèi)存地址的訪問(wèn)被Java的設(shè)計(jì)者視為一個(gè)對(duì)安全的潛在危險(xiǎn),因此,訪問(wèn)也被禁止。而且,Sun的網(wǎng)絡(luò)模型已假定你也許不知道目標(biāo)處理器,而引用專用內(nèi)存地址變得沒(méi)有必要。去掉指針的結(jié)果不僅提高了安全性,還簡(jiǎn)化了編程,錯(cuò)誤也減少了。
E)垃圾收集
垃圾收集自動(dòng)收集內(nèi)存中未引用的內(nèi)存,并將其歸回空閑內(nèi)存鏈表中。JVM使用此功能將不在使用的內(nèi)存還給系統(tǒng)。
F)網(wǎng)絡(luò)
由于今天的嵌入式系統(tǒng)通常都是網(wǎng)絡(luò)的,采用內(nèi)置網(wǎng)絡(luò)支持的語(yǔ)言節(jié)約了在實(shí)現(xiàn)網(wǎng)絡(luò)協(xié)議和通信程序方面耗費(fèi)的大量時(shí)間和努力。在Java中,網(wǎng)絡(luò)類包括TCP/IP流和使用TCP及UDP的數(shù)據(jù)報(bào)程序,用于HTTP和URL服務(wù)的操作方法,以及錯(cuò)誤檢查代碼和恢復(fù)功能。
G)動(dòng)態(tài)配置
動(dòng)態(tài)配置是指一系統(tǒng)啟動(dòng)時(shí)的用戶制定配置或重新配置。需載入特殊的硬件配置、網(wǎng)絡(luò)參數(shù)或在引導(dǎo)期間支持特定用途的一些實(shí)用程序的系統(tǒng),常常使用動(dòng)態(tài)配置。
H)異常處理
與許多操作系統(tǒng)和程序不同,對(duì)嵌入系統(tǒng)而言,重新啟動(dòng)通常是無(wú)法接受的,就像我們都不希望打電話或者看電視時(shí)突然有技術(shù)性的中斷一樣。這意味著實(shí)際上所有嵌入式系統(tǒng)都必須足夠堅(jiān)實(shí)以截取錯(cuò)誤來(lái)防止它們使程序或更糟的是使整個(gè)設(shè)備崩潰。
以上介紹的就是嵌入式比java難多少了,選擇嵌入式的話,自己就要多用心去準(zhǔn)備了,不要最后浪費(fèi)了時(shí)間還沒(méi)有學(xué)到嵌入式技術(shù),也不要一心兩用,學(xué)著嵌入式還想著是不是應(yīng)該選擇java,這樣就不對(duì)了。