Java 类文件的创建是否具有确定性?
当使用相同的JDK(即相同的可执行文件)时,生成的类文件是否始终相同?根据操作系统或硬件的不同,是否会有所不同?除了JDK版本,是否还有其他因素导致差异?是否有任何编译器选项可以避免差异?差异仅在理论上可能,还是Oracle实际上为相同的输入和编译器选项生成不同的类文件?javac
javac
更新 1我感兴趣的是生成,即编译器输出,而不是类文件是否可以在各种平台上运行。
更新 2通过“相同的JDK”,我也意味着相同的可执行文件。javac
更新 3Oracle编译器中理论差异和实际差异之间的区别。
[编辑,添加转述问题]
“在什么情况下,相同的javac可执行文件在不同的平台上运行时会产生不同的字节码?”