What is the difference between a Java method and a native method?


A native method is the one whose method implementation is done in other languages like c++ and Java. These programs are linked to Java using JNI or JNA interfaces.

The difference between normal method and native method is That the native method declaration contains native keyword and, the implementation of the method will be other programming language.

Example

Tester.java

public class Tester {
   public native int getValue(int i);
   
   public static void main(String[] args) {
      System.loadLibrary("Tester");
      System.out.println(new Tester().getValue(2));
   }
}

Tester.c

#include <jni.h>
#include "Tester.h"

JNIEXPORT jint JNICALL Java_Tester_getValue(
JNIEnv *env, jobject obj, jint i) {
   return i * i;
}

Compile and run

javac Tester.java
javah -jni Tester
gcc -shared -fpic -o libTester.so -I${JAVA_HOME}/include \
-I${JAVA_HOME}/include/linux Tester.c
java -Djava.library.path=. Tester

Output

4

Swarali Sree
Swarali Sree

I love thought experiments.

Updated on: 30-Jul-2019

334 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements