通过本文你可以学到如下知识:
- JNI是什么?为什么需要JNI?
- JNI中的几个关键要素与代码中的关键元素。
- JNIEXPORT、JNICALL、JNIEnv、JavaVM的含义及作用。
- JNI的Hello World示例。
一、简介
正如我们所知,Java的主要优势之一是它的可移植性——这意味着一旦我们编写和编译代码,这个过程的结果就是平台无关的字节码。
简单地说,它可以在任何能够运行Java虚拟机的机器或设备上运行,并且它将像我们所期望的那样无缝地工作。
然而,有时我们确实需要使用针对特定架构的本地编译代码。
需要使用native code可能有如下的一些原因:
- 需要处理一些硬件。
- 对要求很高的流程的性能改进。
- 我们想要重用一个已经存在的库而不是用Java重写它。
为了实现这一点,JDK引入了在JVM中运行的字节码和本机代码(通常用C或C++编写)之间的桥梁。
这个工具被称为Java本地接口。在本文中,我们将了解如何使用它编写一些代码。
二、如何工作?
2.1 native方法: JVM与Compiled Code的碰撞
Java提供