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去加载本地方法库中的方法。 

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

发布了91 篇原创文章 · 获赞 1 · 访问量 3198

猜你喜欢

转载自blog.csdn.net/duan196_118/article/details/104220601