这几天我一直在阅读Java Native Interface。所以顺便说一句我有疑问。举个例子,如果我们需要在Java程序中进行I/O操作,我们为我练习Java API/O 操作。此外,在低级别,它应该映射到操作系统级别的 I/O 处理。问题是 Java API 如何与主机操作系统中的 native I/O 方法交互。
简短而甜蜜,我听说 JDK 中的一些方法是 native 实现的。Java API 是如何调用这些 native 方法的。我猜是 JNI(Java native 接口(interface))。
谁能澄清我的疑惑。
谢谢
女娲乱斗
最佳答案
Java 中的方法可以标记为native
以指示它们的实现不是用Java 或字节码编写的,而是以平台相关的方式编写的。例如,Java I/O 操作几乎总是作为 native
方法实现,以便它们可以利用机器上的底层硬件或 OS 接口(interface)。
无法保证 native
方法的实际实现方式。在 Sun(现在是 Oracle)的 JVM 实现中,您可以通过使用 JNI 定义专门命名的 C 函数来编写 native 方法的实现,这些函数与自定义库交互以便与 Java 代码交互。然而,另一个 JVM 可以以完全不同的方式实现 native 方法。事实上,现在我正在从事一个用 JavaScript 实现 JVM 的项目,因此所有 native 方法都是用 JavaScript 而不是 C 实现的。
简而言之,native
方法的实现没有“单一方式”。重点是为 JVM 和 Java 库实现提供最大的灵 active ,因此行为指定越少越好。
关于java - JVM如何调用宿主机环境中的native方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5115939/