Java是最常用的編程語言之一,特別是因?yàn)樗子陂_發(fā)和跨平臺(tái)。但是,Java尚未在嵌入式系統(tǒng)的開發(fā)中被廣泛采用。想學(xué)習(xí)java技術(shù)的同學(xué),建議考慮報(bào)名參加Java培訓(xùn),有明確的學(xué)習(xí)路線和全面系統(tǒng)的課程,能獲得較快提升。
事實(shí)上,C/C++仍然是嵌入式系統(tǒng)最流行的編程語言,大約80%的嵌入式系統(tǒng)項(xiàng)目是用C/C++編寫的,但未來不會(huì)這樣,可能會(huì)采用新的語言來滿足市場(chǎng)增長(zhǎng),用C/C++構(gòu)建項(xiàng)目非常耗時(shí)。本文的目的是展示在嵌入式系統(tǒng)開發(fā)中使用Java的主要優(yōu)點(diǎn),以及該語言的缺點(diǎn)(同時(shí),還提出了處理和解決這些缺點(diǎn)的方法)。
物聯(lián)網(wǎng)和嵌入式系統(tǒng)與Java
多年來,參與嵌入式系統(tǒng)開發(fā)的專業(yè)人員數(shù)量大幅增長(zhǎng)。當(dāng)然,這類專業(yè)人員與從事桌面和移動(dòng)應(yīng)用程序開發(fā)的人數(shù)之間存在巨大差異。但是,根據(jù)IC Insights的數(shù)據(jù),三年后,嵌入式設(shè)備的MPU銷量將與智能手機(jī)持平。
一般來說,機(jī)器都配備了真正的技術(shù)武器庫(kù)。我們周圍的產(chǎn)品,如汽車和家用電器,已經(jīng)被創(chuàng)造出能夠響應(yīng)不同事件和人類需求的能力。在此背景下,物聯(lián)網(wǎng)代表的不是未來的趨勢(shì),而是現(xiàn)在正在發(fā)生的事情。這也可以在工業(yè)環(huán)境中看到,工業(yè)自動(dòng)化要求更多的連接、數(shù)據(jù)分析,當(dāng)然還有新的儀表盤。在java培訓(xùn)中,也有很多關(guān)于 Java 部署工具的學(xué)習(xí),理論知識(shí)+實(shí)踐項(xiàng)目,雙管齊下,學(xué)以致用,讓你深入淺出地學(xué)習(xí)java。
考慮到所有這些,有必要關(guān)注未來的預(yù)期。盡管C和C++需要更少的內(nèi)存和CPU周期,但Java應(yīng)該被認(rèn)為是嵌入式系統(tǒng)的更好選擇,因?yàn)樗亲钣薪M織的編程語言之一,非常適合大型項(xiàng)目。Java對(duì)于嵌入式系統(tǒng)環(huán)境具有理想的特性,包括可移植性、代碼重用、可靠性、安全性、WEB以及與其他嵌入式系統(tǒng)的連接。為了提供嵌入式世界所需要的(并且已經(jīng)需要的)東西,使用像Java這樣的高級(jí)語言是很重要的。此外,世界上有很多Java開發(fā)人員,遷移到嵌入式系統(tǒng)對(duì)他們來說應(yīng)該不是問題。
在嵌入式系統(tǒng)上使用Java的優(yōu)勢(shì)
使用Java為嵌入式設(shè)備開發(fā)應(yīng)用程序,除了具有最佳的語言質(zhì)量外,還可以通過多種用途和現(xiàn)有支持,減少項(xiàng)目創(chuàng)建所需的時(shí)間和成本。很多對(duì)java感興趣的初學(xué)者都會(huì)選擇報(bào)java培訓(xùn)班學(xué)習(xí),可以更快速學(xué)到有用的知識(shí)和技能,節(jié)省很多時(shí)間和精力。
因此,讓我們看看為什么你應(yīng)該在嵌入式系統(tǒng)中使用Java的其他原因:
l 上市時(shí)間很重要,開發(fā)時(shí)間更短:Java具有理想的內(nèi)存管理,更容易檢測(cè)錯(cuò)誤(并修復(fù)錯(cuò)誤);
l 建議用于具有5個(gè)以上屏幕的GUI項(xiàng)目;
l 從第一版開始堅(jiān)固耐用(得益于包裝概念、設(shè)計(jì)模式和SOLID原則);
l 簡(jiǎn)單
l 可移植到不同的CPU或操作系統(tǒng)(無需重寫代碼);
l 安全性,支持加密敏感數(shù)據(jù);
l 大量獨(dú)立于操作系統(tǒng)的庫(kù);
l 可在桌面和遠(yuǎn)程調(diào)試;
l 在高級(jí)語言和高性能方面的最佳折衷(取決于所使用的虛擬機(jī));
將Java用于嵌入式系統(tǒng)的缺點(diǎn)
l Java非常冗長(zhǎng);
l 它復(fù)雜而龐大(217個(gè)包,4240個(gè)類);
l 低性能。
甚至Oracle自己也創(chuàng)建了Java SE Embedded來解決這些問題,并為嵌入式設(shè)備優(yōu)化了虛擬機(jī)。但是,這對(duì)于大量以低端設(shè)備為目標(biāo)的項(xiàng)目來說是不夠的。這種擔(dān)憂一直是Java進(jìn)入嵌入式系統(tǒng)的主要障礙。但好消息是,有一些新技術(shù)旨在解決所有這些問題。想要學(xué)習(xí)java更多知識(shí)和技能,可以考慮參加java培訓(xùn),有經(jīng)驗(yàn)豐富的專業(yè)講師指導(dǎo)教學(xué),有緊跟市場(chǎng)需求的實(shí)時(shí)課程,可以讓你快速掌握這門技術(shù),節(jié)約時(shí)間,少走彎路。
嵌入式系統(tǒng)的低尺寸和高性能
為了實(shí)現(xiàn)這一目標(biāo),有必要找到一種替代完整Java和Java虛擬機(jī)的方法。在本例中,TotalCross是一個(gè)有趣的框架。
TotalCross是一個(gè)用于嵌入式系統(tǒng)的SDK,它使用自己的虛擬機(jī),稱為TotalCrossVirtual machine(TCVM)。TCVM不是基于堆棧的JVM,而是基于寄存器的虛擬機(jī)。這在運(yùn)行時(shí)間上產(chǎn)生了巨大的差異,因?yàn)樗鼫p少了加載的指令數(shù)量。正如你在下面的示例中看到的,一個(gè)簡(jiǎn)單的操作在JVM上加載四條指令,而在TCVM上運(yùn)行時(shí)僅加載一條指令。
除了TCVM,還基于統(tǒng)計(jì)研究創(chuàng)建了名為TotalCross字節(jié)碼的優(yōu)化字節(jié)碼,以識(shí)別對(duì)性能影響較大的最常用函數(shù)。除了這些函數(shù)減少指令數(shù)量的壓力之外,這種優(yōu)化的字節(jié)碼還確保了低占用空間,因?yàn)樗褂昧薐ava的一個(gè)子集Nano Java,只有86個(gè)包和1184個(gè)類(全Java的四分之一)。TotalCross不使用所有的Java體系結(jié)構(gòu),只使用嵌入式應(yīng)用程序開發(fā)所需的體系結(jié)構(gòu)。所有這些特性為嵌入式系統(tǒng)提供了5MB的空間和高性能。
結(jié)論
在嵌入式系統(tǒng)上使用Java的優(yōu)點(diǎn)多于缺點(diǎn),特別是因?yàn)榇a的質(zhì)量和大量已經(jīng)能夠使用Java編程的人。在嵌入式系統(tǒng)世界中擁有Java社區(qū)尤為重要,因?yàn)樗蔷幊淌澜缰械牡谌笊鐓^(qū)。但是,正如我們所看到的,空間和性能會(huì)影響項(xiàng)目結(jié)果。因此,建議采用能夠打破這些障礙的替代方案,如TotalCross框架。有了它,就有可能享受Java的所有優(yōu)點(diǎn),并且仍然可以保證嵌入式系統(tǒng)的低占地面積和高性能。通過java培訓(xùn)的學(xué)習(xí),你可以學(xué)到很多企業(yè)級(jí)項(xiàng)目經(jīng)驗(yàn)和技能,找到工作后,可以立馬上崗實(shí)操,大大提高開發(fā)效率。