JNI 开发技术 (一)

   很多时候为了追求性能采用JNI的方法来帮助JVM完成一些计算操作,我们会采用JNI的方式来获取操作系统更多更高级的特性,从而摆脱JVM API功能上的一些不足。下面是我初次使用JNI的一些心得。

   开发JNI程序一般有6个步骤:

 

   1.设计Java程序,制定和规划Native接口,并为次接口创建Java类。

   2.编译刚刚写的Java程序。(javac .......,你懂的)

   3.使用javah 工具根据刚刚编译的java 程序生成C语言头文件。(例如:javah -d /home/alibaba/jni-learn  xxx.xxx.FirstJNIExample )

   4.使用产生的头文件,实现实际功能,#include "xxx.h",然后开始神奇的C程序。

   5.编译刚刚写好的C程序为共享库。注意:在JDK安装路径的include文件夹下,对于不同OS平台有不同的头文件子目录,比如这里的就是/jdk/include/linux,  windows就可能是/jdk/include/win32/文件夹。

  6.运行java程序。(java xxx.xxx.FirstJNIExample)

 

至此整个开发流程结束了,

 

下面我讲讲常常遇到的问题:

最近常遇到的问题就是无法加载到编译好的共享库文件 *.so这个文件。

为了加载*.so这个我们需要在程序里面调用哦该静态方法之前使用这个来

加载共享库:(有两个方法)

 1.这个方法采用“共享库名”来家在共享库,“共享库名全限定名=所在目录路径 + lib + 共享库名 + .so”,所以使用这个方法加载的时候,必须保证共享库的文件名必须满足上面的那个公式,而且这个文件必须在-Djava.library.path=.这个JVM启动选项指定的路径下。

上面要求的(文件名,还有路径很有讲究)。

 

2.使用绝对路径来加载共享库,这种方法比较适合开发阶段调试,没有前面那么多条条框框。

 

好了,第一次先说这么多,后面讲写更深入的部分。

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值