Java: JNI
Example
Create Java class:
public class Main {
private static native int noop();
private static int testNative() {
return Main.noop();
}
public static void main(String[] args) {
testNative();
}
static {
System.loadLibrary("foo");
}
}
Comile:
javac Main.java
Generate C header:
javah Main
Add C implementation:
#include <jni.h>
#include "Main.h"
JNIEXPORT int JNICALL
Java_Main_noop(JNIEnv *env, jobject obj) {
return 0;
}
Compile C library:
cc -I/usr/lib/jvm/default-java/include/ -o libfoo.so -shared -Wl,-soname,foo.so Main.c -static -lc
Run:
java -Djava.library.path=. Main