Cir*_*四事件 129
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));
}
}
Run Code Online (Sandbox Code Playgroud)
Main.c:
#include <jni.h>
#include "Main.h"
JNIEXPORT jint JNICALL Java_Main_intMethod(
JNIEnv *env, jobject obj, jint i) {
return i * i;
}
Run Code Online (Sandbox Code Playgroud)
编译并运行:
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
Run Code Online (Sandbox Code Playgroud)
输出:
4
Run Code Online (Sandbox Code Playgroud)
使用Oracle JDK 1.8.0_45在Ubuntu 14.04上进行了测试.
所以很明显它允许你:
这可以用于:
与低便携性的权衡.
您也可以从C调用Java,但必须首先在C中创建JVM:如何从C++调用Java函数?
GitHub上的示例供您玩.
Lau*_*ves 45
该方法以"本机"代码实现.也就是说,代码不能在JVM中运行.它通常用C或C++编写.
本机方法通常用于与系统调用或用其他编程语言编写的库进行交互.
Pet*_*rey 15
我想知道我们在哪里使用Native方法
理想情况下,完全没有.实际上,Java中没有某些功能,您必须调用一些C代码.
这些方法用C代码实现.
Java本机代码必需品:
希望这些要点回答你的问题:)