Java 用于嵌入式系统?

Java for embedded systems?

我最近学习了一些基础知识 Java 并且正在考虑是否可以将这些新技能用于嵌入式计算项目。 我一直在四处寻找,但我似乎无法找到任何能够 运行 Java 的微控制器。 有这种东西吗?

微控制器是为真正的低级设计的——它们通常没有太多的功能,并且没有足够的 memory/processor 速度来 运行 JAVA。

大多数入门级微控制器使用 C/C++,甚至可能使用它们自己的变体。


Arduino/Atmega 使用 Haiku VM to run java. Using the haiku VM you can compile your JAVA code into C - and this will be programmed into Arduino。这使得调试有点困难,但还不错 - 嘿,像 JAVA 这样的高级语言可以大大减少你的编码时间。这个问题通常是你的记忆很快就会过去,你不能写大量的代码。

PIC - Muvium 声称支持 PIC,但他们在一段时间后停止支持,现已关闭。我认为 PIC 目前没有 JAVA 支持。

Renesas 是另一家流行的微控制器供应商,它有自己的 SDK,称为 MicroEJ,用于 java 在他们的 RX 和 RZ 板上。我从未使用过它,但他们的电路板拥有更多的 RAM 和闪存 - 这很有帮助。


单板计算机(基本上,microcontroller/processor 更强大 + 具有更多外围设备)在使用 JAVA 进行嵌入式编程时很有用。最受欢迎的两个是 Beagle bone and Raspberry Pi。这些基本上是芯片上的计算机 - 可以 运行 一个完整的 ARM Ubuntu + Java/Python/any 其他语言。

最容易使用的是 Raspberry Pi(在我看来)——它拥有巨大的社区支持。

微控制器不是为这种用途而制造的。名为 "mini computers" 的控制器可以嵌入 JAVA 应用程序(Raspberry PI、BeagleBone、Intel Edison 等,因为它们嵌入了 OS,因此可以使用 JRE)。

对于微控制器,C/C++确实更好更可靠。

由于 Java 虚拟机体系结构,仅 运行 JVM 就需要大量资源。获得 JVM 的阻力最小的途径可能是 运行 一个 OS 在已经支持它的目标上,例如 Linux,但它本身需要相对巨大的资源。

有一些独立的 JVM 可以裸机工作或与嵌入式 RTOS 集成以提供线程支持。我刚才在回答一个 similar question 时整理了一个列表,但有些链接现在已经过时了。

运行 Java 在嵌入式系统上肯定会影响性能,如果不加小心可能不适合硬实时应用程序。

最近我开始研究 CM12001/1000000 电路板 运行s Java。它在同一块板上包含两个控制器。目前我对这件事了解不多。我会在获得更多信息后立即更新答案。

回答你的问题:是的,这样的事情是存在的,但是很少见。 Python 然而,最近使用 MicroPython 在嵌入式领域越来越受欢迎,它包括 Python 3 标准库的一小部分,并在微控制器上针对 运行 进行了优化.

编辑:Telit 的 ATOP 模块提供此类功能。通常他们有大量的 RAM 和闪存(几 MB 到几百 MB)。他们 运行 Linux 在其上加载 JVM(正如 Clifford 所指出的)。 Telit 提供 Java API 来控制 GPIO 等功能(尽管非常有限)并执行串行通信、GPS、GSM 控制等功能

是的,存在能够在裸机上运行Java的微控制器

但此微控制器上的 JVM 针对速度和低内存使用进行了优化。这意味着优化的 JVM 有一些限制而不是常规的 JVM,就像 Python 和 MicroPython

但是 Java 上的纯代码允许您轻松地将代码从桌面传输到微控制器或嵌入式系统

对于嵌入式计算项目的自我教育,您可以尝试使用 Javaino 允许在此开发板上执行 Java 程序,通过 i2c、UART 等方式从传感器读取数据,如 Arduino