JNI 作为一个编程框架,可以使得java程序可以调用或者被调用使用C或C++编写的库。
java调用C实现的HelloWorld例子
HelloWorld.java
class HelloWorld
{
    private native void print();
    public static void main(String[] args)
    {
        new HelloWorld().print();
    }
    static {
        System.loadLibrary("HelloWorld");
    }
}
java命令生成h头文件
javac HelloWorld.java
javah HelloWorld
HelloWorld.h 自动生成,不能修改
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class HelloWorld */
#ifndef _Included_HelloWorld
#define _Included_HelloWorld
#ifdef __cplusplus
extern "C" {
#endif
/*
 * Class:     HelloWorld
 * Method:    print
 * Signature: ()V
 */
JNIEXPORT void JNICALL Java_HelloWorld_print
  (JNIEnv *, jobject);
#ifdef __cplusplus
}
#endif
#endif
libHelloWorld.c 主要函数功能的实现
#include <stdio.h>
#include "HelloWorld.h"
JNIEXPORT void JNICALL
Java_HelloWorld_print(JNIEnv *env, jobject obj)
{
    printf("Hello World!\n");
    return;
}
run.sh
# gcc 4.4.7
# openjdk 1.7.0
export LD_LIBRARY_PATH=`pwd`:$LD_LIBRARY_PATH
gcc -shared -fPIC libHelloWorld.c -o libHelloWorld.so
java HelloWorld