◆李志欽 郭云飛 桑園
安全模型、算法與編程
Java編程語言在嵌入式系統(tǒng)開發(fā)中優(yōu)缺點分析
◆李志欽 郭云飛 桑園
(鄭州西亞斯學(xué)院電子信息工程學(xué)院 河南 451150)
隨著科技的發(fā)展及5G時代的到來,當(dāng)代社會正從互聯(lián)網(wǎng)時代向物聯(lián)網(wǎng)時代發(fā)展。如果說互聯(lián)網(wǎng)是把人作為連接和服務(wù)對象,那么物聯(lián)網(wǎng)就是將信息網(wǎng)絡(luò)連接和服務(wù)的對象從人擴(kuò)展到物,以實現(xiàn)“萬物互聯(lián)”。物聯(lián)網(wǎng)是以嵌入式系統(tǒng)為中心,而Java編程語言在嵌入式系統(tǒng)的開發(fā)中占據(jù)一席之地,對此,本文主要介紹嵌入式系統(tǒng),探討Java編程語言在嵌入式系統(tǒng)開發(fā)中的優(yōu)點和一些不足之處。方便人們更加清楚的了解Java編程語言在嵌入式系統(tǒng)開發(fā)中的作用,以便更好推動物聯(lián)網(wǎng)技術(shù)的發(fā)展。
Java;嵌入式開發(fā);優(yōu)缺點;應(yīng)用
近年來,物聯(lián)網(wǎng)技術(shù)在智能家居、自動駕駛、智慧醫(yī)療,智能工業(yè)控制系統(tǒng)等領(lǐng)域快速發(fā)展,嵌入式開發(fā)也得到越來越多的研究和應(yīng)用。嵌入式系統(tǒng)的開發(fā)與PC系統(tǒng)的開發(fā)不同,嵌入式系統(tǒng)的開發(fā)要依據(jù)客戶的不同要求和硬件實際情況對系統(tǒng)功能,成本,功耗等要做更加詳細(xì)的開發(fā),因此,加深對Java編程語言在嵌入式系統(tǒng)開發(fā)中的研究,是嵌入式系統(tǒng)的開發(fā)過程中必須經(jīng)歷的環(huán)節(jié)。
目前,嵌入式系統(tǒng)已經(jīng)是一種應(yīng)用非常廣泛的系統(tǒng),它已經(jīng)出現(xiàn)在很多場合,例如智能硬件,通訊器材,自動駕駛汽車,醫(yī)療設(shè)備,無人機(jī)等都有嵌入式系統(tǒng)的身影。一般說的嵌入式系統(tǒng)包含硬件和軟件,軟件用來控制硬件,硬件用來支撐軟件運行。通常嵌入式系統(tǒng)可以理解為一種專用的微型計算機(jī)系統(tǒng),它作為設(shè)備的一部分,協(xié)助設(shè)備完成一些特定的任務(wù),其中的操作系統(tǒng)和應(yīng)用程序都可以固化在ROM中。不過隨著硬件性能的不斷升級和編程技術(shù)的發(fā)展,嵌入式系統(tǒng)應(yīng)用在原來的基礎(chǔ)上有很大的改善,這時的嵌入式系統(tǒng)已經(jīng)具備了文件和目錄管理、設(shè)備管理、多任務(wù)、圖形化管理界面等功能?,F(xiàn)在是面向Internet的階段,對嵌入式系統(tǒng)提出來更高的要求,匯編語言雖然在硬件上有緊密的聯(lián)系,但是很難開發(fā)和維護(hù),也不利于移植,而Java編程語言在系統(tǒng)的開發(fā)及維護(hù)方面則非常方便,它的JVM虛擬機(jī)可以讓嵌入式系統(tǒng)跨平臺運行,因此,Java編程語言非常符合嵌入式系統(tǒng)開發(fā)的需求。
Java編程語言是一種面向?qū)ο蟮木幊陶Z言。Java編程語言中的各個類按規(guī)則被組織成一個復(fù)雜的數(shù)據(jù)結(jié)構(gòu),在這種結(jié)構(gòu)中,一個子類能夠繼承其超類(父類)允許繼承的行為,并可用子類所具備的一些特有功能來擴(kuò)展其超類的功能;同時Java編程語言作為面向?qū)ο蟮木幊陶Z言,程序設(shè)計者在嵌入式系統(tǒng)開發(fā)中可以利用和更改已有的類庫來完成開發(fā)[1],這使得用Java編程語言進(jìn)行嵌入式開發(fā)的效率和可維護(hù)性大大提高。
由于嵌入式系統(tǒng)往往有著特殊的需求,需要不同硬件進(jìn)行協(xié)同工作,所以一般情況下在嵌入式系統(tǒng)開發(fā)的過程中,針對不同硬件所需要的不同或類似的嵌入式系統(tǒng),程序設(shè)計者要對嵌入式系統(tǒng)進(jìn)行重新開發(fā),而由于Java編程語言具有強(qiáng)大的跨平臺性,其“一次編寫,到處運行”的特點使其十分適合在硬件與平臺差異較大的嵌入式系統(tǒng)上進(jìn)行運行,不僅可以大大減少開發(fā)所需的工作量,同時也可以保證所開發(fā)產(chǎn)品的運行在復(fù)雜應(yīng)用環(huán)境中。JVM虛擬機(jī)使得一個模塊可以只要做很少的工作就可以適應(yīng)多個項目和硬件平臺,甚至包括在編寫一個新的目標(biāo)板時,采用新的硬件(CPU或外設(shè))和軟件都可以進(jìn)行移植。
網(wǎng)絡(luò)環(huán)境存在著各種各樣的潛在威脅,所以安全性對于嵌入式系統(tǒng)開發(fā)來說就變得異常重要。Java編程語言具有多個層次的安全防護(hù)措施,可以阻擋病毒與其他的入侵行為,以避免造成嵌入式系統(tǒng)內(nèi)的不穩(wěn)定[2],并且Java編程語言本身所具有的安全模型為了使用戶避免受到通過網(wǎng)絡(luò)下載的來自非可信任源的惡意程序的破壞,提供了一種可定制的“沙箱(sandbox)”,而用Java編程語言所編寫的嵌入式系統(tǒng)就在這個沙箱中運行。嵌入式系統(tǒng)可以在沙箱內(nèi)做任何事,而在沙箱外則什么也不能做?;谏鲜鲈?,用Java編程語言進(jìn)行嵌入式系統(tǒng)開發(fā)的產(chǎn)品安全性大大提高。
Java編程語言的字節(jié)碼文件的執(zhí)行是通過JVM虛擬機(jī)來運行的,而JVM虛擬機(jī)基本是用C語言、C++語言等編程語言實現(xiàn)的,所以與C語言、C++語言等語言所編寫的程序相比,Java編程語言的字節(jié)碼文件執(zhí)行多了一個中間層(JVM虛擬機(jī)),這使得在相同條件下Java編程語言所編寫的程序在響應(yīng)速度比C語言及C++語言所編寫的程序慢了許多。對一些并非受制于CPU的嵌入系統(tǒng)來說,這一性能缺點不是問題,但是經(jīng)常過長的響應(yīng)時間會導(dǎo)致系統(tǒng)產(chǎn)生用戶無法接受的延時應(yīng)答。
JVM虛擬機(jī)的存在使得Java語言具有了強(qiáng)大的跨平臺特性,但同時其又需要占用一定的儲存空間。而嵌入式系統(tǒng)的內(nèi)存資源異常寶貴,并且為了實現(xiàn)Java編程語言的可移植性,必須對JVM進(jìn)行完整的采納,這就造成了Java編程語言所開發(fā)的嵌入式系統(tǒng)需要大量內(nèi)存空間。
Java編程語言缺乏直接同硬件接口的能力。JVM虛擬機(jī)本身是一個虛擬的環(huán)境,是一個對硬件的軟件抽象,虛擬機(jī)控制與實際硬件的接口,而數(shù)據(jù)的流通只能和虛擬機(jī)打交道,不能直接操作硬件,但嵌入式開發(fā)所開發(fā)出的產(chǎn)品基本上都需要與硬件進(jìn)行頻繁的交流,這就使Java在嵌入式開發(fā)中形成了缺乏直接硬件接口的缺點。
為解決上述問題,系統(tǒng)設(shè)計者在設(shè)計系統(tǒng)時根據(jù)用戶實際需求,可以采用下述方案:
第一,系統(tǒng)設(shè)計者可以采用性能更加強(qiáng)大的處理器,把系統(tǒng)的響應(yīng)時間縮短到用戶可以接受的范圍內(nèi),或是在系統(tǒng)上并入JIT編譯器(即時編輯器),讓JIT編譯器通過在運行時將字節(jié)碼編譯為本機(jī)代碼來幫助提高Java程序的性能。
第二,系統(tǒng)設(shè)計者可以針對硬件平臺進(jìn)行改進(jìn),以增大內(nèi)存容量或是對系統(tǒng)代碼進(jìn)行優(yōu)化,在不影響系統(tǒng)功能的前提下縮減或優(yōu)化系統(tǒng)代碼,以此來彌補(bǔ)Java在嵌入式開發(fā)中JVM內(nèi)存開銷過大的問題。
第三,系統(tǒng)設(shè)計者通過內(nèi)嵌C語言程序來提高本身硬件接口能力[3]。使用C語言來編寫需要直接訪問硬件的代碼,即,在調(diào)用C代碼時裝入與JVM虛擬機(jī)同樣的內(nèi)存空間,運行于同樣的環(huán)境,因為它們被編譯成機(jī)器碼,系統(tǒng)能夠運行更快并能直接訪問硬件,從而實現(xiàn)Java編程語言對硬件的訪問的功能。
5G的發(fā)展促使物聯(lián)網(wǎng)的應(yīng)用面不斷擴(kuò)大,傳統(tǒng)嵌入式系統(tǒng)已經(jīng)滿足不了當(dāng)代社會的需求,而Java編程語言對嵌入式系統(tǒng)的開發(fā)是一個有力的補(bǔ)充。雖然Java編程語言在嵌入式系統(tǒng)的開發(fā)中有缺點,但是Java編程語言的兼容性、安全性,跨平臺性等優(yōu)點對于嵌入式系統(tǒng)開發(fā)的促進(jìn)作用遠(yuǎn)遠(yuǎn)大于其缺點。所以,我們應(yīng)更加大力發(fā)展Java編程語言在嵌入式系統(tǒng)中的開發(fā)。
[1]田智.Java在嵌入式系統(tǒng)中的應(yīng)用與實現(xiàn)[J].無線互聯(lián)科技,2015(19):91-92.
[2]薛慧君.基于Java技術(shù)在嵌入式系統(tǒng)中的作用探討[J].黑龍江科技信息,2017(03):184.
[3]袁薊濱.淺析Java技術(shù)在嵌入式系統(tǒng)中的作用[J].電腦迷,2017(08):79.