我刚刚在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/