Return to Java, Foreign Function Interface (FFI)
Java Native Interface (JNI) is a framework that enables Java code running in the Java Virtual Machine (JVM) to interact with applications and libraries written in other languages, primarily C, C++, and assembly. JNI allows Java code to call native methods and vice versa, facilitating interoperability between Java and native code.
**Java (Calling Native Method):**
```java public class Example {
// Declare a native method private native void sayHello();
static { // Load the native library System.loadLibrary("example"); }
public static void main(String[] args) { new Example().sayHello(); }} ```
**C (Implementing Native Method):**
```c
JNIEXPORT void JNICALL Java_Example_sayHello(JNIEnv *env, jobject obj) {
printf("Hello from C!\n");} ```
In this example, the Java code declares a native method `sayHello` and loads a native library named `example`. The C code implements this method, which simply prints a message to the console.