native

native关键字用法


一:native是与C++联合开发的时候用的


使用native关键字说明这个方法是原生函数,也就是这个方法是用C/C++语言实现的,由java去调用。 这些函数的实现体在DLL中,JDK的源代码中并不包含,在源代码里面看不到。对于不同的平台它们也是不同的。这也是java的底层机制,实际上java就是在不同的平台上调用不同的native方法实现对操作系统的访问的。

1。native 是用做java 和其他语言(如c++)进行协作时用的 也就是native 后的函数的实现不是用java写的

2 native关键字的函数都是操作系统实现的, java只能调用。

3.java是跨平台的语言,既然是跨了平台,所付出的代价就是牺牲一些对底层的控制,而java要实现对底层的控制,就需要一些其他语言的帮助,这个就是native的作用了

二:native的具体用法

1.编写带有native声明的方法的Java类(java文件)
2.使用javac命令编译编写的Java类(class文件)
3.使用javah -jni ****来生成后缀名为.h的头文件(.h的文件)
4.使用其他语言(C、C++)实现本地方法
5.将本地方法编写的文件生成动态链接库(dll文件)

三 :代码实现

1.java文件

2.javac 命令编译

3.生成.h文件 (注意 javah HelloWorld 后边不跟.class)

javah -jni HelloWorld

文件内容

/* 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:    hello
	 * Signature: (Ljava/lang/String;)V
	 */
	JNIEXPORT void JNICALL Java_HelloWorld_hello
	  (JNIEnv *, jobject, jstring);

	#ifdef __cplusplus
	}
	#endif
	#endif

4.实现本地方法

#include <jni.h>
	#include "HelloWorld.h"
	#include <stdio.h>
	JNIEXPORT void JNICALL Java_HelloWorld_hello(JNIEnv *env,jobject obj, jstring name){
		
		const char *str; 
		str = (*env)->GetStringUTFChars(env, name, NULL); 
		if (str == NULL) { 
			return; 
		} 
		
		printf("Hello World! %s \n", str );
		return;
	}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值