java - 什么是 Java 中的 native 实现?

标签 java java-native-interface

如果我们查看 Java Object 类,我们可以找到一些方法,例如:

public native int hashCode()
protected native Object clone()

这些本地人是什么?这些方法是如何工作的?

最佳答案

这些方法要么是固有的,要么是在 Java 之外以“ native ”代码编写的,即特定于给定机器。

您提到的是 Intrinsic 和 JDK 的一部分,但您也可以使用 Java Native Interface 自己编写本地方法(JNI)。这通常会使用 C 来编写方法,但许多其他语言,例如 python,允许您相当容易地以这种方式编写方法。以这种方式编写代码要么是为了提高性能,要么是因为它需要访问平台特定的基础设施,而这在纯 java 中是无法完成的。

hashcode() 的情况下,这是由 JVM 实现的。这是因为哈希码通常与只有 JVM 知道的东西相关。在早期的 JVM 上,这与对象在内存中的位置有关 - 在其他 JVM 上,对象可能会在内存中移动,因此可以使用更复杂(但仍然非常快)的方案。

关于java - 什么是 Java 中的 native 实现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/557574/

相关文章:

java - Selenium -TestNG : Tests are not running in parallel - Using selenium + java + browserstack

scala - 使用 spark 加载由 --files 参数分发的共享库 (.so)

android - 是否可以在不使用 JNI 的情况下在 Android 应用程序开发中实现 DLL 概念?

java - 用Java处理XML文件,节点困惑

java - 如何从数组中随机选择一个元素

java - 使用 Android Studio 进行 GitHub 协作

java - 迭代数组直到提供长度并查找它覆盖的计数元素,如果同一元素出现多次,则忽略该元素

多次调用 findViewById 后 Java/JNI 突然崩溃

java - 如何在 Android NDK 上使用 JNI 在 C 和 Java 之间传递复杂结构

java - nar-maven-plugin 和 native-library-loader 不加载 native 库