Java programming with Java Native Interface ( JNI ) / Calling Native C functions from JAVA using JNI

JAVA and JNI
pre-requisite – Install Java SE Development Kit 6u14 under /usr/jdk1.6.0_14
Write a JAVA class [ HelloWorld.java ]

public class HelloWorld  { static { System.loadLibrary("hello"); } public native void printHelloWorld();
}

Compile the class using javac

sudo javac HelloWorld.java

after this HelloWorld.class file should get created.
Create header file required for writing a native program

sudo javah -jni HelloWorld

Write a helloworld.c native c program.

#include "HelloWorld.h"
#include <stdio.h>
JNIEXPORT void JNICALL
Java_HelloWorld_printHelloWorld (JNIEnv *env, jobject obj) { printf("Hello Worldn");
}

Create a shared library.

gcc -I/usr/jdk1.6.0_14/include -I/usr/jdk1.6.0_14/include/linux -shared -o libhello.so HelloWorld.c

Write a Main java class[ Main.java ], which will call native function.

public class Main { public static void main(String[] args) { new HelloWorld().printHelloWorld(); }
}

Compile Main.java

javac Main.java

Run the program

java Main

Reference’s
1) Using the JAVA Native interface’s
2) JNI Example
3) Integrating Native methods into Java
4) Imp- Introduction to JNI
5) http://java.sun.com/docs/books/jni/html/start.html

Android Android Commands Android Java Applications Application Libraries Bash / Shell Scripts Bluetooth driver Build Frameworks Commands and Packages Core Kernel C Programs Development Environment Setup Documents / Books Errors & Failures File Systems Framebuffer / Display Driver git Go Language Programs Hardware Platforms Home JAVA Programs Kernel & Device Drivers Kernel Booting and Porting Linux, OS Concepts and Networking Linux Device Drivers Linux Host, Ubuntu, SysAdmin Linux Kernel Linux Networking Middleware Libraries, HAL NDK / Middleware / HAL Network Driver OS Concepts PHP Procfs Filesystem Programming Languages RaspberryPi Scripting and Automation Search Engine Optimisation ( SEO ) Socurce Code Management ( SCM ) System Administration, Security Testing and Debugging Uncategorized Userspace Utilities Web design and development Wordpress Yocto / Bitbake / Openembedded
Tags: ,

Leave a Reply