java调用本地方法--jni简介

本篇结构:

  • 简介
  • JNI实现步骤
  • JNI实例–简单调用
  • 故障排除
  • CUDA 生成动态链接库 指令
  • 参考博文

一、简介

JAVA以其跨平台的特性深受人们喜爱,而又正由于它的跨平台的目的,使得它和本地机器的各种内部联系变得很少,约束了它的功能。

有时可能存在需要访问的系统特性和设备通过java平台无法实现,又或者某个部分需要非常高的性能,这时可能就要牺牲跨平台的优势,一种解决方法就是寻求系统级的编程语言C/C++的帮助,这就需要用到JNI。

JNI是Java Native Interface的英文缩写,中文翻译为本地调用。JAVA通过JNI调用本地方法,而本地方法是以库文件的形式存放的(在WINDOWS平台上是DLL文件形式,在UNIX机器上是SO文件形式)。通过调用本地的库文件的内部方法,使JAVA可以实现和本地机器的紧密联系,调用系统级的各接口方法。

开发JNI程序会受到系统环境的限制,因为用C/C++语言写出来的代码或模块,编译过程当中要依赖当前操作系统环境所提供的一些库函数,并和本地库链接在一起。而且编译后生成的二进制代码只能在本地操作系统环境下运行,因为不同的操作系统环境,有自己的本地库和CPU指令集,而且各个平台对标准C/C++的规范和标准库函数实现方式也有所区别。这就造成使用了JNI接口的JAVA程序,不再像以前那样自由的跨平台。如果要实现跨平台,就必须将本地代码在不同的操作系统平台下编译出相应的动态库。

二、JNI实现步骤

JNI的实现步骤如下:

  1. 编写java类,类中存在 natice 修饰的方法。
  2. 使用 javac 编译 java 类。
  3. 使用 javah 命令生成头文件。
  4. 使用C/C++实现本地方法,该方法定义可以在 javah 生成的头文件中找到。
  5. 生成动态链接库。
  6. 执行 java(java -Djava.library.path=XX XXX 或者拷贝动态库至 java.library.path 本地库搜索目录下)。

再来个详细点的英文版,就不翻译了:

  1. create a java project, c
  • 5
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值