native关键字
一直没有搞懂native的用法,今天看了好几位博主的文章,终于明白了。
参考:http://blog.****.net/xw13106209/article/details/6989415
概念:
native是与C++联合开发的时候用的!使用native关键字说明这个方法是原生函数,也就是这个方法是用C/C++语言实现的,并且被编译成了DLL,由java去调用。
这些函数的实现体在DLL中,JDK的源代码中并不包含,你应该是看不到的。对于不同的平台它们也是不同的。这也是java的底层机制,实际上java就是在不同的平台上调用不同的native方法实现对操作系统的访问的。总而言之:
- native 是用做java 和其他语言(如c++)进行协作时使用的,也就是native 后的函数的实现不是用java写的。
- 既然都不是java,那就别管它的源代码了,我们只需要知道这个方法已经被实现即可。
- native的意思就是通知操作系统, 这个函数你必须给我实现,因为我要使用。 所以native关键字的函数都是操作系统实现的, java只能调用。
- java是跨平台的语言,既然是跨了平台,所付出的代价就是牺牲一些对底层的控制,而java要实现对底层的控制,就需要一些其他语言的帮助,这个就是native的作用了
1、创建HelloWorld.java 在包com.interview下
- public class HelloWorld {
- public native void displayHelloWorld();// java native方法申明
- static {
- System.loadLibrary("HelloWorldImpl");// 装入动态链接库,"HelloWorldImpl"是要装入的动态链接库名称。
- }
- public static void main(String[] args) {
- new HelloWorld.displayHelloWorld();
- }
- }
2、生成class文件,使用javac命令
javac d:\2014\Test\src\com\interview\HelloWorld.java
3、生成.h文件,使用javah命令
javah -classpath d:\2014\Test\src -d d:\2014\Test\src -jni com.interview.HelloWorld
4、编写HelloWorldImpl.cpp
5、使用Vs2010命令行工具 生成dll文件
这步一直报错,提示找不到jni.h文件。下次再调