native关键字

来源:互联网 发布:配音秀软件 编辑:程序博客网 时间:2024/05/01 12:12

一直没有搞懂native的用法,今天看了好几位博主的文章,终于明白了。

参考:http://blog.csdn.net/xw13106209/article/details/6989415             

概念:

native是与C++联合开发的时候用的!使用native关键字说明这个方法是原生函数,也就是这个方法是用C/C++语言实现的,并且被编译成了DLL,由java去调用。 这些函数的实现体在DLL中,JDK的源代码中并不包含,你应该是看不到的。对于不同的平台它们也是不同的。这也是java的底层机制,实际上java就是在不同的平台上调用不同的native方法实现对操作系统的访问的。总而言之:

  1. native 是用做java 和其他语言(如c++)进行协作时使用的,也就是native 后的函数的实现不是用java写的。
  2.  既然都不是java,那就别管它的源代码了,我们只需要知道这个方法已经被实现即可。
  3. native的意思就是通知操作系统, 这个函数你必须给我实现,因为我要使用。 所以native关键字的函数都是操作系统实现的, java只能调用。
  4. java是跨平台的语言,既然是跨了平台,所付出的代价就是牺牲一些对底层的控制,而java要实现对底层的控制,就需要一些其他语言的帮助,这个就是native的作用了
例子:项目路径(d:\2014\Test)

1、创建HelloWorld.java  在包com.interview下

  1. public class HelloWorld {  
  2.     public native void displayHelloWorld();// java native方法申明  
  3.   
  4.     static {  
  5.         System.loadLibrary("HelloWorldImpl");// 装入动态链接库,"HelloWorldImpl"是要装入的动态链接库名称。  
  6.     }  
  7.   
  8.     public static void main(String[] args) {          
  9.         new HelloWorld.displayHelloWorld();  
  10.     }  
  11. }  

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文件。下次再调


原创粉丝点击