作者:章华燕
编辑:陈人和
前 言
众所周知,Java语言是基于虚拟机的解释性语言(Java代码经过编译器编译之后并不是能够直接在机器上执行的二进制代码,而是JVM虚拟机能够识别的字节码,依靠Java虚拟机进行解释执行)。而C/C++是编译型语言(编译完成后是能够直接在机器上运行的二进制指令)。虽然,随着Java虚拟机技术的改善和优化,Java性能相对于刚出来那会已经有了极大地提升,但是C/C++语言的性能还是会比Java要高,这是不争的事实。并且我们知道,现在很多服务程序都是Java程序编写的,但是有时候,对于服务的某些对性能要求非常高的地方我们希望用C/C++来编写,以满足程序的性能要求。这时候,我们就需要用到JNI技术,通过它Java可以调用C/C++编写的程序。
01
搭建gcc编译环境
JNI既然是使用Java调用C/C++程序,那么我们首先得有一个C/C++编译环境:将C/C++代码编译成相关平台可执行的动态链接库(Windows下的.dll、Linux下的.so、Mac下的.dylib等)。因为我使用的是Mac,因此本文主要以Mac为例进行进行介绍,但是我也会对其它两个平台的方法也会进行介