java 高级用法之: 调用本地方法的利器 JNA

This blog introduces JNA, a Java Native Access tool that allows for easier interaction with native libraries compared to the complex JNI method. It explains JNA's functioning, its library loading process, and demonstrates how to use JNA with a C library example. The post also delves into handling struct parameters in native methods." 133117390,5694251,使用Python和Flask实现Web实时日志更新,"['Python', 'Flask', '前端开发', 'Web框架', '实时更新']
摘要由CSDN通过智能技术生成

 

简介

JAVA 是可以调用本地方法的,官方提供的调用方式叫做 JNI,全称叫做 java native interface。要想使用 JNI,我们需要在 JAVA 代码中定义 native 方法,然后通过 javah 命令创建 C 语言的头文件,接着使用 C 或者 C++语言来实现这个头文件中的方法,编译源代码,最后将编译后的文件引入到 JAVA 的 classpath 中,运行即可。

虽然 JAVA 官方提供了调用原生方法的方式,但是好像这种方法有点繁琐,使用起来没有那么的方便。

那么有没有更加简洁的调用本地方法的形式吗?答案是肯定的,这就是今天要讲的 JNA。

JNA 初探

JNA 的全称是 Java Native Access,它为我们提供了一种更加简单的方式来访问本地的共享库资源,如果你使用 JNA,那么你只需要编写相应的 java 代码即可,不需要编写 JNI 或者本地代码,非常的方便。

本质上 JNA 使用的是一个小的 JNI library stub,从而能够动态调用本地方法。

JNA 就是一个 jar 包,目前最新的版本是 5.10.0,我们可以像下面这样引用它:

<dependency>
            <groupId>net.java.dev.jna</groupId>
            <artifactId>jna</artifactId>
            <version>5.10.0</version>
        </dependency>

JNA 是一个 jar 包,它里面除了包含有基本的 JAVA class 文件之外,还有很多和平台相关的文件,这些平台相关的文件夹下面都是 libjnidispatch*的库文件。

<img src="https://img-blog.csdnimg.cn/884d316db24a444fb9e8ea34d608e5a8.png" style="zoom:50%"/>

可以看到不同的平台对应着不同的动态库。

JNA 的本质就是将大多数 native 的方法封装到 jar 包中的动态库中,并且提供了一系列的机制来自动加载这个动态库。

接下来我们看一个具体使用 JNA 的例子:

public class JNAUsage {

    pub
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值