◎ 首页 > 网页制作 > HTML教程 > INTRODUCE
JNI入门教程之HelloWorld篇
摘要:.NET ToolsTen Must-Have Tools Every Developer Should Download Now James Avery
本文报告怎样行使JNI技能实现HelloWorld,目标是让读者认识JNI的机制并编写第一个HelloWorld措施。
Java Native Interface(JNI)是Java说话的当地编程接口,是J2SDK的一部门。在java措施中,我们可以通过JNI实现一些用java说话未便实现的成果。凡是有以下几种环境我们必要行使JNI来实现。
在《java焦点技能》中,作者提到JNI的时辰,提议不到万不得已不要行使JNI技能,一方面它必要你把握更多的常识才可以驾御,一方面行使了JNI你的措施就会损失可移植性。在本文我们跳过JNI的底层机制,Windowsxp教程cWindows教程,读者最好先把它想象为当地代码和java代码的粘合剂。相关如下图所示:
下面我们开始编写HelloWorld措施,因为涉及到要编写c/c++代码因此我们会在开拓中行使Microsoft VC++器材。
我们在硬盘上成立一个hello目次作为我们的事变目次,JSP教程c数据库教程,起首我们必要编写本身的java代码,在java代码中我们会声明native要领,代码很是简朴。如下所示
class HelloWorld
{
public native void displayHelloWorld();
static {
System.loadLibrary("hello");
}
public static void main(String[] args) {
new HelloWorld().displayHelloWorld();
}
}
留意我们的displayHelloWorld()要领的声明,它有一个要害字native,软件教学c办公软件,表白这个要领行使java以外的说话实现。要领不包罗实现,由于我们要用c/c++说话实现它。留意System.loadLibrary("hello")这句代码,它是在静态初始化块中界说的,体系用来装载hello共享库,这就是我们在后头天生的hello.dll(假如在其他的操纵体系也许是其他的情势,好比hello.so)
javac HelloWorld.java 天生HelloWorld.class文件
这一步中我们要行使javah呼吁天生.h文件,这个文件要在后头的c/c++代码顶用到,我们运行
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: displayHelloWorld
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_HelloWorld_displayHelloWorld
(JNIEnv *, jobject);
#ifdef __cplusplus
}
#endif
#endif
在这部门我们要用C/C++说话实现java中界说的要领,我们在VC++中新建一个Project,然后建设一个HelloWorldImp.cpp文件,内容如下
#include <jni.h>
#include "HelloWorld.h"
#include <stdio.h>
JNIEXPORT void JNICALL
Java_HelloWorld_displayHelloWorld(JNIEnv *env, jobject obj)
{
printf("Hello world!/n");
return;
}
留意我们这里include了 jni.h和适才获得的HelloWorld.h文件。因此你要在VC++内里配置好,jni.h在JAVA_HOME/include内里。编译通事后再天生hello.dll文件。
把上面天生的hello.dll文件复制到我们的事变目次,这时辰我们的目次中包罗HelloWorld.java,HelloWorld.class和hello.dll文件。运行java HelloWorld呼吁,则可在节制台看到Hello world|
的输出了。
JNI是一门伟大,风趣且富有挑衅性的技能,我们在后头的几篇文章中将声名如安在java说话和Native说话之间举办交互。
版权声明:本文为博主原创文章,未经博主应承不得转载。
(责任编辑:admin)------分隔线----------------------------