java - 使用 Java 和汇编语言构建一个在 "bare metal"上运行的系统

标签 java assembly

大家好, 假设我想制作一个仅使用程序集和 java 的系统,我的问题是,只要我包含所有 jvm 文件夹、类、jar 等。java 应该仍然有效运行吗? 我知道有些东西是专门编译平台的,但这就是为什么我问,是否可以使用程序集来复制所有 .exe 或 java 已包含到纯程序集/java 系统中的其他可执行文件?

最佳答案

如果您问是否可以用 Java 和汇编语言构建一个在“裸机”上运行的系统,答案是肯定的。当前有几个示例:

  • JavaOS主要针对嵌入式系统领域。 (Sun 目前认为 SunOS 是一条“传统”产品线。)
  • JNode目标更广泛,涵盖嵌入式系统、桌面系统、服务器和云计算。

请注意,构建此类系统是一个多年、多人的项目,需要深入了解虚拟机内部结构、编译器、垃圾收集器、硬件架构、设备驱动程序编写等。

如果您询问其他问题,请说得更明确。

编辑:回答OP的后续问题:

  1. 使用 Java 和其他“exe”文件本身是不切实际的。它们需要一个成熟的操作系统作为支撑;例如Windows、Linux,等等。如果您有权访问源代码,您可以根据需要进行重写,以使它们在“裸机”上运行,但这将需要重大的架构更改,特别是如果您想用 Java 编写设备驱动程序等。 (另外,Sun的JRE的核心是用C++实现的……)。
  2. 您不能直接使用现有的 Java 类库 JAR 文件,因为它们包含大量特定于平台的代码。但是,您可以从现有的开源版本的 Java 类库(例如 OpenJDK 6.0 J2SE 库)构建您自己的 Java 类库 JAR。您可以通过提供自己的版本作为 native 库或(如 JNode 那样)作为 Java 类来处理特定于平台的代码。

关于java - 使用 Java 和汇编语言构建一个在 "bare metal"上运行的系统,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1303839/

相关文章:

java - 从另一个组件更新组件的状态

java - 将 Runtime.exec() 与 String [ ] 一起使用

assembly - 通过堆栈从过程返回一个值

assembly - SSE4.1 带溢出的无符号整数比较

gcc - 为什么 GCC 在 64 位上会丢弃帧指针?

java - 从生物识别指纹考勤设备中检索数据

java - Java中从子类构造函数调用 super 构造函数

java - 如何在 Swing 中仅绘制自定义控件的可见区域?

程序集 32 位打印显示在 qemu 上运行的代码,无法在真实硬件上运行

string - 使用 db 在程序集 NASM 中声明字符串