IoT、UI/UX 和 AI 等嵌入式系統(tǒng)每天都變得越來越復(fù)雜。過去只有一兩個(gè)功能的產(chǎn)品,現(xiàn)在為用戶提供了更多的實(shí)用程序,要求用戶界面反映體驗(yàn)。物聯(lián)網(wǎng)正在改變我們處理硬件的方式,確保實(shí)現(xiàn)互聯(lián)、自動(dòng)化甚至更智能的日常工作。Java 是最常用的編程語言之一,特別是因?yàn)樗子陂_發(fā)和跨平臺(tái)。但是,Java 在嵌入式系統(tǒng)的開發(fā)中還沒有被廣泛采用。事實(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í),而且很難找到或培訓(xùn)新的 C/C++ 專業(yè)人員。本文的目的是展示使用 Java 進(jìn)行嵌入式系統(tǒng)開發(fā)的主要優(yōu)點(diǎn),以及這種語言的缺點(diǎn)(以及處理和解決這些缺點(diǎn)的建議方法)。
物聯(lián)網(wǎng)和嵌入式系統(tǒng)與 Java
多年來,從事嵌入式系統(tǒng)開發(fā)的專業(yè)人員數(shù)量顯著增加。當(dāng)然,這類專業(yè)人員與從事桌面和移動(dòng)應(yīng)用程序開發(fā)的人數(shù)之間存在巨大差異。但是,據(jù) IC Insights 稱,用于嵌入式設(shè)備的 MPU 的銷售額將在三年內(nèi)與智能手機(jī)處于同一水平。
一般來說,機(jī)器都配備了真正的技術(shù)武器庫(kù)。我們周圍的產(chǎn)品,如汽車和家用電器,都具有響應(yīng)不同事件和人類需求要求的能力。在這種情況下,物聯(lián)網(wǎng)代表的不是未來趨勢(shì),而是正在發(fā)生的事情。這也可以在工業(yè)環(huán)境中看到。工業(yè)自動(dòng)化需要更多的連接性、數(shù)據(jù)分析,當(dāng)然還有新的儀表板。
考慮到所有這些,有必要關(guān)注未來的期望。盡管 C 和 C++ 需要更少的內(nèi)存和 CPU 周期,但 Java 應(yīng)該被視為嵌入式系統(tǒng)的更好選擇,因?yàn)樗亲钸m合大型項(xiàng)目的最有組織的編程語言之一。Java 具有適合嵌入式系統(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àng)目創(chuàng)建的時(shí)間和成本,這要?dú)w功于用途的多樣性和現(xiàn)有的支持。那么,讓我們看看為什么應(yīng)該將 Java 用于嵌入式系統(tǒng)的其他一些原因:
上市時(shí)間很重要,可以縮短開發(fā)時(shí)間:Java 具有理想的內(nèi)存管理,并且更容易檢測(cè)錯(cuò)誤(并修復(fù)錯(cuò)誤);
推薦用于超過 5 個(gè)屏幕的 GUI 項(xiàng)目;
從第一個(gè)版本開始就很堅(jiān)固(感謝包概念、設(shè)計(jì)模式和 SOLID 原則);
簡(jiǎn)單;
可移植到不同的 CPU 或操作系統(tǒng)(無需重寫代碼);
安全性,支持加密敏感數(shù)據(jù);
大量獨(dú)立于操作系統(tǒng)的庫(kù);
可在桌面和遠(yuǎn)程調(diào)試;
高級(jí)語言和高性能方面的最佳折衷方案(取決于使用的虛擬機(jī));
看起來很完美!但是(就像世界上的一切一樣)也有一些缺點(diǎn)。讓我們看看 Java 對(duì)嵌入式系統(tǒng)的挑戰(zhàn)。
在嵌入式系統(tǒng)中使用 Java 的缺點(diǎn)
選擇 Java 有很多充分的理由。但是,在嵌入式系統(tǒng)上使用 Java 存在三個(gè)主要缺點(diǎn):
Java 相當(dāng)冗長(zhǎng)。
它復(fù)雜而龐大(217 個(gè)包,4240 個(gè)類);
性能低下。
甚至 Oracle 自己也創(chuàng)建了 Java SE Embedded 來解決這類問題,并為嵌入式設(shè)備優(yōu)化了虛擬機(jī)。但是,對(duì)于大量針對(duì)低端設(shè)備的項(xiàng)目來說,這還不夠。
這種擔(dān)憂一直是 Java 進(jìn)入嵌入式系統(tǒng)的主要障礙。但好消息是,有一些新技術(shù)旨在解決所有這些問題。
適用于嵌入式系統(tǒng)的低占用空間和高性能
為了實(shí)現(xiàn)這個(gè)目標(biāo),有必要找到完整的 Java 和 Java 虛擬機(jī)的替代方案。在這種情況下,TotalCross是一個(gè)有趣的框架。
TotalCross 是一個(gè)用于嵌入式系統(tǒng)的 SDK,它使用自己的虛擬機(jī),稱為 TotalCross 虛擬機(jī) (TCVM)。TCVM 不是基于堆棧的 JVM,而是基于寄存器的虛擬機(jī)。這在運(yùn)行時(shí)間上有很大的不同,因?yàn)樗鼫p少了加載的指令數(shù)量。正如您在以下示例中所見,一個(gè)簡(jiǎn)單的操作在 JVM 上加載了 4 條指令,而在 TCVM 上運(yùn)行時(shí)只加載了一條。
除了 TCVM 之外,還根據(jù)統(tǒng)計(jì)研究創(chuàng)建了一種稱為 TotalCross 字節(jié)碼的優(yōu)化字節(jié)碼,以識(shí)別對(duì)性能影響較大的最常用函數(shù)。除了這些函數(shù)減少指令數(shù)量的壓力外,這種優(yōu)化的字節(jié)碼還確保了低占用空間,因?yàn)樗褂昧艘粋€(gè)名為 Nano Java 的 Java 子集,它只有 86 個(gè)包和 1184 個(gè)類(完整 Java 的 1/4)。
TotalCross 沒有使用所有的 Java 架構(gòu),而只使用了嵌入式應(yīng)用程序開發(fā)所必需的。所有這些特性為嵌入式系統(tǒng)提供了 5MB 的占用空間和高性能。
結(jié)論
在嵌入式系統(tǒng)上使用 Java 的優(yōu)點(diǎn)多于缺點(diǎn),特別是因?yàn)榇a的質(zhì)量和大量已經(jīng)能夠使用 Java 編程的人。在嵌入式系統(tǒng)領(lǐng)域擁有 Java 社區(qū)尤其重要,因?yàn)樗蔷幊淌澜缰械牡谌笊鐓^(qū)。但是,正如我們所見,占地面積和性能會(huì)影響項(xiàng)目結(jié)果。因此,建議使用能夠打破這些障礙的替代方案,例如 TotalCross 框架。有了它,就可以享受 Java 的所有優(yōu)點(diǎn),同時(shí)仍然保證嵌入式系統(tǒng)的低占用空間和高性能。
審核編輯:郭婷
-
嵌入式
+關(guān)注
關(guān)注
5082文章
19115瀏覽量
304914 -
AI
+關(guān)注
關(guān)注
87文章
30805瀏覽量
268933 -
IOT
+關(guān)注
關(guān)注
187文章
4207瀏覽量
196725
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論