flipkart

Friday, December 13, 2013

JNI Development in Linux(Ubuntu) command line



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;

}

first save C program

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