2014-12-05 42 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”包含了旧的诺基亚移动设备的一些提示)

相关问题