打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
【转】如何在android上支持JNA <一>知识准备
userphoto

2014.04.24

关注

如何在android上支持JNA <一>知识准备

2010-09-16 14:42 阅读(413)评论(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的需求怎么办?请继续关注<二>实战步骤。

转载请注明出处和作者,谢谢。
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
java调用底层的几种方法
JNA示例
JNA—JNI终结者
JNI的替代者
几种java调用dll的方式
使用JNA替代JNI调用本地方法
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服