使用相同的JDK(即相同的javac可执行文件)时,生成的类文件是否始终相同?可能会有所不同,具体取决于操作系统或硬件?除JDK版本外,是否还有其他因素导致差异?是否有任何编译器选项可以避免差异?仅在理论上可能存在差异,或者Oracle是否javac实际为相同的输入和编译器选项生成不同的类文件?
更新1我对生成感兴趣,即编译器输出,而不是类文件是否可以在各种平台上运行.
更新2通过'相同的JDK',我也意味着相同的javac可执行文件.
更新3 Oracle编译器中理论差异与实际差异的区别.
[编辑,添加释义问题] 
"在不同的平台上运行相同的javac可执行文件会产生不同的字节码的情况是什么?"