为什么有个native呢?这是我所要学习的地方。所以下面想要总结下native。
Java中的native关键字 JNA的使用

认识native

JNI

Java平台有个用户和本地C代码进行互操作的API,称为Java Native Interface (Java本地接口)。 允许Java代码和其他语言(尤其C/C++)写的代码进行交互,只要遵守调用约定即可。
Java中的native关键字 JNA的使用
JNI调用过程
注意写程序时自下而上,调用时自上而下。
Java中的native关键字 JNA的使用

JNA

JNA(Java Native Access)框架是一个开源的Java框架,是SUN公司主导开发的,建立在经典的JNI的基础之上的一个框架。JNA框架就是为了解决这些问题和繁琐的事情而开发的,它提供一组Java工具类用于在运行期动态访问系统本地共享类库而不需要编写任何Native/JNI代码。开发人员只要在一个java接口中描述目标native library的函数与结构,JNA将自动实现Java接口到native function的映射,大大降低了Java调用本体共享库的开发难度。最重要的是我们不需要重写我们的动态链接库文件,而是有直接调用的API,大大简化了我们的工作量。JNA只需要我们写Java代码而不用写JNI或本地代码。

JNA的调用过程
Java中的native关键字 JNA的使用

JNA原理

JNA包括一个已与许多本地函数映射的平台库,以及一组简化本地访问的公用接口。JNA是建立在JNI技术基础之上的一个Java类库,它使您可以方便地使用Java直接访问动态链接库中地函数。原来使用JNI,你必须手工用C写一个动态链接库,在C语言中映射Java的数据类型。
JNA中,它提供一个动态的C语言编写的转发器,可以自动实现Java和C的数据类型映射,你不再需要编写C动态链接库。使用JNA技术比使用JNI技术调用动态链接库会有微的性能损失。但总体影响不大,因为JNA也避免了JNI的一些平台配置的开销。

Java调用C写的方法

1.创建java项目 编写HelloNative类
Java中的native关键字 JNA的使用
Java中的native关键字 JNA的使用
Java中的native关键字 JNA的使用
Java中的native关键字 JNA的使用
如果大家直接运行这个代码, JVM会告之:“A Java Exception has occurred.”控制台输出如下:
Java中的native关键字 JNA的使用
2.获取包含sayHello方法的头文件
(1)cmd进入到项目工程文件的放Java的文件目录下
Java中的native关键字 JNA的使用
Java中的native关键字 JNA的使用
Java中的native关键字 JNA的使用
(2)javac HelloNative.java生成一个文件HelloNative.class
Java中的native关键字 JNA的使用
Java中的native关键字 JNA的使用
(3)生成头文件
javah -jni HelloNative

相关文章:

  • 2021-11-08
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2021-07-23
  • 2021-10-24
  • 2022-12-23
  • 2022-01-14
  • 2021-08-30
相关资源
相似解决方案