博主近期在实习,遇到一个需要,就是如何在JAVA代码中调用C++的算法。背景:已经有封装好的C++算法,然后现在要用JAVA语言编写一个平台,要在平台中调用已经写好的C++代码。这里我们就要借助:JNI。
JNI是Java Native Interface的缩写,它是JDK的一部分,提供了若干的API实现Java和其他语言的通信(主要是C或C++)。但这种有一个缺点就是使用Java与本地已编译的代码交互,通常会丧失平台可移植性。但有一些情况下,是可以接受的,甚至是必须的。例如使用一些旧的库,或者与硬件、操作系统进行交互等。(这里要注意,JNI也可以让C++代码调用JAVA代码)
接下来我们就借助JNI实现一个简单从JAVA中调用C++代码的HelloWorld。
1. 编写JAVA代码
我们注意到,上图的代码中,出现了 native 关键字,这里,我们先介绍一下 native 关键字:
- native关键词修饰的方法是一个原生态方法,方法对应的实现不是在当前文件,而是在其他语言中实现的。
- 这里编写带有native声明的方法的java文件,就是表明了有对应其他语言实现了这些方法。