Java JVM中的本机库和本机方法接口是什么?

Java JVM中的本机库和本机方法接口是什么?,java,jvm,native,Java,Jvm,Native,我在研究JVM时遇到了这个数字。除了“本机方法接口”和“本机方法库”,我了解所有组件。什么是精确的?本机方法接口:本机方法接口是一个接口,它连接本地方法库(在C、C++等中实现)与JVM连接,用于执行本机方法。 本机方法库:在本机代码中实现 有关更多信息,请参阅链接 > P>本地方法接口:本机方法接口是一个接口,它将本地方法库(在C、C++等中实现)与JVM连接,以执行本机方法。 本机方法库:在本机代码中实现 有关更多信息,请参阅链接 Java本机接口: 上面的图表是您在学习java虚拟机功能时

我在研究JVM时遇到了这个数字。除了“本机方法接口”和“本机方法库”,我了解所有组件。什么是精确的?

本机方法接口:本机方法接口是一个接口,它连接本地方法库(在C、C++等中实现)与JVM连接,用于执行本机方法。 本机方法库:在本机代码中实现


有关更多信息,请参阅链接

> P>本地方法接口:本机方法接口是一个接口,它将本地方法库(在C、C++等中实现)与JVM连接,以执行本机方法。 本机方法库:在本机代码中实现

有关更多信息,请参阅链接

Java本机接口: 上面的图表是您在学习java虚拟机功能时可能遇到的。当您第一次安装和使用java时,没有什么比本机库更好的了。这些都是在我们开发自己的库时添加的,但它应该使用其他语言

当您使用其他语言开发功能时,Java虚拟机将在Java应用程序的执行级别(第三级)包含这些库

Java本机接口: 上面的图表是您在学习java虚拟机功能时可能遇到的。当您第一次安装和使用java时,没有什么比本机库更好的了。这些都是在我们开发自己的库时添加的,但它应该使用其他语言


当您使用其他语言开发功能时,Java虚拟机将在Java应用程序的执行级别(第三级)包含这些库

< P> <强>本地方法接口(JNI)是JDK的一部分,它将java代码与用其他编程语言编写的本地应用程序和库连接,例如C++、C++和汇编。 为什么要使用JNI

  • 使用依赖于平台且Java类库不支持的功能
  • 通过使用较低级别的语言实现时间关键型代码来提高性能
  • 访问已用其他编程语言编写的库

<强>本地方法库是以其他编程语言编写的库,如C、C++和汇编。 这些库可以通过JNI加载


这样,您所发布的图片是说JNI允许访问本机方法库。

< P> <强>本地方法接口(JNI)< /St>是JDK的一部分,JDK将java代码与用其他编程语言编写的本地应用程序和库连接,如C++、C++和汇编。 为什么要使用JNI

  • 使用依赖于平台且Java类库不支持的功能
  • 通过使用较低级别的语言实现时间关键型代码来提高性能
  • 访问已用其他编程语言编写的库

<强>本地方法库是以其他编程语言编写的库,如C、C++和汇编。 这些库可以通过JNI加载


因此,您发布的图片是说JNI允许访问本机方法库。

此外,在
jvm
$JAVA\u HOME/jre/lib/amd64/
中也有本机库,这些是通过反射加载的核心库(
null/boot classloader
)这就是为什么它们在编译时在运行时可用,并且我们能够使用对象类的本机方法,如
getClass()
。因此,不仅对于使用JNI的定制开发,而且java的一些核心功能也被写入本机。

除此之外,
jvm
中也有本机库,这些都是通过反射加载的核心库(
null/boot classloader
)这就是为什么它们在编译时在运行时可用,并且我们能够使用对象类的本机方法,如
getClass()
。因此,不仅对于使用
JNI
的定制开发,而且java的一些核心功能都是用本机编写的。

无法仅使用java实现某些功能(因为无法直接从java进行内核调用),因此您可以用另一种编程语言(如C)编写此类操作的函数,然后从Java调用这些本机方法。Java库有用于打印的本机方法和其他低级方法。像LWJGL这样的OpenGL库也需要使用本机方法与GPU通信。@Runemoro所以这些只是用一些低级语言编写的库,存在于JVM中?。。。仅仅是用一些低级语言编写并在JVM中出现的库?不仅仅如此:本机方法不必内置到JVM中。Java
native
关键字允许您使用本机方法声明自己的类——这些方法由共享库函数实现。Java本机接口(JNI)规范(参见geekprogrammer答案中的链接)记录了共享库函数的外观,以及它们必须做什么才能与程序中的Java对象和方法交互。仅使用Java无法实现某些功能(因为无法直接从Java进行内核调用),所以可以用另一种编程语言(如C)编写此类操作的函数,然后从Java调用这些本机方法。Java库中有用于打印的本机方法和其他低级方法。OpenGL库(如LWJGL)也需要使用本机方法与GPU通信。@Runemoro所以这些只是用低级语言编写的库,并存在于内部