没有OS可以java反汇编代码运行吗?

Can java disassembled code run without OS?

我使用 javap 将 java class 文件反汇编为汇编。那我可以不用Os运行javap命令生成的汇编代码吗?或者 java 有类似 il2cpu.net 的东西吗?

没有:)

  • javap 不生成代码。它可以打印字节码和字段+方法,但它不是反编译器。
  • 你可以在 JVM *) 中 运行 字节码(运行 在 OS 中),但是为此你不需要 javap
  • 您还可以将 class/jar 转换为 native-image 和 运行 而无需 JVM,但您仍然需要一个 OS。 See here

*) 严格来说,也有硬件能够直接运行宁字节码:https://en.wikipedia.org/wiki/Java_processor

不,你不能。

  1. javap 命令输出反汇编的字节码,而不是机器指令。

  2. 你不能运行反汇编代码。反汇编代码只是文本 .. 需要组装成......某物......然后才能执行......由某物执行。

  3. 字节码不能被常规硬件执行1。在常规硬件(例如 Intel、M1、SPARC 等)上,它们需要由常规 JVM 解释/JIT 编译,或使用 AOT 编译器编译为本机代码。

  4. 操作系统之上的所有主流 JVM 运行。甚至像 JNode(在裸机 x86 硬件上启动和 运行)这样的异常值也具有嵌入其中的操作系统的大部分功能。

  5. 如果您将字节码编译为本机代码可执行文件,您仍然需要一个操作系统来 运行 可执行文件。就像任何其他本机代码可执行文件一样。


1 - 理论上可以实现将字节码作为其本机指令集执行的硬件,但目前尚无此类硬件可商用。有一个构建原生 Java 平台的 Sun 项目,但它在很久以前就被取消了。也有其他的,但没有一个获得牵引力。请参阅 https://en.wikipedia.org/wiki/Java_processor 了解一些线索。