android上面的JNA

12 篇文章 0 订阅

JNA(Java Native Access)框架是一个开源的Java框架,是SUN公司主导开发的,建立在经典的JNI的基础之上的一个框架.

    相比于jni,jna的优势有如下两点:

    1)使用方便,如果有一个现有的.dll/.so文件,如果使用JNI技术调用,我们首先需要另外使用C语言写一个.dll/.so共享库,使用SUN规定的数据结构替代C语言的数据结构,调用已有的 dll/so中公布的函数。

JNA中,它提供了一个动态的C语言编写的转发器,不需要再编写适配用的.dll/.so,只需要在Java中编写一个接口和一些代码,作为.dll/.so的代理,就可以在Java程序中调用dll/so。

    2)比较好地处理不同语言之间数据类型不一致造成的问题,减轻了上层开发者的负担。

 

但是JNA毕竟是为上层开发者考虑的,注意它是一个“Java框架”,它有两大缺点为下层开发者不满:

 1)使用JNA技术比使用JNI技术调用动态链接库会有些微的性能损失。可能速度会降低几倍,这对桌面系统无所谓, 可对于本身资源紧张的嵌入式系统,尤其是要求实时性高的通讯类应用(一般协议层都是C架构的)可能就是致命缺陷。

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

而JNA只能实现Java访问C函数,作为一个Java框架,自然不能实现C语言调用Java代码。此时,你还是需要使用JNI技术。
归根结底,JNI是JNA的基础。是Java和C互操作的技术基础。

众所周知,android支持JNI,而不支持更高级的JNA,同样是开源项目,内中原因可能是google也没想到会有把桌面系统产品直接移植到嵌入式上的需求吧,当然效率和思想也是肯定的原因。

如果我们有在android上使用jna的需求怎么办?请继续关注<二>实战步骤。



转载地址

http://blog.csdn.net/jessyshen917/article/details/6062860

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值