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