Java中的本地方法是什么以及它们应该用在哪里?

这个问题在这里已经有了答案:

  • Java中的native关键字是什么? 11个答案

  • Java中的本地方法是什么以及它们应该用在哪里?

    一旦你看到一个小例子,就会明白:

    Main.java

    public class Main {
        public native int intMethod(int i);
        public static void main(String[] args) {
            System.loadLibrary("Main");
            System.out.println(new Main().intMethod(2));
        }
    }
    

    Main.c

    #include <jni.h>
    #include "Main.h"
    
    JNIEXPORT jint JNICALL Java_Main_intMethod(
        JNIEnv *env, jobject obj, jint i) {
      return i * i;
    }
    

    编译并运行

    javac Main.java
    javah -jni Main
    gcc -shared -fpic -o libMain.so -I${JAVA_HOME}/include 
      -I${JAVA_HOME}/include/linux Main.c
    java -Djava.library.path=. Main
    

    输出

    4
    

    使用Oracle JDK 1.8.0_45测试Ubuntu 14.04。

    所以很明显,它可以让你:

  • 使用Java中的任意汇编代码调用编译的动态加载的库(这里用C语言编写)
  • 并将结果返回到Java
  • 这可以用来:

  • 使用更好的CPU汇编指令在关键部分编写更快的代码(不是CPU便携式)
  • 直接进行系统调用(不是OS便携式)
  • 权衡较低的便携性。

    你也可以从C中调用Java,但是你必须首先在C中创建一个JVM:如何从C ++调用Java函数?

    GitHub上的示例供您使用。


    该方法在“本地”代码中实现。 也就是说,不在JVM中运行的代码。 它通常用C或C ++编写。

    本地方法通常用于与系统调用或其他编程语言编写的库进行交互。


    我想知道我们在哪里使用本机方法

    理想情况下,不是。 实际上,某些功能在Java中不可用,您必须调用一些C代码。

    这些方法在C代码中实现。

    链接地址: http://www.djcxy.com/p/96821.html

    上一篇: What are native methods in Java and where should they be used?

    下一篇: Error after pressing a button