JVM运行时编译器在64位平台上32位

时间:2013-12-03 21:02:00

标签: java jvm

我们知道Java编译器生成的中间码和平台无关的字节码。

我正在运行64位Windows Server 2008 R2平台,我想告诉Java虚拟机将字节码编译为32位而不是64位(默认行为)。

我这样做是为了解决与另一个32位应用程序的兼容性问题。

请帮忙!

P.S:我最好知道如何通过JNI完成。

2 个答案:

答案 0 :(得分:2)

  

我们知道Java编译器生成的中间码和平台无关的字节码。

正确。

  

我正在运行64位Windows Server 2008 R2平台,我想告诉Java虚拟机将字节码编译为32位而不是64位(默认行为)。

你刚才自相矛盾。您首先正确地说,字节码与平台无关。现在你错误地说它是特定于平台的,32位或64位。事实并非如此。它与平台无关。你是第一次是对的。没有“将字节码编译成32位”或“而不是64(默认行为)”这样的东西。

  

我最好知道如何通过JNI

完成

编译不是通过JNI完成的。

答案 1 :(得分:0)

好的就是这笔交易。

字节代码是一种平台中立的方式,说“Java代码被编译为可执行文件,就像我们在C / C ++中那样”。字节代码是一种中间格式,由JVM解释以执行指令。

现在32位或64位不是字节代码,而是用于生成该字节代码或运行它的JVM或JRE或JDK。我不知道你是否知道,但实际上它的JVM给了我们一种平台中立的Java功能的幻觉。它是你的类文件/ jar,可以在任何地方运行,但你仍然需要一个平台相关或符合JVM或JRE来运行你的类文件或jar。