本文共 1970 字,大约阅读时间需要 6 分钟。
官网:
Java本身已经足够强大,但是在某些情况下,Java也是有局限的,最大的局限在于不能直接操作硬件,因为Java是运行在JVM上的,不是直接运行于CPU。另一个原因在于相比于C/C++而言,Java的运行效率比较低,但是C/C++虽然运行效率高,且能够直接操作硬件,但是的带来的不足是,开发效率太低,那就将Java与C/C++结合起来吧!利用各自的优势,发挥最大的潜力。
这里使用的就是JNI技术,Java Native Interface(Java本地接口)
说起来也很简单,就是用Java定义业务逻辑接口,然后用C/C++是实现这些接口,并且这些实现对于Java的调用是透明的。
首先创建一个Java项目jnidemo
如下:
定义了一个UserInfo类,和一个UserService业务逻辑对象
UserInfo类,只有一个id和name成员变量
UserService业务逻辑类
static{}这句话待会儿说
值得注意的是这里定义了2个方法,countUser和findUserById,但是并没有实现,而且用native标注
这就说明了这两个方法是本地托管方法,通俗的说就是让C/C++去实现的方法,而Java不必去管怎么实现的。
好以上就是Java的工程,下面看看C/C++的工程
采用的IDE是Visual Stdio 2008
这里比较复杂
1.第一步,导出刚刚Java托管的UserService业务逻辑类托管的C/C++头文件
具体做法:开始->运行->cmd
然后进入到jnidemo的项目的根目录下或者bin目录(Web工程没有bin目录),
然后运行 javah -jni com.sean.jni.service.UserService(类的绝对路径)
然后在bin目录里就能看到生成的C/C++头文件
好,要的就是这个dll文件,dynamic link library(动态链接库)
将这个dll拷贝到java工程中,可以新建一个dll代码文件夹(随意)
转载地址:http://kwjws.baihongyu.com/