是否有任何Java代码构造只能在您使用64位JDK时进行编译,或者在Java世界中是否可以这样做?
答案 0 :(得分:1)
绝对不在编译级别。 Java编译器不知道它将在哪种JVM中运行,并且.class文件中没有任何特定于JVM的JVM。您可能遇到的唯一区别是在运行时,但再一次,没有Java构造可以辨别它。您可以阅读体系结构系统属性,但我确信这不是您的目标。
对于评论中的“下一个问题”,JDK提供完整的Java堆栈,包括源代码,编译的字节码和JVM。在JVM部分中,您已经猜到了32位和64位JDK之间的区别。
答案 1 :(得分:1)
Java专门用于保护用户免受平台字长的影响,无论是32位还是64位。通常,不可能用对此敏感的语言构造任何东西。
因此,用Java编写的所有代码都应该在任何平台上编译。
此外,编译器应该能够在任何平台上运行,但由于它们可以用本机代码编写,因此技术上可行的是可能存在阻止其中一个在某个平台上运行的错误。
使用JNI(Java Native Interface)可能会出现一些问题,但这通常是在C / C ++代码调用和从Java调用。
答案 2 :(得分:0)
Java编译器不知道底层硬件。
Java Source ----> Java编译器------> 字节码(硬件无关)
字节码-------> Java Runtime --------> 机器级代码(依赖于平台/硬件)
因此,在一个硬件上运行的Java代码无法在其他硬件上运行。
第二个问题的答案是,为了创建字节码的机器级代码,运行时必须知道底层硬件支持哪些操作。
32位和64位机器的说明不同。