目录

一、概念

二、用法

三、JNI 调用 C 流程图

四、其他


一、概念

native关键字说明其修饰的方法是一个原生态方法,方法对应的实现不是在当前文件,而是在用其他语言(如C和C++)实现的文件中。Java语言本身不能对操作系统底层进行访问和操作,但是可以通过JNI接口调用其他语言来实现对底层的访问。

JNI是Java本机接口(Java Native Interface),是一个本机编程接口,它是Java软件开发工具箱(java Software Development Kit,SDK)的一部分。JNI允许Java代码使用以其他语言编写的代码和代码库。Invocation API(JNI的一部分)可以用来将Java虚拟机(JVM)嵌入到本机应用程序中,从而允许程序员从本机代码内部调用Java代码。

二、用法

1.编写带有native声明的方法的Java类(java文件)
2.使用javac命令编译编写的Java类(class文件)
3.使用javah -jni ****来生成后缀名为.h的头文件(.h的文件)
4.使用其他语言(C、C++)实现本地方法
5.将本地方法编写的文件生成动态链接库(dll文件)

三、JNI 调用 C 流程图

四、其他

1.native是与C++联合开发的时候用的!java自己开发不用

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

3.native 是用做java 和其他语言(如c++)进行协作时用的,也就是native 后的函数的实现不是用java写的 ,java只能调用。

4.Java不是完美的,Java的不足除了体现在运行速度上要比传统的C++慢许多之外,Java无法直接访问到操作系统底层(如系统硬件等),为此Java使用native方法来扩展Java程序的功能。
  可以将native方法比作Java程序同C程序的接口,其实现步骤:
  a、在Java中声明native()方法,然后编译;
  b、用javah产生一个.h文件;
  c、写一个.cpp文件实现native导出方法,其中需要包含第二步产生的.h文件(注意其中又包含了JDK带的jni.h文件);
  d、将第三步的.cpp文件编译成动态链接库文件;
  e、在Java中用System.loadLibrary()方法加载第四步产生的动态链接库文件,这个native()方法就可以在Java中被访问

5.Java不是完美的,Java的不足除了体现在运行速度上要比传统的C++慢许多之外,Java无法直接访问到操作系统底层(如系统硬件等),为此Java使用native方法来扩展Java程序的功能。
  可以将native方法比作Java程序同C程序的接口,其实现步骤:
  a、在Java中声明native()方法,然后编译;
  b、用javah产生一个.h文件;
  c、写一个.cpp文件实现native导出方法,其中需要包含第二步产生的.h文件(注意其中又包含了JDK带的jni.h文件);
  d、将第三步的.cpp文件编译成动态链接库文件;
  e、在Java中用System.loadLibrary()方法加载第四步产生的动态链接库文件,这个native()方法就可以在Java中被访问了。

【Native】——关键字Native相关推荐

  1. Java 高阶 —— native 关键字与 JNI

    C/C++ 通过 jni 调用 java 类及接口 Java 通过 native 调用 C/C++ 函数: 1. JNI Java中JNI的使用详解第一篇:HelloWorld JNI:Java Na ...

  2. 【Java_基础】Java中Native关键字的作用

    本篇博文转载与:Java中Native关键字的作用 转载于:https://www.cnblogs.com/leiblog/p/10529056.html

  3. native关键字(本地方法)、 java调用so动态链接库

    Java native关键字 一. 什么是Native Method    简单地讲,一个Native Method就是一个java调用非java代码的接口.一个Native Method是这样一个j ...

  4. java基础提升篇:Java中Native关键字的作用

    初遇 初次遇见 native是在 java.lang.Object 源码中的一个hashCode方法: public native int hashCode(); 为什么有个native呢?这是我所要 ...

  5. Java中native关键字

    今日在hibernate源代码中遇到了native关键词,甚是陌生,就查了点资料,对native是什么东西有了那么一点了解,并做一小记. native关键字说明其修饰的方法是一个原生态方法,方法对应的 ...

  6. Java的native关键字

    今天研究Java基础类库,Object类的时候,发现了一个关键字:native 咦?这是个什么东东?它认识我,我可不认识它! 嘿嘿,没关系,baidu一下. java native关键字 一. 什么是 ...

  7. java中被遗忘的native关键字

    我是无意间看见JNI( java调用动态链接库dll )这块的东西. 所有记下来:本地声明方法  装载完成dll文件后,将使用的方法用native关键字声明. public native static ...

  8. java native关键字(java本地方法)

    转自: http://blog.csdn.net/youjianbo_han_87/article/details/2586375 native是与C++联合开发的时候用的!java自己开发不用的! ...

  9. java native 关键字

    今天在看Javase中的classLoder类的源码时,发现一直找不到 private native final Class<?> findLoadedClass0(String name ...

  10. java基础-关键字-native

     一. 什么是Native Method     简单地讲,一个Native Method就是一个java调用非java代码的接口.一个Native Method是这样一个java的方法:该方法的实现 ...

最新文章

  1. Clusterware 和 RAC 中的域名解析的配置校验和检查 (文档 ID 1945838.1)
  2. 神经网络测试时间计算机,卷积神经网络的时代到此结束了?
  3. 笔记-中项案例题-2020年下-质量管理
  4. 面试指南|GO高性能编程精华PDF
  5. 和佳股份有没有纳米机器人_新高赛复赛入围项目(49)一种纳米硅质绝热材料及其制备方法...
  6. EasyUI-右键菜单变灰不可用效果
  7. nginx忽略文件名大小写
  8. 手机MODEM 开发(33)---SIM卡基础知识
  9. BCG、MFC如何支持《支持应用程序设置的回复、保存等》的?他是怎么实现的呢?
  10. python小程序源代码_【程序源代码】Spring Boot 考试小程序
  11. 水库大坝安全监测系统/水利平台高保真原型/大坝安全监测分析预警系统 /工程监测/工程档案/环境量监测/位移监测/渗压监测/工程管理/报警管理/横河向位移监测/历史数据/工程档案/顺河向位移监测
  12. ArcGIS小图斑根据相邻地类属性融合。
  13. 学会充分利用你的零碎时间
  14. Linux电镜分析,环境扫描电子显微镜特点
  15. httpwatch使用,浏览器内HTTP嗅探器
  16. python geopy 北斗导航_【Python】使用geopy由经纬度找地理信息
  17. 1.1 区块链的前世今生
  18. LeetCode 417. 太平洋大西洋水流问题【dfs】
  19. 刘润对话卫哲:阿里巴巴唯一生产的产品,就是干部
  20. 为什么湾区程序员买不起房?

热门文章

  1. 电感为什么会啸叫?漫画+动图,看完就明白了!
  2. Centos网络配置方法详解(自动获取、手动设置)
  3. USB驱动程序之USB设备驱动程序1简单编写
  4. 开源版ai智能写作软件源码 一键写作生成器 含完整搭建教程
  5. ZigBee无线传感器网络知识点总结
  6. WPS之excel:对表格进行各种快捷操作
  7. shader 反射 水面_unity水面波浪光照反射折射物理渲染着色器Lux Water 1.01
  8. 使用ShaderGraph 实现水面效果
  9. Vue中v-if 和v-show的区别
  10. 纯css实现各种方向小箭头