Java调用本地库,如调用DLL或者SO,如:JNI, Jawin, Jacob,JNative,JNA

Java语言本身具有跨平台性,如果通过Java调用DLL的技术方便易用,使用Java开发前台界面可以更快速,也能带来跨平台性。
Java调用C/C++写好的DLL库时,由于基本数据类型不同、使用字节序列可能有差异,所以在参数传递过程中容易出现问题。
使用Java调用DLL动态链接库的方案通常有四种:JNI, Jawin, Jacob,JNative. 其中JNI(Java Native Interface)是Java语言本身提供的调用本地已编译的函数库的方法,本身具有跨平台性,可以在不同的机器上调用不同的本地库。Jawin和Jacob及JNative都是sourceforge.net的开源项目,都是基于JNI技术的依赖Windows的实现,使得在Windows平台下使用COM和DLL的更加方便。

四种说明比较

CXF2问题解决 关于Java调用dll的方法汇总 最终选择JNative

http://blog.163.com/sejin@126/blog/static/8275045520126142252521/


JNA 全称是Java Native Access, Sun 推出的一种调用本地方法技术, 比起它的同门师兄JNI,JNA 大大简化了调用本地方法的过程, 使用也比较方便, JNA 是在JNI 的基础上完善的, 用青出于蓝而胜于蓝来形容一点不为过

JNA项目主页是 https://jna.dev.java.net

不堪回首的JNI

我们知道,使用JNI调用.dll/.so共享类库是非常非常麻烦和痛苦的。

 JNA—JNI终结者(JNA代替JNI)
说白了JNA就是JNI的替代品


Java Native Interface  Java本地接口
Java Native Access  Java本机访问

JNI还是不能废

我们已经见识了JNA的强大。JNI和它相比是多么的简陋啊!

但是,有些需求还是必须求助于JNI

JNA是建立在JNI技术基础之上的一个框架。

使用JNI技术,不仅可以实现Java访问C函数,也可以实现C语言调用Java代码。

JNA只能实现Java访问C函数,作为一个Java框架,自然不能实现C语言调用Java代码。此时,你还是需要使用JNI技术。

JNIJNA的基础。是JavaC互操作的技术基础。

JNA是SUN出品

java调用.dll获取.so一般通过JNI,但是JNI的使用比较复杂,需要用C另写一个共享库进行适配。而JNA是一个自动适配工具,通过它调用.dll只需要一个借口即可。



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值