新闻资讯

质量为本、客户为根、勇于拼搏、务实创新

< 返回新闻资讯列表

java中jni有甚么用

发布时间:2023-07-10 09:56:54

甚么是JNI

JavaNativeInterface(JNI)是Java平台的一种编程框架,用于在Java利用程序中调用本地代码。本地代码通常指的是C、C++或汇编程序等本地语言编写的库或系统调用。使用JNI,Java利用程序可以与本地代码进行双向通讯,使得Java利用程序可使用本地库提供的强大且高性能的功能。

为何需要JNI

Java虚拟机(JVM)的履行速度虽然比传统的本地代码慢,但由于其平台无关性、安全性和对内存及文件系统的管理等方面的优势,Java已成了许多利用程序开发的首选语言。同时,Java也是UI设计领域的一大主流,Android平台就是Java语言开发的利用非常多。但是,对某些需要高性能、实时性、或调用本地库等利用场合,Java的性能常常不能满足要求。而使用JNI可以很好地解决这些需要本地库支持的问题。

怎样使用JNI

JNI需要开发者使用JavaNativeDevelopmentKit(JDK)提供的一些工具和API来实现本地代码与Java利用程序的交互。使用JNI需要完成以下步骤:

  1. 定义本地方法
  2. 生成头文件
  3. 实现本地方法
  4. 编译本地库
  5. 加载本地库
  6. 调用本地方法
  7. 释放本地资源

上述步骤中最重要的是定义本地方法和实现本地方法两步。具体来讲,定义本地方法需要在Java代码中使用native关键字声明,以告知编译器该方法是一个本地方法,需要在运行时动态绑定到本地实现。将Java本地方法与本地实现进行绑定的API主要有三种类型:JNIEnv、jobject和jclass等。

JNI的优势和劣势

使用JNI进行Java与本地代码的交互具有以下优点:

  1. 性能较高:能够使用底层语言编写的本地库提供更高的性能。
  2. 开发灵活:可以基于Java的平台独立性,使用本地库提供的强大且高性能的功能。
  3. 安全性高:通过JNI可以在Java代码和本地代码之间建立安全的交互,确保代码运行的安全性。

但是,JNI也存在着以下缺点:

  1. 跨平台性差:本地库需要分别针对区别的平台进行编写和优化,加大了开发者的工作量。
  2. 可读性差:JNI触及本地代码的实现,本地代码与Java代码的分离可能致使代码可读性差,难以保护和扩大。
  3. 运行速度慢:虽然JNI调用本地库的性能较高,但是即便是一次简单的本地方法调用,也需要将控制权交出JVM,这些控制权转移的时间会增加利用性能的开消。

桂{哥{网{络www.gUIgeGe.cn

X

截屏,微信识别二维码

微信号:muhuanidc

(点击微信号复制,添加好友)

打开微信

微信号已复制,请打开微信添加咨询详情!