美文网首页
JNI:Java代码调用本地代码

JNI:Java代码调用本地代码

作者: BUG弄潮儿 | 来源:发表于2022-03-01 20:59 被阅读0次

1. JNI概述

JNI 是 Java Native Interface 的简称

  • Java是跨平台的编程语言,但是在有些时候仍然是有需要调用本地代码(这些代码通常是由 C 与 C++ 编写的)。

  • JNI 是 Java 平台的一个功能强大的接口。这个 JNI接口提供了Java与操作系统本地代码相互调用的功能。

2. C/C++代码的步骤

  • 在 Java 类中声明一个native方法
public native void sayHello();
  • 使用 javah 命令生成包含 native 方法声明的C/C++头文件
javah com.omg.NativeLib
  • 将生成的C/C++头文件来编写C/C++源文件
#include<iostream>
#include "com_omg_NativeLib.h"
using namespace std;

JNIEXPORT void JNICALL Java_com_olive_NativeLib_sayHello (JNIEnv *, jobject){
    cout << "hello world" << endl;
}
  • 将C/C++源文件编译成动态链接库(windows对应DLL,Linux对应so)

  • 把dll文件的路径添加到环境变量PATH中

  • 在Java类中加载dll文件,然后调用声明的native方法

System.load("C:\\lib\\NativeCodeJni.dll");
NativeLib nl = new NativeLib();
nl.sayHello();

或者

System.loadLibrary("NativeCodeJni");
NativeLib nl = new NativeLib();
nl.sayHello();

3. 使用JNI弊端

  • 使用了 JNI,那么这个Java Application 将不能跨平台了。如果需要移植到别的平台上,那么需要重新编写native代码
  • Java 是强类型的语言,而 C/C++并不是。因此,在编写JNI时要更小心
  • 总之,必须在构建Java程序的时候,尽量少用本地代码

Visual studio环境配置

相关文章

  • CMakeList

    JNI(Java Native Interface):Java本地接口。是为了方便Java调用c、c++等本地代码...

  • android jni和ndk

    JNI是Java Native Interface(Java本地接口),是为了方便Java调用C和C++等本地代码...

  • JNI:Java代码调用本地代码

    1. JNI概述 JNI 是 Java Native Interface 的简称 Java是跨平台的编程语言,但是...

  • NDK JNI--学习笔记

    JNI 是java语言提供的Java和C/C++相互沟通的机制,Java可以通过JNI调用本地的C/C++代码,...

  • JNI和NDK编程

    Java JNI本意是Java Native Interface,它是为了方便Java调用C、C++等本地代码所封...

  • JNI 常见用法

    一、Java 代码 和JNI代码通信 Java代码通过JNI接口 调用 C/C++方法 1、首先我们需要在Java...

  • 2.JNI.h解析

    什么是JNI? JNI 是java本地开发接口.JNI 是一个协议,这个协议用来沟通java代码和外部的本地代码(...

  • JNI使用流程

    参考一 JNI(Java Native Interface): 为了Java方便调用C,C++等本地代码所封装的一...

  • JNI 调用 JAVA 接口

    JNI 调用 JAVA 接口 介绍 JNI 是本地语言编程接口。它允许运行在JVM中的Java代码和用C、C++或...

  • 7年腾讯大神告诉Java新手必学的21个技术点

    JNI JavaNative Interface,可以允许Java中调用本地接口方法,一般用于C/C++代码的调用...

网友评论

      本文标题:JNI:Java代码调用本地代码

      本文链接:https://www.haomeiwen.com/subject/ygsjrrtx.html