- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
利用JNI实现Java与C通信
利用JNI实现Java与C++通信
向模军
(四川机电职业技术学院 信息工程系,四川 攀枝花 617000)
摘 要:JNI(Java Native Interface)允许Java代码和其他语言(尤其是C++)代码进行交互。在分析JNI技术框架的基础上,通过实例展示了一种如何实现Java与C++之间通信的方法。实践证明,本方法具有较高的参考性和实用价值。
关键字:JNI;Java;C++;编程接口
中图分类号:TP311 文献标识码:A
Using JNI to Establish Communication between Java and C + +
XIANG Mo-jun
(Information Engineering Department, Sichuan Electromechanical Institute of Vocation and Technology, Panzhihua Sichuan 617000, China)
Abstract: JNI(Java Native Interface)allows Java code and other languages (especially C++) code to communicate. By analyzing the technical framework of JNI, a method to establish communication between Java and C++ is demonstrated through examples. The practice has proved the method has a high reference and practical value.
Key Words: JNI, Java, C++, Programming Interface
1 问题的提出
Java语言的功能很强大,但不是万能的。如Java放弃了指针这一功能强大且与低层硬件有关的语言设施,就导致Java不能直接访问硬件。事实上与C++相比Java存在执行效率低的劣势,对于一些计算量大的算法实现而言,Java就不是最好的选择。那么如何实现Java与C++协同合作呢?Java的缔造者们在开发之初就已考虑到了这一点,在Java中提供了与C++的编程接口,这就是JNI(Java Native Interface,Java本地接口)。
通常至少有以下几种情况我们需要使用JNI来实现。
①为了实现Java语言所不能实现的功能:如所开发的应用程序要使用到与平台相关的属性,而Java标准类库不支持对这些属性的处理;
②为了获取更好的程序运行性能:程序的某个模块对速度要求比较苛刻,从而希望用较低级的语言来实现,同时希望在Java应用程序中使用这个模块;
③为了保护历史投资:已经拥有了用其他编程语言实现的类库或应用程序,希望用 Java直接调用这些实现。
2 JNI技术框架
JNI最大的好处是它没有对Java虚拟机的实现施加任何限制,JNI技术框架没有更改Java语言的任何属性,只是对Java语言的一种对外的调用形式,是对Java编程技术的一个扩充。应用JNI技术开发的应用技术框架如图1所示。
图1 应用JNI技术开发的应用技术框架
从图1不难看出,JNI是一种包容极广的编程接口。JNI允许我们从Java应用程序里调用本地化方法。也就是说,JNI允许运行在虚拟机上的Java程序能够与其它语言(多数情况是C++语言)编写的应用程序或者类库进行相互间的调用。同时JNI也提供了一整套的应用程序编程接口,允许将Java虚拟机直接嵌人到本地的应用程序中。
在JNI技术中,由于是两种语言环境的信息交换,所以存在着数据类型对应的问题,这也是JNI技术实现不同语言之间相互通信的基础。JNI处理基本数据类型和引用数据类型的方法不尽相同。对基本数据类型的映射是直接的,如Java语言中的int被映射C++中的jint。具体映射关系如表 l所示。
表1 Java类型与本地类型对照
Java类型 本地类型 物理存储 boolean jboolean unsigned,8bit byte jbyte signed,8bit char jchar unsigned,16bit short jshort signed,16bit int jint signed,32bit long jlong signed,64bit float jfloat 32bit double jdouble 64bit void void n/a 3 实现样本及其分析
在Java环境下调用C++语言代码的过程通常由六个步骤组成,如图2所示。
图2 JNI的实
您可能关注的文档
最近下载
- 2024-2025学年下学期高中英语选修一第三单元A卷.docx VIP
- 淡水鱼深加工项目可行性研究报告.docx VIP
- 老年患者髋部骨折围手术期麻醉管理.pptx VIP
- 深圳市房屋建筑工程施工图设计文件监督抽查常见问题汇编(第2版).docx
- 美国微机保护装置SEL-351A使用手册_20001006.pdf VIP
- 基于计算机视觉的舌体多特征识别与裂纹舌量化评估体系构建.docx
- 2025年广东省基层住院医师线上岗位培训(口腔学)《牙体牙髓病》专业课答案(5).docx
- 2025-2030中国红糖行业市场运行态势及发展趋势与投资预测研究报告.docx
- 欧姆定律基础练习题.pdf VIP
- 2018年-2020年托业考试语法考点全汇总.pdf VIP
文档评论(0)