面向嵌入式開發(fā)的八個Java框架,你知道幾個?
譯文譯者 | 布加迪
審校 | 墨色
編寫嵌入式Java應(yīng)用程序的開發(fā)人員有一大堆框架及其他工具可供選擇。本文介紹了當(dāng)今用于嵌入式開發(fā)的幾種最佳Java框架。
Java的創(chuàng)造者對這種語言的愿景是“編寫一次,隨處運行”,他們在嵌入式領(lǐng)域取得的成功再明顯不過了。只需編寫Java程序的一個版本即可任意運行幾乎一模一樣的二進制文件,這對于為小型設(shè)備和隱藏計算機創(chuàng)建軟件的團隊來說有很大的吸引力。在許多情況下,這些開發(fā)人員對將在最終交付產(chǎn)品中運行的CPU了解不多,他們也不需要了解太多。
從長遠(yuǎn)來看,Java可在任何地方運行的靈活性還有助于產(chǎn)品團隊,因為第二代、第三代或第四代產(chǎn)品可能在不同的芯片上運行。軟件通??梢愿膭?,幾乎不需要編寫額外的代碼。
如今,許多Java框架被用于創(chuàng)建嵌入式Java應(yīng)用程序。一些是用于多種機器的通用工具。它們通常是創(chuàng)建新應(yīng)用程序的團隊眼里的最佳選擇。
其他框架是為特定設(shè)備或設(shè)備系列開發(fā)的。這可能包括編程基礎(chǔ)和支持運行應(yīng)用程序的設(shè)備或其他產(chǎn)品的功能。這種嵌入式Java框架最常見的例子可能是安卓,開發(fā)人員用它來為安卓機手機、Chromebook及電視等其他設(shè)備創(chuàng)建應(yīng)用程序。
下面列舉了八種出色的嵌入式Java框架。每一種都利用了Java平臺的穩(wěn)定性和廣度以及面向小型設(shè)備和隱藏計算機的第三方庫。這些框架對傳統(tǒng)的Java技術(shù)和方法稍加改動,以便在嵌入式市場上運行得更快、更輕盈。
安卓
安卓可能是最知名的Java嵌入式框架。它最初是谷歌為了與蘋果競爭而開發(fā)的手機創(chuàng)建應(yīng)用程序的基礎(chǔ)。許多原始代碼庫都是開源的,現(xiàn)在許多其他類型的設(shè)備(不僅僅是手機)都支持安卓應(yīng)用程序。Chromebook中使用的谷歌ChromeOS就是一個例子。眾多小設(shè)備將安卓應(yīng)用程序引入到了客廳的大平面屏幕上。
編寫安卓應(yīng)用程序是覆蓋所有這些設(shè)備的簡單方法。它還允許設(shè)備創(chuàng)建者向第三方開發(fā)人員開放產(chǎn)品。
一些開發(fā)人員只使用基本的安卓庫,這對于許多程序來說綽綽有余。其他人使用位于安卓之上的框架。一些最受歡迎的框架是Ionic、Flutter和Framework7。共同的特點讓開發(fā)人員可以針對iOS等其他平臺重新改造設(shè)計。比如說,F(xiàn)lutter針對六個不同的平臺。
Java嵌入式框架
Java嵌入式框架使開發(fā)人員更容易編寫與嵌入式系統(tǒng)中常見的接口對話的高級Java代碼。流行的框架有Raspberry Pi和Orange Pi。使用這種框架,你無需掌握與SPI、I2C、Serial、GPIO或One Wire等硬件接口通信所需的低級編程??蚣艿拈_發(fā)人員已經(jīng)為你處理了大部分任務(wù)。
Java嵌入式框架分為幾大模塊。主模塊直接連接到控制板卡的Linux OS層。它簡化了使用純Java連接到操作系統(tǒng)層上的許多任務(wù)。這些板卡上常見的主要硬件部件也有驅(qū)動程序。
Oracle Event Processing
嵌入式設(shè)備的工作之一是捕獲數(shù)據(jù)。比說,工廠車間依靠嵌入式機器來跟蹤生產(chǎn)并觀察異常情況。Oracle Event Processing框架是Oracle事件驅(qū)動服務(wù)器的輕量級版本,它使設(shè)備能夠捕獲事件、過濾事件,并根據(jù)需要傳遞事件。部分配置語法借鑒了SQL,因而比較容易上手。該框架的事件處理模型還可以深挖事件流,以尋找數(shù)據(jù)中的關(guān)聯(lián)及其他模式。
Jersey
如果工作需要對嵌入式設(shè)備進行編程以響應(yīng)充分利用REST的事件,Jersey是個不錯的選擇。通過擴展JAX-RS工具包,它對進進出出的JSON數(shù)據(jù)包進行了優(yōu)化。架構(gòu)師之所以喜歡這款解決方案,是由于它可能是與設(shè)備自動通信的最佳方式之一。
Jersey提供了幾項額外的功能,包括“分塊處理”響應(yīng)的能力。這意味著存儲數(shù)據(jù),然后以一大塊的形式發(fā)送數(shù)據(jù)。分塊對于并不總是連接到互聯(lián)網(wǎng)的設(shè)備特別有用。它還有助于減輕負(fù)責(zé)與許多設(shè)備通信的任何中央服務(wù)器上的負(fù)擔(dān)。
Vert. x
許多人將Vert.x視為構(gòu)建功能齊全的Web應(yīng)用程序的框架。好就好在,它被分解成模塊,你不必使用所有模塊。Vert.x的核心包含用于編寫與世界和機器交互的服務(wù)的大部分重要代碼。任何創(chuàng)建基本工具的人都依賴Vert.x框架的網(wǎng)絡(luò)和文件系統(tǒng)協(xié)議來設(shè)置處理進出請求的流。
一些Vert.x模塊可能是嵌入式任務(wù)的理想選擇。比如說,OpenAPI庫和API服務(wù)庫執(zhí)行支持API的許多工作。GraphQL庫包含支持GraphQL調(diào)用所必要的例程。這些庫主要致力于構(gòu)建Web應(yīng)用程序和Web服務(wù),但它們也可用于處理更簡單的通信。
Dropwizard
如果目標(biāo)是構(gòu)建一個簡單、強大且充分利用REST的Web服務(wù),許多Java開發(fā)人員會轉(zhuǎn)向Dropwizard。它還是嵌入式應(yīng)用程序的出色選擇。你可以使用Web服務(wù)API來控制和配置設(shè)備,其他設(shè)備可以通過其API訪問該服務(wù)。人類可以通過帶有一點JavaScript的靜態(tài)HTML頁面來控制服務(wù)。
Dropwizard分為許多較小的模塊,可以根據(jù)你需要的功能添加或排除這些模塊。核心模型和數(shù)據(jù)庫模塊適用于基本任務(wù)。與服務(wù)交互的人可以使用表單或視圖模塊。身份驗證通常是個好主意,Dropwizard的身份驗證模塊支持基本協(xié)議和OAuth2議。
Apache Mina
任何需要強大網(wǎng)絡(luò)層的應(yīng)用程序都可以使用Apache Mina,安全可靠地處理一些不同的NDP(鄰居發(fā)現(xiàn)協(xié)議)或TCP連接。該代碼構(gòu)建在新的IO類(Java NIO) 之上,因此開發(fā)人員可以以更抽象的方式處理進出的數(shù)據(jù)。它的代碼主要是事件驅(qū)動的,因此開發(fā)人員無需關(guān)注網(wǎng)絡(luò)接口。
Java Card
一些嵌入式處理器裹以額外的安全層,以幫助處理敏感數(shù)據(jù),比如金融交易的細(xì)節(jié)。Oracle的Java Card支持在防篡改芯片等安全飛地(enclave)內(nèi)運行的多個應(yīng)用程序。這些CPU通常速度較慢且內(nèi)存較少,Java Card的框架經(jīng)過精簡,可以在資源較少的情況下順暢運行。
總結(jié)
Java Web框架怎么樣?
雖然本文重點介紹了為嵌入式機器設(shè)計的框架,但實際上越來越多的開發(fā)人員在為嵌入式設(shè)備創(chuàng)建Web應(yīng)用程序。小設(shè)備可能功能較弱,但它們通常有足夠的內(nèi)存和CPU能力,為少數(shù)幾個客戶端運行Web服務(wù)器應(yīng)用程序。一個不適合開放互聯(lián)網(wǎng)上十億用戶的應(yīng)用程序可以在嵌入式系統(tǒng)中順暢運行。
這常常是很好的解決方案,因為它讓用戶可以借助Web應(yīng)用程序連接到設(shè)備。開發(fā)人員可以利用基本網(wǎng)站的所有標(biāo)準(zhǔn)功能。
許多流行的Web應(yīng)用程序框架在小型機器上運行得非常好。這一方面歸因于竭力縮小和簡化Java Web應(yīng)用程序的服務(wù)器端。Spring Boot、Vert.x和Vaadin(另見Hilla)等更新穎的輕量級框架都是可靠的選擇。一些嵌入式開發(fā)人員甚至可以使用更舊更笨重的框架,比如Spring、Struts或JavaServer Faces。
所有這些框架都可以追溯到服務(wù)器功能不那么強大的年代。它們適用于一個用戶需要與軟件交互,而嵌入式設(shè)備功能比較強大的場景。
將標(biāo)準(zhǔn)Java用于嵌入式應(yīng)用程序
一些開發(fā)人員不需要使用嵌入式框架,因為他們從標(biāo)準(zhǔn)Java版本獲得了所需的庫和功能。Java Micro Edition(JME)有多個版本,一些是專門為嵌入式系統(tǒng)設(shè)計的。它們提供了重要的Java庫,比如用于身份驗證的Auth庫以及用于解析和編寫消息的JSON庫。在一些情況下,這可能足夠了。
面對更龐大、更強大板卡的開發(fā)人員甚至可以將Java標(biāo)準(zhǔn)版用于小型設(shè)備上的嵌入式應(yīng)用程序。Oracle Java SE Embedded是針對嵌入式環(huán)境調(diào)整的Java標(biāo)準(zhǔn)版本。
Oracle通過提供標(biāo)準(zhǔn)二進制文件來支持許多不同類型的設(shè)備。比如說,Raspberry Pi及其他一些小型嵌入式系統(tǒng)是預(yù)構(gòu)建的。Oracle還支持重要的細(xì)分市場,比如電話和電視。
對于基本的嵌入式Java開發(fā)項目而言,Oracle的標(biāo)準(zhǔn)下載版可以提供你需要的一切。
原文鏈接:
??https://www.infoworld.com/article/3669317/8-java-frameworks-for-embedded-development.html??