网站页面权重,天津网站建设业务,申报城市维护建设税上哪个网站,系统维护一般要多久JNI入门教程之HelloWorld篇来源:互联网 宽屏版 评论2008-05-31 09:07:11本文讲述如何使用JNI技术实现HelloWorld#xff0c;目的是让读者熟悉JNI的机制并编写第一个HelloWorld程序。java Native Interface(JNI)是Java语言的本地编程接口#xff0c;是J2SDK的一部分。在java…JNI入门教程之HelloWorld篇来源:互联网 宽屏版 评论2008-05-31 09:07:11本文讲述如何使用JNI技术实现HelloWorld目的是让读者熟悉JNI的机制并编写第一个HelloWorld程序。java Native Interface(JNI)是Java语言的本地编程接口是J2SDK的一部分。在java程序中我们可以通过JNI实现一些用java语言不便实现的功能。通常有以下几种情况我们需要使用JNI来实现。标准的java类库没有提供你的应用程序所需要的功能通常这些功能是平台相关的你希望使用一些已经有的类库或者应用程序而他们并非用java语言编写的程序的某些部分对速度要求比较苛刻你选择用汇编或者c语言来实现并在java语言中调用他们在《java核心技术》中作者提到JNI的时候建议不到万不得已不要使用JNI技术一方面它需要你把握更多的知识才可以驾驭一方面使用了JNI你的程序就会丧失可移植性。在本文我们跳过JNI的底层机制读者最好先把它想象为本地代码和java代码的粘合剂。关系如下图所示下面我们开始编写HelloWorld程序由于涉及到要编写c/c代码因此我们会在开发中使用Microsoft VC工具。编写java代码我们在硬盘上建立一个hello目录作为我们的工作目录首先我们需要编写自己的java代码在java代码中我们会声明native方法代码非常简单。如下所示class HelloWorld{public native void displayHelloWorld();static {System.loadLibrary(hello);}public static void main(String[] args) {new HelloWorld().displayHelloWorld();}}注重我们的displayHelloWorld()方法的声明它有一个要害字native表明这个方法使用java以外的语言实现。方法不包括实现因为我们要用c/c语言实现它。注重System.loadLibrary(hello)这句代码它是在静态初始化块中定义的系统用来装载hello共享库这就是我们在后面生成的hello.dll(假如在其他的操作系统可能是其他的形式比如hello.so)编译java代码javac HelloWorld.java 生成HelloWorld.class文件创建.h文件这一步中我们要使用javah命令生成.h文件这个文件要在后面的c/c代码中用到我们运行javah HelloWorld。这样我们可以看到在相同目录下生成了一个HelloWorld.h文件文件内容如下在此我们不对他进行太多的解释。/* DO NOT EDIT THIS FILE - it is machine generated */#include /* Header for class HelloWorld */#ifndef _Included_HelloWorld#define _Included_HelloWorld#ifdef __cplusplusextern C {#endif/** Class: HelloWorld* Method: displayHelloWorld* Signature: ()V*/JNIEXPORT void JNICALL Java_HelloWorld_displayHelloWorld(JNIEnv *, jobject);#ifdef __cplusplus}#endif#endif编写本地实现代码在这部分我们要用C/C语言实现java中定义的方法我们在VC中新建一个PRoject,然后创建一个HelloWorldImp.cpp文件内容如下#include #include HelloWorld.h#include JNIEXPORT void JNICALLJava_HelloWorld_displayHelloWorld(JNIEnv *env, jobject obj){printf(Hello world!\n);return;}注重我们这里include了 jni.h和刚才得到的HelloWorld.h文件。因此你要在VC里面设置好jni.h在JAVA_HOME/include里面。编译通过后再生成hello.dll文件。运行java程序把上面生成的hello.dll文件复制到我们的工作目录这时候我们的目录中包括HelloWorld.javaHelloWorld.class和hello.dll文件。运行java HelloWorld命令则可在控制台看到Hello world的输出了。本文讲述如何使用JNI技术实现HelloWorld目的是让读者熟悉JNI的机制并编写第一个HelloWorld程序。java Native Interface(JNI)是Java语言的本地编程接口是J2SDK的一部分。在java程序中我们可以通过JNI实现一些用java语言不便实现的功能。通常有以下几种情况我们需要使用JNI来实现。标准的java类库没有提供你的应用程序所需要的功能通常这些功能是平台相关的你希望使用一些已经有的类库或者应用程序而他们并非用java语言编写的程序的某些部分对速度要求比较苛刻你选择用汇编或者c语言来实现并在java语言中调用他们在《java核心技术》中作者提到JNI的时候建议不到万不得已不要使用JNI技术一方面它需要你把握更多的知识才可以驾驭一方面使用了JNI你的程序就会丧失可移植性。在本文我们跳过JNI的底层机制读者最好先把它想象为本地代码和java代码的粘合剂。关系如下图所示[urlhttp://www.wangchao.net.cn/bbsdetail_1754615.html][img]http://image.wangchao.net.cn/it/1323524774693.gif[/img][/url]下面我们开始编写HelloWorld程序由于涉及到要编写c/c代码因此我们会在开发中使用Microsoft VC工具。编写java代码我们在硬盘上建立一个hello目录作为我们的工作目录首先我们需要编写自己的java代码在java代码中我们会声明native方法代码非常简单。如下所示class HelloWorld{public native void displayHelloWorld();static {System.loadLibrary(hello);}public static void main(String[] args) {new HelloWorld().displayHelloWorld();}}注重我们的displayHelloWorld()方法的声明它有一个要害字native表明这个方法使用java以外的语言实现。方法不包括实现因为我们要用c/c语言实现它。注重System.loadLibrary(hello)这句代码它是在静态初始化块中定义的系统用来装载hello共享库这就是我们在后面生成的hello.dll(假如在其他的操作系统可能是其他的形式比如hello.so)编译java代码javac HelloWorld.java 生成HelloWorld.class文件创建.h文件这一步中我们要使用javah命令生成.h文件这个文件要在后面的c/c代码中用到我们运行javah HelloWorld。这样我们可以看到在相同目录下生成了一个HelloWorld.h文件文件内容如下在此我们不对他进行太多的解释。/* DO NOT EDIT THIS FILE - it is machine generated */#include /* Header for class HelloWorld */#ifndef _Included_HelloWorld#define _Included_HelloWorld#ifdef __cplusplusextern C {#endif/** Class: HelloWorld* Method: displayHelloWorld* Signature: ()V*/JNIEXPORT void JNICALL Java_HelloWorld_displayHelloWorld(JNIEnv *, jobject);#ifdef __cplusplus}#endif#endif编写本地实现代码在这部分我们要用C/C语言实现java中定义的方法我们在VC中新建一个PRoject,然后创建一个HelloWorldImp.cpp文件内容如下#include #include HelloWorld.h#include JNIEXPORT void JNICALLJava_HelloWorld_displayHelloWorld(JNIEnv *env, jobject obj){printf(Hello world!\n);return;}注重我们这里include了 jni.h和刚才得到的HelloWorld.h文件。因此你要在VC里面设置好jni.h在JAVA_HOME/include里面。编译通过后再生成hello.dll文件。运行java程序把上面生成的hello.dll文件复制到我们的工作目录这时候我们的目录中包括HelloWorld.javaHelloWorld.class和hello.dll文件。运行java HelloWorld命令则可在控制台看到Hello world的输出了。