Open SyMind opened 3 years ago
原文:https://docs.oracle.com/javase/8/docs/technotes/guides/jni/spec/jniTOC.html
JNI 允许在 Java 虚拟机(VM)中运行的 Java 代码与其他编程语言(如C、C++ 和汇编)编写的应用程序和库进行互操作。
JNI 最重要的好处是它对底层 Java VM 的实现没有任何限制。因此,Java VM 供应商可以添加对 JNI 的支持,而不影响 VM 的其他部分。开发者可以编写一个本地应用程序或库,并能够期望它能在所有支持 JNI 的Java VM 上工作。
你可以使用 Java 来编写整个应用,但有些场景场景只使用 Java 不能满足你应用的需要。开发者可以使用 JNI 编写Java 本机方法来处理那些只使用 Java 不能实现的场景。
以下场景您需要使用 Java 本机方法:
通过 JNI 编程,您可以使用本机方法来:
本节主要讨论 JNI 中的主要设计问题。本节中的大多数设计问题都与本机方法有关。
本机代码通过调用 JNI 函数来访问 Java VM 特性。JNI 函数通过接口指针实现。接口指针是指向指针的指针。这个指针指向一个指针数组,它的每个指针指向一个接口函数。
介绍
JNI 允许在 Java 虚拟机(VM)中运行的 Java 代码与其他编程语言(如C、C++ 和汇编)编写的应用程序和库进行互操作。
JNI 最重要的好处是它对底层 Java VM 的实现没有任何限制。因此,Java VM 供应商可以添加对 JNI 的支持,而不影响 VM 的其他部分。开发者可以编写一个本地应用程序或库,并能够期望它能在所有支持 JNI 的Java VM 上工作。
Java Native Interface 概览
你可以使用 Java 来编写整个应用,但有些场景场景只使用 Java 不能满足你应用的需要。开发者可以使用 JNI 编写Java 本机方法来处理那些只使用 Java 不能实现的场景。
以下场景您需要使用 Java 本机方法:
通过 JNI 编程,您可以使用本机方法来:
设计概览
本节主要讨论 JNI 中的主要设计问题。本节中的大多数设计问题都与本机方法有关。
JNI 接口函数和指针
本机代码通过调用 JNI 函数来访问 Java VM 特性。JNI 函数通过接口指针实现。接口指针是指向指针的指针。这个指针指向一个指针数组,它的每个指针指向一个接口函数。