In this article we design a lab to prove : In JNI, Java and C are in the same process.
Java file:
import java.lang.management.ManagementFactory;
class ShowPID{
private native void print();
public static void main(String[] args){
//First, we use java.lang.management.ManagementFactory to show the pid of java progress.
String name = ManagementFactory.getRuntimeMXBean().getName();
System.out.println("Progress id in Java \n\t"+name);
new ShowPID().print();
}
static{
System.loadLibrary("ShowPID");
}
}
C file:
#include <jni.h>
#include <stdio.h>
#include <unistd.h>
#include "ShowPID.h"
JNIEXPORT void JNICALL Java_ShowPID_print
(JNIEnv *env, jobject obj)
{
printf("Progress ID in C \n\tpid=%d\n", getpid());
return;
}
Result:
wsh@wsh-VirtualBox:~/JNI/JNI_Threads/ShowPID$ java ShowPID Progress id in Java
7576@wsh-VirtualBox
Progress ID in C
pid=7576
Conclustion: Java and C++ are in the same process.