当前位置: 代码迷 >> 综合 >> 第3课第1节_JAVA调用C
  详细解决方案

第3课第1节_JAVA调用C

热度:15   发布时间:2023-10-15 23:25:32.0

 

JNI是Java Native Interface的缩写,它提供了若干的API实现了Java和其他语言的通信(主要是C&C++)。从Java1.1开始,JNI标准成为java平台的一部分,它允许Java代码和其他语言写的代码进行交互。JNI一开始是为了本地已编译语言,尤其是C和C++而设计的,但是它并不妨碍你使用其他编程语言,只要调用约定受支持就可以了。使用java与本地已编译的代码交互,通常会丧失平台可移植性。但是,有些情况下这样做是可以接受的,甚至是必须的。例如,使用一些旧的库,与硬件、操作系统进行交互,或者为了提高程序的性能。JNI标准至少要保证本地代码能工作在任何Java 虚拟机环境。

如上面的Tips所讲,JNI 技术在与硬件、操作系统进行交互时是非常有用的,这章主要实现使用 JNI 技术来访问 C 代码,下面以代码开始讲解,先是一段 java 代码,里面访问一个 C 实现的 hello 函数来实现打印,这个过程可以分为三个步骤:
1. load –> 使用 System.loadLibrary 来加载库
2. map –> 即映射 java 的 hello 函数到 C 的 hello 函数里
3. call –> 调用在 C 里面实现的功能函数
代码如下:

public class JNIDemo {static {/* 静态块构造时只执行一次,这里去加载 C 库 *//* 1. load */System.loadLibrary("native");}/* 加了 static 表明这个方法可以直接调用,否则需要先实例