Java在64位操作系统上编译32位操作系统运行时问题

时间:2011-07-25 08:29:13

标签: java jvm bytecode

运行在32位计算机上编译并在64位计算机上运行的Java应用程序是否存在已知问题?

4 个答案:

答案 0 :(得分:7)

32位JDK生成的字节代码与64位JDK生成的字节代码相同。如果您遇到只出现在64位JVM上的问题,那是因为JVM中存在错误并且使用64位JDK不会产生任何差异。

答案 1 :(得分:3)

Java背后的想法是程序的字节码版本对于所有平台都是相同的。这就是为什么你可以在Windows机器上编译并在Linux机器上运行生成的类和jar文件的原因。我每天都做这样的交叉编译。

这包括JVM是使用32位还是64位。

所以,简单的答案是不,没有问题

(更高级的答案是,如果您还使用随Java代码引入的非Java本机代码,例如DLL等,则很可能需要重新编译该代码)

答案 2 :(得分:2)

这取决于您的应用程序,但在正常情况下,在x64计算机上运行x86计算机上的代码没有问题,反之亦然。

如果使用普通的旧java(没有互操作,不调用本机库),生成的字节码将与机器无关,并且应该在任何已安装的JVM上运行。

答案 3 :(得分:0)

除非您明确调用特定于环境的32位本机代码,否则我无法想到。

windows等操作系统使用WoW64允许32位应用程序在64位系统下运行。它是一种允许向后兼容的规定。只要本机库仅依赖于32位或仅依赖于64位库,一切都很好。 JVM负责使用JIT将您的字节代码转换为适当的机器代码,因此不必担心。