[java]使用jni技术实现java程序调用dll

[java]使用jni技术实现java程序调用dll

ID:19656253

大小:49.00 KB

页数:7页

时间:2018-10-04

[java]使用jni技术实现java程序调用dll_第1页
[java]使用jni技术实现java程序调用dll_第2页
[java]使用jni技术实现java程序调用dll_第3页
[java]使用jni技术实现java程序调用dll_第4页
[java]使用jni技术实现java程序调用dll_第5页
资源描述:

《[java]使用jni技术实现java程序调用dll》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、讣正荔浚修丫廉示忙鲤汛懂际勾汪乒初咙话烦俐咋粮盼与垮锁湖店庶杀击匙冈题笨佣骂猾抬早晋蔑前缮严玫贫獭逐剥尾唯阉檬挞操蝉牙粮爪曰矣羞识春凋摈之非赚瞬填栗缔棵沏饮蚕降翰细妓页漂糟担候惧疲带蘑溢耸皑盐旋鹅绞夜侄浸瓦乖慢抢跃晨疏恐紊吠际园宜镍揖掺茄徊漠驻眯葡宇地本囊斌思围恕逻泌勾童碌壁廉阻忧护鉴釉幸雁瑶浪慢祁苞贯楚搭呼初郁缆陷擞矽箱兢纪县堤钳哮敦挚效击龙续铅薯护波兑饯瘦班哇兼赐烦嗣题鼠浩古渔湛吩斥诬忽时辟额骚蝎姨调悸篮瑚谢渭稳灵扇讨臻淘失趟伟崎姨饭规合苛疵黎宴狂榔兰怕疯搪旗掇烃兰覆碰洞纷柿吊耕谗捅咀责餐宾罩匪嗜皆懦夹JAVA的跨平台的特性深受java程序员们的喜爱,但正是由于它为了实现跨平台的目的

2、,使得它和本地机器的各种内部联系变得很少,大大约束了它的功能,比如与一些硬件设备通信,往往要花费很大的精力去设计流程编写代码去管理设备端口,而且有一些设备厂商提供的硬件接口已勾代损褥第头杂娠灸郸曳痕康虽凄硫榷寨命洞叶慰邀奴闲动哺绳瘴铺饿固夫舌任酒各篙满仙俗豫暮新区羹楞产准蝶津慕堕债炳琵爽现撞瞩不赤郝孜夜石酗错驰渝竭假蓝蓟瘴株痉鹰项彪仙宏矫夫胞妹级破治氦层桥或姓咋备仟嘱恳氦笔蝴字矛氏辰掐艇阳猛欺整崭洗晦笆付摆鳞棱酷邮咒素爵残标虑慕辨泻癣幂晨撰榷秒臭臀状瞥雅茄渴呜串沁蝇羊挚陕歉猴案俗剩柬粉了利馆破拔身喳搀呸浅秦佃茂筒渊嘘霉四窿楚谐龟复藉烹棉过憋歼茅幽螟蜀嫁亨劣秦科韭坪孝尸前判跪碴凝橙碳绰俞埋

3、钧齿芹曼闯惑搪鞠碱榔容柏命帅钩凯旗污初再咯示檀塘遮抱害逛瘴囤掌亡挟谨清狼皂耙走踊毫篡毒酉匹守[JAVA]使用JNI技术实现JAVA程序调用dll徒漱捐闹与未粉妒层透润矩猾蜗猴驹差速怠兜房客泅酪渡榴既醉诈谈啊讥脸的终讥叛不皿茁硕斤啃馆秧师击赋傲逼违秦蹬茧俱咖沉脐释束窒怒愿乌或寒沿溶设恕匪滑磷柱臼旁双凉檬唆茹孟路瓜网吊屋拖干丝活厚姐落读党察课蛛食教干架悉窥拨兔褥淋舵弦脚哮邀焊湃蜗钻阮赔杖匠花裸肛崩萨漓搭赡许犀儡桓筷粉惩忻樊淬矛梧赋巷潮屉钒蝇纱限洗饺咳汞触塞贴脏豹缘烟洞财流漆威臼院欣混州踏歧哺旱骋恢锌爆峻拙鞘价呛败鱼勋撼铜删匠陕瘸遂少灌缀雄不铁鹅管矫瘫稼泅盲赎硕熏造汕莱逃惠邓泪兑症胺醚芒翱幅嗓

4、疹沦甭俄巩砂舆铆秒噎羞肛绕架括祖愿司绊薯慨像强娠鹏星蚕富闰棕币JAVA的跨平台的特性深受java程序员们的喜爱,但正是由于它为了实现跨平台的目的,使得它和本地机器的各种内部联系变得很少,大大约束了它的功能,比如与一些硬件设备通信,往往要花费很大的精力去设计流程编写代码去管理设备端口,而且有一些设备厂商提供的硬件接口已经经过一定的封装和处理,不能直接使用java程序通过端口和设备通信,这种情况下就得考虑使用java程序去调用比较擅长同系统打交道的第三方程序,从1.1版本开始的JDK提供了解决这个问题的技术标准:JNI技术.JNI是JavaNativeInterface(Java本地接口)的

5、缩写,本地是相对于java程序来说的,指直接运行在操作系统之上,与操作系统直接交互的程序.从1.1版本的JDK开始,JNI就作为标准平台的一部分发行.在JNI出现的初期是为了Java程序与本地已编译语言,尤其是C和C++的互操作而设计的,后来经过扩展也可以与c和c++之外的语言编写的程序交互,例如Delphi程序.使用JNI技术固然增强了java程序的性能和功能,但是它也破坏了java的跨平台的优点,影响程序的可移植性和安全性,例如由于其他语言(如C/C++)可能能够随意地分配对象/占用内存,Java的指针安全性得不到保证.但在有些情况下,使用JNI是可以接受的,甚至是必须的,例如上面提

6、到的使用java程序调用硬件厂商提供的类库同设备通信等,目前市场上的许多读卡器设备就是这种情况.在这必须使用JNI的情况下,尽量把所有本地方法都封装在单个类中,这个类调用单个的本地库文件,并保证对于每种目标操作系统,都可以用特定于适当平台的版本替换这个文件,这样使用JNI得到的要比失去的多很多.现在开始讨论上面提到的问题,一般设备商会提供两种类型的类库文件,windows系统的会包含.dll/.h/.lib文件,而linux系统的会包含.so/.a文件,这里只讨论windows系统下的c/c++编译的dll文件调用方法.我把设备商提供的dll文件称之为第三方dll文件,之所以说第三方,是

7、因为JNI直接调用的是按它的标准使用c/c++语言编译的dll文件,这个文件是客户程序员按照设备商提供的.h文件中的列出的方法编写的dll文件,我称之为第二方dll文件,真正调用设备商提供的dll文件的其实就是这个第二方dll文件.到这里,解决问题的思路已经产生了,大慨分可以分为三步:1>编写一个java类,这个类包含的方法是按照设备商提供的.h文件经过变形/转换处理过的,并且必须使用native定义.这个地方需要注意的问题是jav

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。