native 这个关键是代表这个方法是原生态的方法,方法对应的实现不是在此文件实现的,而是其他语言实现的,比如c/c++
java 语言本身不能对操作系统底层进行操作和访问,可以通过JNI来调用其他语言。
JNI可以使java代码使用其他语言代码和调用其他语言。比如他可以调用DLL;
比如在InputStream(抽象类)里面 read()方法(次方法是抽象方法),然后在FileInputStream 继承InputStream,实现read()方法,这个方法没有方法体,用native关键字修饰
这代表他是通过JNI调用底层的东西,
JNI测试类
1.写一个类,里面定义一个用native的方法,
2,用javac Test.java 来编译这个java文件,回生成class文件
3.用javah Test (这边是类名)这边会生成Test.h文件
4,自己写一个vc的动态连接库,
装一个mingw 下载地址 https://sourceforge.net/projects/mingw-w64
在window上面是 gcc -I"C:\Program Files\Java\jdk1.8.0_51\include" -I"C:\Program Files\Java\jdk1.8.0_51\include\win32" -shared -m64 Test2.dll Test2.c
这边-m64 就是生成64的dll,如果装的是32的mingw的话,好像是编译不了64位的dll,会提示 Test2.c:1:0: sorry, unimplemented: 64-bit mode not compiled in