Slide 8
Slide 8 text
We had alternatives
package q.r.s;
class NativeBinding {
static {
System.load("{path/to/libNative.so} ");
}
public static native boolean isatty(
int fileDescriptor
);
}
#include "q_r_s_Native.h"
#include
JNIEXPORT jboolean JNICALL
Java_q_r_s_NativeBinding_isatty(
JNIEnv *env, jclass cls, jint fileDescriptor
) {
return isatty(fileDescriptor)?
JNI_TRUE:
JNI_FALSE;
}
$ javac -d classes -cp src \
-h jni q/r/s/Native.java
$ gcc \
-I $JAVA_HOME/include \
-I $JAVA_HOME/include/linux \
-fPIC \
-shared \
-o Native.so \
Native.c
JNI JNA
public interface JNA_Library extends Library
{
JNA_Library INSTANCE =
(JNA_Library) Native.loadLibrary(
"c",
JNA_Library.class
);
boolean isatty(int fileDescriptor);
}
π¦ Third party
π Easy to use
π Versatile, not fast