What are native methods in Java and where should they be used?
This question already has an answer here:
What are native methods in Java and where should they be used?
Once you see a small example, it becomes clear:
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;
}
Compile and run :
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
Output :
4
Tested on Ubuntu 14.04 with Oracle JDK 1.8.0_45.
So it is clear that it allows you to:
This could be used to:
with the tradeoff of lower portability.
It is also possible for you to call Java from C, but you must first create a JVM in C: How to call Java functions from C++?
Example on GitHub for you to play with.
The method is implemented in "native" code. That is, code that does not run in the JVM. It's typically written in C or C++.
Native methods are usually used to interface with system calls or libraries written in other programming languages.
I like to know where does we use Native Methods
Ideally, not at all. In reality some functionality is not available in Java and you have to call some C code.
The methods are implemented in C code.
链接地址: http://www.djcxy.com/p/96822.html上一篇: 在Java中使用native