前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >JAVA native关键字

JAVA native关键字

作者头像
平凡的学生族
发布2019-05-25 09:36:05
3960
发布2019-05-25 09:36:05
举报
文章被收录于专栏:后端技术

reference https://stackoverflow.com/questions/6101311/what-is-the-native-keyword-in-java-for

It marks a method, that it will be implemented in other languages, not in Java. It works together with JNI (Java Native Interface).

Native methods were used in the past to write performance critical sections but with Java getting faster this is now less common. Native methods are currently needed when

  • You need to call a library from Java that is written in other language.
  • You need to access system or hardware resources that are only reachable from the other language (typically C). Actually, many system functions that interact with real computer (disk and network IO, for instance) can only do this because they call native code. See Also Java Native Interface Specification

http://blog.csdn.net/jiakw_1981/article/details/3073613

native method是什么

一个Native Method就是一个java调用非java代码的接口。 在定义一个native method时,并不提供实现体(有些像定义一个java interface),因为其实现体是由非java语言在外面实现的。下面给了一个示例:

代码语言:javascript
复制
package java.lang; 
public class Object { 
    ......
    public final native Class<?> getClass(); 
    public native int hashCode(); 
    protected native Object clone() throws CloneNotSupportedException; 
    public final native void notify(); 
    public final native void notifyAll(); 
    public final native void wait(long timeout) throws InterruptedException; 
    ......
} 

为什么要使用Native Method

概要

java使用起来非常方便,然而有些层次的任务用java实现起来不容易,比如必须借助操作系统的接口,或者我们对程序的效率很在意时,问题就来了。

与java环境外交互

有时java应用需要与java外面的环境交互。这是本地方法存在的主要原因,你可以想想java需要与一些底层系统如操作系统或某些硬件交换信息时的情况。 本地方法正是这样一种交流机制:它为我们提供了一个非常简洁的接口,而且我们无需去了解java应用之外的繁琐的细节。

与操作系统交互

JVM支持着java语言本身和运行时库,它是java程序赖以生存的平台,它由一个解释器(解释字节码)和一些连接到本地代码的库组成。然而不管怎样,它毕竟不是一个完整的系统,它经常依赖于一些底层(underneath在下面的)系统的支持。 这些底层系统常常是强大的操作系统。通过使用本地方法,我们得以用java实现了jre的与底层系统的交互,甚至JVM的一些部分就是用C写的,还有,如果我们要使用一些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中被访问了。
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017.11.26 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • native method是什么
  • 为什么要使用Native Method
    • 概要
      • 与java环境外交互
        • 与操作系统交互
          • 实现步骤
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档