java 硬件交互_Java关键字之native
一:什么是NATIVE Method
简单的讲,一个NATIVE Method就是调用了java调用非java代码实现的接口。
native method 方法实现:该方法的实现是由非java语言实现的,比如C。这个特征并非java特有,很多其他编程语言都有这一机制。比如C++中,你可以用extern "C"告知C++编译器去调用C的一个函数。
在定义一个native method时,并不需要实现体,因为他的实现体是由非java语言在外面实现的。
JDK中Object类中有很多方法都是,例如线程之间通信的notify/wait/notifyAll方法:
notify和notifyAll唤醒线程
二:NATIVE Method与正常java方法有区别吗
1.标识符native可以与所有其他java标识符一起用,但是abstract例外,因为abstract是没有实现体的,而native显然是有实现体的,虽然它的实现体是由非java语言编写的。native与java其他标识符连用的时候对非NATIVE METHOD没有区别。
2.一个native method 方法的返回结果可以是任何类型,包括非基本类型,同样也可以有异常处理机制。这些方法的实现体可以自制一个异常抛出,与java中异常处理没有区别。
3.一个类中有native method,当这个类被继承之后,子类也可以调用和用java重写这个方法.当然如果这个方法有标识符final则不可被继承,这个也与正常java方法一样。
三:NATIVE Method有啥用?
最重要一点就是,使用本地方法能够提高程序运行效率。
1.与java环境外交互:
有时java应用需要与java外的环境交互。这是本地方法存在的主要原因。当java与一些底层系统如操作系统或者某些硬件交互信息的时候。本地方法就是这样的一个交互机制,让我们无需了解java应用外的繁琐细节。
2.与操作系统交互:
JVM支持着java语言本身和运行时库,它是java语言运行赖以生存的平台,它由一个解释器(解释字节码)和一些连接到本地代码的库组成。但毕竟不是一个完整的系统,需要依赖于底层系统的支持。这些底层系统通常就是强大的操作系统。通过使用本地方法,我们得以用java实现了jre与底层系统的交互,甚至jre的部分一些就是用C语言写的。还有我们如果要用到一些java没有封装的操作系统特性时,也是需要用本地方法。
3.Sun's Java:
Sun's的解释器使用C实现的,
java 硬件交互_Java关键字之native相关推荐
- java和硬件交互_Java内存模型
Java内存模型 我们常说的JVM内存模式指的是JVM的内存分区:而Java内存模式是一种虚拟机规范,真实并不存在 Java虚拟机规范中定义了Java内存模型(Java Memory Model,JM ...
- java volatile 用法_java关键字volatile用法详解
volatile关键字想必大家都不陌生,在java 5之前有着挺大的争议,在java 5之后才逐渐被大家接受,同时作为java的关键字之一,其作用自然是不可小觑的,要知道它是java.util.con ...
- Java jni 底层_Java中的native是如何实现的(JNI)
什么是JNI JNI是Java Native Interface的缩写,Java本地接口(JNI)提供了将Java与C/C++.汇编等本地代码集成的方案,该规范使得在 Java 虚拟机内运行的 Jav ...
- java对象交互_Java 2 对象交互
2.1 对象交互 2.1.1 时钟的设计: 用一个类来表示时钟和分钟. 对象Display: (属性)成员变量value limit (操作)成员函数increase getValue package ...
- java 硬件中断_Java异步事件:轮询与中断
CPU几乎把所有的时间都花费在从内存获取指令并运行它们的过程中.然而,CPU和主存仅仅只是计算机硬件系统中众多组件的其中两个. 一个完整的系统还包含其他的设备,比如: 硬盘或者固态硬盘,用来存储程序和 ...
- java 线程交互_java 线程交互之wait/notify
众所周知java支持多线程,有多线程就必然会存在多线程的交互,交互方式有多种,比如通过共享数据,或者通过提供的锁信号量等等,这里通过用wait以及notify实现线程交互. 要用好线程的wait和no ...
- java instanceof 动态_Java关键字instanceof用法及实现策略
instanceof 严格来说是Java中的一个双目运算符,用来测试一个对象是否为一个类的实例,用法为: boolean result = obj instanceof Class 其中 obj 为一 ...
- java foreach多线程_java关键字(一)
原子操作 (1)除long和double之外的基本类型的赋值操作过程 (2)引用reference的赋值操作过程 (3)java.concurrent.Atomic.*包中所有类的一切操作 注释:lo ...
- Java关键字(二)——native
本篇博客我们将介绍Java中的一个关键字--native. native 关键字在 JDK 源码中很多类中都有,在 Object.java类中,其 getClass() 方法.hashCode()方法 ...
最新文章
- SQL--(MyBatis 实战)
- CloudStack管理员文档 - 服务方案
- 【计算机网络】物理层 : 数据通信 ( 数据通信模型 | 信源 | 信宿 | 信道 | 通信方式 | 单工 | 半双工 | 全双工 | 数据传输方式 | 串行 | 并行 )
- linux网络编程常用函数详解与实例(socket--bind--listen--accept)
- JSP简单练习-JSP动作指令
- 史上最全Java多线程面试60题,含答案大赠送!
- input全选和取消全选
- 信息学奥赛一本通 1162:字符串逆序
- 别人家的公司!顺丰将向员工提供3亿贷款,无利息无抵押无担保
- Dumpsys Input Diagnostics
- 边看边练之Django(二)---- Django的URL设置
- xcode证书签名快速完美解决
- 第六章-网络可靠性设计
- Python学习week5
- 【Unity入门】24.碰撞检测
- C语言之大端模式与小端模式
- 2019年暑假 纪中培训总结
- 2.SpringBoot整合Mybatis(一对一)
- 利用iPS细胞筛选新药研究进展
- 中职计算机基础应用知识,总发中职《计算机应用基础:基础模块》第一单元 计算机基础知识.pptx...
热门文章
- android 36 线程通信
- C#代码生成工具:文本模板初体验 使用T4批量修改实体框架(Entity Framework)的类名...
- 转变矛头,号称攻破BCH网络的Bitpico或与BCE决裂
- nChain再获数字货币安全专利,助力BCH更加安全可靠
- 如何在centos7上网卡名称回归传统
- easyui英文提示变中文
- java线程间的通讯
- AngularJS 使用ngOption实现下拉列表
- 黄聪:Wordpress 模版技术手册 - WordPress Theme Technical manuals
- Linux(ubuntu)下安装JDK