java - Mac 和 Windows 上的字节码

标签 java bytecode

我刚刚在mac上编译了helloworld程序,从jvm生成的字节码与从windows jvm生成的字节码完全不同。我认为无论你在哪个操作系统上编译java程序,jvm都会生成相同的字节码,因为java以其字节码的平台独立性而闻名。 请解释一下

最佳答案

生成的字节码取决于您使用的 java 编译器的版本。

I thought jvm generates same bytecode no matter on which OS you compile your java program since java is famous for its platform independence with its bytecode

不。

平台独立性“保证”是字节码将在任何兼容的 Java 平台上运行

  • 如果您使用 Java 8 JDK 编译 Java 代码并尝试在 Java 7 JRE 上运行,它很可能无法工作。

  • 即使您在同一平台上使用相同的编译器进行编译,“.class”文件也可能包含在同一源代码的不同编译之间不同的时间戳和源代码路径名。

但另一方面,如果我使用 Eclipse Java 8 编译器进行编译并指定 Java 7 作为目标版本...并且我没有使用任何 Java 8 特定语言功能或 API...那么我的“. class”文件应该在任何 Java 7、Java 8 或 Java 9 JRE 上运行。

关于java - Mac 和 Windows 上的字节码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47568159/

相关文章:

java - 如何访问 Collectors.toMap 正在收集的 map ?

java - 如何将方法调用注入(inject)android中的另一个方法

java - 阻止 objectweb asm 用 throw 替换无法访问的代码

c++ - 需要一个 Ypsilon 用法的例子

java - 这个仪器如何完成

java - 取消 HttpClient 请求

java - 使用 FormLayout 批量重绘 Swing 组件

java - 类型化数组是否有助于 JIT 更好地优化?

java - 如何有效地引用其他类的对象

python - 为什么类定义总是产生相同的字节码?