java 中的native 关键字

native关键字在之前的博客中提起过,在看java源码时多次看到native的身影,更加好奇特在此做一个简单的总结。

1. native用来修饰method,表明java的作用范围达不到了,回去调用底层c语言的库。用native修饰的方法,在虚拟机里都有一个与这个java方法同名的函数帮助java做想做的事情。

2.  native关键字说明这个方法是原生函数,这个方法是用c/c++语言实现的,并且被编译成DLL,由java去调用。JDK的源码中并不包含,对于不同的平台它们是不同的。这也是java的底层机制,实际上java就是在不同的平台上调用不同的native方法实现对操作系统的访问的。

3. native的意思就是通知操作系统, 这个函数你必须给我实现,因为我要使用。 所以native关键字的函数都是操作系统实的, java只能调用。

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

5. native可以与所有其他的java标识符连用,但是abstract除外。因为native暗示这些方法是有实现体的,只不过这些实现体是非java的,但abstract却指明这些方法没有方法体。一个native method 方法可以返回任何java类型,包括非基本类型。而且同样可以进行异常控制。

带有native关键字的方法会进入本地方法栈,调用本地方法接口JNI,它在内存区域中专门开辟了一块标记区域:Native Method Stack,用来登记native方法,在最终执行的时候通过JNI去加载本地方法库中的方法。 

如有不足,欢迎指正留言,望不吝赐教!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值