Java中JNI的使用详解第一篇:HelloWorld

JNI

JNI是Java Native Interface的缩写,它提供了若干的API实现了Java和其他语言的通信(主要是C&C++)。

演示环境

  • Linux (64位)

第一步: 安装 jdk和gcc

$ sudo apt-get install openjdk-7-jdk
$ sudo apt-get install gcc

验证:

$ java -version
$ gcc -v

第二步:编写java程序

Helloworld.java

public class HelloWorld{
    static
    {
        //加载动态库
        System.loadLibrary("native");
    }
    //原生态方法
    public native void say();
    public static void main(String[] args) {

        HelloWorld world=new HelloWorld();
        world.say();
    }
}

第三步:编译

$ javac HelloWorld.java 

第四步:生成JNI头文件

$ javah HelloWorld

第五步:编辑JNI头文件

$ vim HelloWorld.h

第六步:

  • 完成JNI头文件中的原生态方法
  • 且更名为HelloWorld.c
#include 
/* Header for class HelloWorld */

#ifndef _Included_HelloWorld
#define _Included_HelloWorld
#ifdef __cplusplus
extern "C" {
#endif
/*
 * Class:     HelloWorld
 * Method:    say
 * Signature: ()V
 */
//-------------------------------完成此方法-------------------------
  JNIEXPORT void JNICALL Java_HelloWorld_say
    (JNIEnv * jni, jobject obj){
    printf("%s\n", "HelloWorld!");
    }
//----------------------------------------------------------------
#ifdef __cplusplus
}
#endif
#endif

保存.

第七步:编译JNI头文件生成so动态库

linux动态库 lib + 库的名字 + .so
windows .dll

$ gcc HelloWorld.c -shared -fPIC -o libnative.so -I /usr/lib/jvm/java-7-openjdk-amd64/include/

第八步:设置程序共享库位置

$ export LD_LIBRARY_PATH=.

第九步:执行java程序

$ java HelloWorld

成功打印!

 HelloWorld!

你可能感兴趣的:(Java中JNI的使用详解第一篇:HelloWorld)