JNI(java native Interface)
它允许Java代码和其他语言(尤其C/C++)写的代码进行交互,只要遵守调用约定即可.
如果已经有了.dll/.so文件,我们首先需要使用C语言另外写一个.dll/.so共享库,这个共享库的作用在于能够 实现c语言的数据类型映射到java语言的数据类型,
利用jni调用.dll/.so文件,然后利用java载入这个库文件.dll/.so,最后编写Java native函数来作为动态链接库的代理,
最后java就可以通过代理来调用这个函数了。
JNA(java native access)是建立在经典的JNI基础之上的一个框架。与jni的区别在于不需要写动态链接库文件。
JNA中,它提供了一个动态的C语言编写的转发器,可以自动实现Java和C的数据类型映射,你不再需要编写C动态链接库。
图1. JNI处理的流程 图2.JNA处理的流程
转载
>http://www.lxway.com/811564226.htm