for JNI (Java Native Interface) development we need two languages
1)Java
2)C or C++
Step 1:Open terminal(Ctrl+Alt+T) first next create java file
Prompt@vamsi:~$vi VamsiJni.java
public class VamsiJni{
static{
System.loadLibrary("sum");
}
public native int sum(int a, int b);
public static void main(String[] args){
VamsiJni vjni= new VamsiJni();
System.out.println("sum of two numbers is ...."+vjni.sum(10,45));
}//main is closed
}//class is closed
Save program
Step 2: Compile java program
Prompt@vamsi:~$javac VamsiJni.java
Now our directory having VamsiJni.class file (This is called Byte file)
Step 3: For generating header file
Prompt@vamsi:~$javah -jni VamsiJni
Now our directory having VamsiJni.h file (This is C Header file for communicating jni syntax)
Step 4: now create c source file
Before creation source file once open header file copy prototype function name
Prompt@vamsi:~$vi sum.c
#include<stdio.h>
#include"VamsiJni.h"
#include<jni.h>
JNIEXPORT jint JNICALL Java_VamsiJni_sum
(JNIEnv * env, jobject object, jint a, jint b){
printf("This is sum function inside C");
return a+b;
}
Step 5:now our job is creation shared library using C source code
Prompt@vamsi:~$gcc -I /usr/lib/jvm/java-1.6.0-openjdk/include/ -shared -o libsum.so sum.c
Now our directory having sum.so
Step 6: now executing java program
Prompt@vamsi:~$java -Djava.library.path=. VamsiJni
Now our output is:
sum of two numbers is ....55
This is sum function inside C