2014-12-05 24 views
5

我正在查看運行在JBed上的程序的一些Java代碼,這是一個實時Java派生程序。我還不太熟悉JBed。我可以爲嵌入式設備進行普通的Java編程嗎?

該設備只有16 MB的RAM,代碼看起來更像C++。它很少將對象作爲返回值並使用全局變量,因此代碼很難理解。

由於可用的RAM量很少,或者RAM的給定量很少,是否需要優化?是否可以以「常規」方式實現?

我明白,在某個時候,對象可能會導致太多開銷,所以Java將不再適用。如果我們進一步下去,甚至C++會導致太多的開銷,只有C是一個選項(例如,在具有8kB的德州儀器MSP430上)。然而,我的假設是,如果我使用Java,我正確地使用它,而不是例如返回返回值的一半(例如兩個int S IN一個return聲明,另一半通過設置一個成員。相反,我會用某種Pair類作爲返回值。

我不在乎它是否是很多OO編程,它也可能是FP風格,但至少使用原子項作爲返回類型,不能將它遍佈全局變量中。如果問題太廣泛,那麼考慮一個JBed場景和一個16 MB設備。如果Java是以OO風格還是FP風格使用,請指出哪種風格可以適合。

+0

要回答這個問題,我們不得不來定義什麼是「嵌入式設備」。可能是從控制洗衣機的4位MCU到運行Windows CE或某些類似設備的「僞裝PC」。如果通過嵌入式編程,你指的是微控制器編程,那麼不,忘了Java。 – Lundin 2014-12-05 10:56:25

+0

@Lundin:謝謝你的評論。 Java已經在設備上運行,所以滿足了Java的最低要求。 – 2014-12-05 12:51:55

回答

3

我可以爲嵌入式設備進行「正常」的Java編程嗎?

是的,在某些小型設備(嵌入式或移動)你幾乎可以做正常 Java編程。您可以/不可以做什麼取決於特定Java Micro Edition Platform支持的列表JSRs (Java Specification Requests)

在2008年Android誕生並引入新的API之前,很有可能在CPU /內存非常有限的手機上進行Java編程。見例如「java.mob.org: Free mobile games. Download java games for mobile phones」爲證據。

我可以做...嵌入式Java編程... JBed場景和16 MB設備?

該平臺對應的谷歌搜索詞可能是「Esmertec JBed Micro Edition profile」。

根據我的網絡搜索,原Esmertec JBed在合併後被重新命名爲Myriad Group。我沒有成功地快速找到相關的開發者信息,官方公開頁面非常注重商業。

但是,這是目前該公司詢問關於JSRs和開發資源(SDK,平臺的限制,優化庫...)

我在看一些Java代碼...很少傳遞對象作爲返回值,並使用全局變量......難以理解...... OO風格或FP風格?

你可能正在看一些由一些自學成才的初學者編寫的舊「壞」代碼。這很正常,可能與平臺沒有多大關係。

但是,對速度進行優化時,寫入緊湊型代碼(生成緊湊縮小字節代碼)當然是推薦的。與編寫垃圾收集器友好代碼一起。雖然太多的小對象可能意味着垃圾收集器的工作太多,但是OO風格與FP風格並沒有多大區別。

找到平衡的工具通常是探查+特定於平臺的最佳實踐(例如,羅伊本Hayun的書「Java ME on Symbian OS: Inside the Smartphone Model」包含了舊的諾基亞移動設備的一些提示)

相關問題