Java,64位,JNI - 与.NET CLR相比

时间:2010-07-04 19:46:59

标签: java 64-bit java-native-interface

.NET程序集PE标头有一个32位/ 64位的目标平台,当程序集使用P/Invoke之类的本机互操作时使用它(否则它将是Target=AnyCPU)。

当Java应用程序通过JNI与某个本地接口建立接口时,Java是否有任何等价物? JNI必须编译为32位或64位。

是否有文章解释Java 64位架构和开发?我找不到一个。

2 个答案:

答案 0 :(得分:1)

您可以使用以下方法检测64位:

public static final boolean is64bit = (System.getProperty("sun.arch.data.model").indexOf("64") != -1)

您还可以使用-d32-d64以32位或64位启动Java。

如果对于Web或桌面应用程序,可能有一种方法可以从清单文件中指定它。

答案 1 :(得分:0)

您可以查看系统属性os.arch

String osArch = System.getProperty("os.arch");

不幸的是,没有记录此属性的可能值,但您可以在不同的系统上尝试查看它返回的内容(在我的64位系统上使用Sun JDK 6 update 20返回amd64)。

有关其他可用系统属性的信息,请参阅java.lang.System.getProperties()的API文档。