- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
javanative方法及JNI实例
java native方法及JNI实例
1.参考文献:
HYPERLINK /youjianbo_han_87/article/details/2586375 /youjianbo_han_87/article/details/2586375
HYPERLINK /yangjiali014/article/details/1633017 /yangjiali014/article/details/1633017
HYPERLINK /space.php?uid=7437948do=blogid=2054823 /space.php?uid=7437948do=blogid=2054823
HYPERLINK /topic/72543 /topic/72543
HYPERLINK /article/2007/1029/A20071029886398.shtml /article/2007/1029/A20071029886398.shtml
HYPERLINK /heqingrong623/article/details/3906350 /heqingrong623/article/details/3906350
参考1: HYPERLINK /space.php?uido=blogid=2873440 用JNI调用C或C++动态联接库原来如此简单
参考2: HYPERLINK /topic/304594 JNI技术实践小结
参考3: HYPERLINK /sunnychuh/archive/2011/07/17/2108852.html jni简单实例
2.概述
今天在看java多线程编程的时候,发现Thread这个类中有多个native方法,以前从来没有见过这种方法,因此对于比较好奇,查阅了一些资料,现在整理一下,以作备忘。
2.1.native关键字用法
native是与C++联合开发的时候用的!使用native关键字说明这个方法是原生函数,也就是这个方法是用C/C++语言实现的,并且被编译成了DLL,由java去调用。 这些函数的实现体在DLL中,JDK的源代码中并不包含,你应该是看不到的。对于不同的平台它们也是不同的。这也是java的底层机制,实际上java就是在不同的平台上调用不同的native方法实现对操作系统的访问的。总而言之:
native 是用做java 和其他语言(如c++)进行协作时使用的,也就是native 后的函数的实现不是用java写的。
?既然都不是java,那就别管它的源代码了,我们只需要知道这个方法已经被实现即可。
native的意思就是通知操作系统, 这个函数你必须给我实现,因为我要使用。 所以native关键字的函数都是操作系统实现的, java只能调??。
java是跨平台的语言,既然是跨了平台,所付出的代价就是牺牲一些对底层的控制,而java要实现对底层的控制,就需要一些其他语言的帮助,这个就是native的作用了
2.2JNI简介
native方法是通过java中的JNI实现的。JNI是Java Native Interface的 缩写。从Java 1.1开始,Java Native Interface (JNI)标准成为java平台的一部分,它允许Java代码和其他语言写的代码进行交互。JNI一开始是为了本地已编译语言,尤其是C和C++而设计 的,但是它并不妨碍你使用其他语言,只要调用约定受支持就可以了。使用java与本地已编译的代码交互,通常会丧失平台可移植性。但是,有些情况下这样做是可以接受的,甚至是必须的,比如,使用一些旧的库,与硬件、操作系统进行交互,或者为了提高程序的性能。JNI标准至少保证本地代码能工作在任何Java 虚拟机实现下。
目前java与dll交互的技术主要有3种:jni,jawin和jacob。Jni(Java Native Interface)是sun提供的java与系统中的原生方法交互的技术(在windows\linux系统中,实现java与native method互调)。目前只能由c/c++实现。后两个都是sourceforge上的开源项目,同时也都是基于jni技术的windows系统上的一个应用库。Jacob(Java-Com Bridge)提供了java程序调用microsoft的com对象中的方法的能力。而除了com对象外,jawin(Java/Win32 integration project)还可以win32-dll动态链接库中的方法。就功能而言:jni jawinjacob,其大致的结构如下图:
就易用性而言,正好相反:jacobjawinjni。
您可能关注的文档
最近下载
- 国家安全教育大学生读本高教2024版课件-第九章筑牢其他各领域国家安全屏障-.pptx VIP
- TCSGPC-水库库岸边坡变形监测技术规程.pdf VIP
- 雅思基础入学测试题(参考).pdf VIP
- 遗体防腐整容之遗体消毒——化学法消毒遗体.pptx VIP
- 中国古代文学史魏晋南北朝文学教学优质课件.pptx VIP
- 2025年北京银行招聘考试(行政能力测验)历年参考题库含答案详解(5卷).docx VIP
- 昭和ロマンス(昭和罗曼史,岸部真明)吉他弹奏图曲谱.pdf VIP
- 【2025秋】人教版三年级数学上册教学计划(及进度表).docx
- 2025年杭州银行招聘考试(行政能力测验)历年参考题库含答案详解(5卷).docx VIP
- 第十一章 遗体防腐常用器械.ppt VIP
文档评论(0)