Java Native Interface (JNI) позволяет вызывать “родные” методы ОС из Java. Как это использовать, решать вам.
Итак, небольшой пример.
Первое, что нам необходимо, это собственно java исходник. Он будет выглядеть так:
public class jnitest {
public static native void HelloWorld();
public static void main(String[] args)
{
System.load("/home/toch/IdeaProjects/jnitest/libtestjni.so");
System.out.println("Hello from java!");
HelloWorld();
}
}
Это только пример, показывающий ключевой момент, а именно метод HelloWorld(), который мы объявляем native. Это указывает, что реализация самого метода будет находиться во вне, так сказать. Отсюда и следствие – у метода нет тела. Вообще. 
Второй ключевой момент это вызов System.load(), который будет загружать нашу будущую тестовую библиотеку.
Скомпилировав этот файл, мы получим обычный класс: jnitest.class. Немного магии, которую надо выполнять в каталоге, где расположен этот файл:
javah -jni jnitest
Утилита создась файл jnitest.h:
/* DO NOT EDIT THIS FILE - it is machine generated */
#include
/* Header for class jnitest */
#ifndef _Included_jnitest
#define _Included_jnitest
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: jnitest
* Method: HelloWorld
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_jnitest_HelloWorld
(JNIEnv *, jclass);
#ifdef __cplusplus
}
#endif
#endif
Это заголовочный файл, который подсказывает нам, как яваметод превращается в метод С. Для удобства переименуем файл в libjnitest.h
Следующим шагом пишем тело нашего нативного метода в libjnitest.cpp:
#include
#include "libtestjni.h"
JNIEXPORT void JNICALL Java_jnitest_HelloWorld
(JNIEnv *, jclass)
{
fprintf(stderr,"Hello World from C!!!\n");
return;
}
Makefile, чтобы получить собственно сошку:
SRC=libtestjni.cpp
OBJ=libtestjni.o
LIB=libtestjni.so
TESTSRC=testjni.cpp
GCC=g++
default:
$(GCC) -c $(SRC) -o $(OBJ)
$(GCC) -shared -Wl,-soname,$(LIB) -o $(LIB) $(OBJ) -lc
Теперь, генерируем библиотеку выполнив make. Должны получить файл libtestjni.so.
Собственно, исправив путь в System.load(), на тот, который будет у вас(ваш домашний каталог, к примеру), можно смело запускаться. В консоле вы должны увидеть:
Hello from java!
Hello World from C!!!
Поздравляю!