黑马程序员:感受JAVA中的native修饰符

来源:互联网 发布:同花顺模拟炒股软件 编辑:程序博客网 时间:2024/04/29 06:49

---------------------- android培训、java培训、期待与您交流! ---------------------

 

JAVA程序中用关键字native 修饰的方法,表明这个方法是用C、C++等非JAVA语言实现!

显然这种方式提高了JAVA程序的运行效率、与操作系统交互、访问旧系统或库

可以将native方法比作Java程序同C等非JAVA语言程序的接口,因此这种方式又叫JNIjava native inerface)JAVA本地调用

 

实现JNI调用的步骤:

Java中声明native()方法,然后编译

javah产生一个.h文件

.c文件实现native导出方法,其中需要包含以上的.h文件(还要包含了JDKjni.h

将第三步的.c文件编译成动态链接库文件(DLLDynamic Link Liberary

Java中用System.loadLibrary()方法加载生成的DLLnative()的C实现即可在JAVA中调用

 

实现JNI调用的步骤(图解):

 

 

代码实现:

public class Testext {

                 public static native voidhelloWorldInNative(); //此方法用C语言实现

                 static {     System.loadLibrary("test");   } //加载test.dll

                 public static void main(String[] args) {       helloWorldInNative();       }

}

编译Testext.java得到Testext.class

创建Native Method的头文件Testext.h        javah –jni Testext

 

Testext.c文件中实现helloWorldInNative()

#include "Testext.h"

#include "stdio.h"

#include "jni.h"//…JDK\include目录下的三个文件jni.hjawt_md.hjni_md.h复制到VisualC++include目录下

JNIEXPORT void JNICALL Java_Testext_helloWorldInNative (JNIEnv *env, jobject obj)

{    printf("Hello Native World!\n");      return;     }

 

 Testext.c编译生成test.dll

S:\testJNI>cl-I"D:\Soft\Program\JAVA\JDK\include" -I "D:\Soft\Program\JAVA\JDK\include\win32"

-I "D:\Soft\Program\VisualC++\C++\Include"-MD -LD Testext.c-Fetest.dll

 

用java.exe运行程序Testext.class:

      S:\testJNI>java Testext

  Hello Native World!

 

 

 

 

 

 

 

 

----------------------- android培训、java培训、期待与您交流! ----------------------

 

 

详细请查看:http://edu.csdn.net/heima

原创粉丝点击