侧边栏壁纸
  • 累计撰写 781 篇文章
  • 累计创建 1 个标签
  • 累计收到 1 条评论
标签搜索

native

Dettan
2021-04-10 / 0 评论 / 0 点赞 / 92 阅读 / 1,057 字
温馨提示:
本文最后更新于 2022-04-30,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。
两种方式,JNA方便但是速度比JNI慢20倍. JNI是5000次调用15ms. 但是要手动生成c的头文件.
本地语言,虚拟机适配不同平台的非java语言

private native boolean delete0(File f);

上面这一句代码是java 的 jre里的一句代码,是一个接口的实现,实现的功能是删除文件.但是这里竟然没有代码,直接分号了.看到native不认识,搜了一下,现在认识了.
简单说就是调用c语言,这个方法是c语言写的,这里是调用.
native是与C++联合开发的时候用的!java自己开发不用的!
使用native关键字说明这个方法是原生函数,也就是这个方法是用C/C++语言实现的,并且被编译成了DLL,由java去调用。这些函数的实现体在DLL中,JDK的源代码中并不包含,你应该是看不到的。对于不同的平台它们也是不同的。这也是java的底层机制,实际上java就是在不同的平台上调用不同的native方法实现对操作系统的访问的。
1。native 是用做java 和其他语言(如c++)进行协作时用的也就是native 后的函数的实现不是用java写的
java是跨平台的语言,既然是跨了平台,所付出的代价就是牺牲一些对底层的控制,而java要实现对底层的控制,就需要一些其他语言的帮助,这个就是native的作用了
Java无法直接访问到操作系统底层(如系统硬件等),为此Java使用native方法来扩展Java程序的功能。 
可以将native方法比作Java程序同C程序的接口
实现步骤: 
1、在Java中声明native()方法,然后编译; 
2、用javah产生一个.h文件; 
3、写一个.cpp文件实现native导出方法,其中需要包含第二步产生的.h文件(注意其中又包含了JDK带的jni.h文件); 
4、将第三步的.cpp文件编译成动态链接库文件; 
5、在Java中用System.loadLibrary()方法加载第四步产生的动态链接库文件,这个native()方法就可以在Java中被访问了。

JAVA本地方法适用的情况 
1.为了使用底层的主机平台的某个特性,而这个特性不能通过JAVA API访问
2.为了访问一个老的系统或者使用一个已有的库,而这个系统或这个库不是用JAVA编写的
3.为了加快程序的性能,而将一段时间敏感的代码作为本地方法实现。
来源: https://www.cnblogs.com/KingIceMou/p/7239668.html
0

评论区