iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Java中的Native关键字讲解
  • 899
分享到

Java中的Native关键字讲解

2024-04-02 19:04:59 899人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

目录一、Java中Native关键字的语法二、Native关键字是如何工作的?三、代码示例四、Java中Native关键字的优势五、规则六、总结前言: native关键字充当JAVA

前言:

native关键字充当JAVA语言与除JAVA之外的其他语言编写的代码块或库之间的链接,这可能取决于您操作的机器。如果将native关键字应用于一个方法,那么这意味着该方法将通过JNI(JAVA native interface)使用其他语言(如C或c++)编写的本机代码来实现。

一、Java中Native关键字的语法

本机代码的语法与普通函数定义相同,在函数开头添加了“native”关键字。

例如:


Public class testing
{public native String testMethod (String parameter);}


在这里,public是一个访问修饰符。它应该是公共的,以便其他文件可以使用它。字符串是函数的返回数据类型。它可以是整数、字符或布尔值,具体取决于关键字。传递给此函数的参数也是数据类型字符串。一切都应该保持在社会底层。

在函数声明之后,我们通过创建对象和加载库来调用这个函数。


public static void main(String[] args)
{
System.loadLibrary("testing");
testing testingnew = new testing();
String  output   = testingnew.stringMethod("NATIVE");
}

应首先加载上面定义的库,并创建对象。在这个对象的帮助下,本机函数被调用。

二、Native关键字是如何工作的?

应该有两个文件。一个包含JAVA代码,而另一个应该包含C/C++遗留代码。Java代码将用于调用遗留代码。此遗留代码将与硬件交互并返回预期输出。

当遗留代码与硬件交互时,它将不会遵循JAVA制定的准则。此代码将执行所需的处理,以获得输出并将结果传递给JNI。Java本机接口随后将检入其目录,其中包含与本机代码相关的所有规则(这在SDK中位于名为javah.exe的文件下)。JNI是作为Java工具包的一部分设计的。在此处理之后,JAVA将以JAVA语言本身发布输出。当我们创建JAVA程序时,我们必须确保JAVA文件和遗留文件之间有一个变量/数据流链接,以便两者之间有一个平滑的数据流。

下面给出了解释如何使用本机关键字的步骤:

  • 1. 编写包含本机方法、已加载的共享库的JAVA代码,并使用“filename.JAVA”保存它。
  • 2. 编译JAVA代码并将代码转换为字节码。
  • 3. 创建包含应调用的本机函数签名的C/C++头文件。
  • 4. 编写C/C++代码有一个本机方法的实现。
  • 5. 运行JAVA可执行文件以查看结果。

三、代码示例

我们在Eclipse中编写代码并运行代码来创建一个库,然后使用该库来实现C代码。

代码:


public class JPP {
public static native void pAccess();
public static native int pRead();
public static native void pWrite(int port, int output);
static{
System.loadLibrary("JPPlibs");
}
public void jAccess(){
JPP.pAccess();
}
public int jRead(){
return JPP.pRead();
}
public void jWrite(int port, int output){
JPP.pWrite(port, output);
}
}


在将此代码保存到java项目的新“类”中之后,我们必须设置一个运行环境来生成头文件。

当我们运行这个程序时,应该生成一个库。

输出:

这里我们从java代码创建了头文件,它将本地代码和java语言链接起来。

四、Java中Native关键字的优势

下面给出了一些优点:

  • 它为JAVA提供了一个额外的优势,可以与用其他语言编写的代码交互,并减少用JAVA编写相同代码的工作量,从而减少代码冗余。
  • 它提高了总体代码性能。由于代码是用其他语言编写的,因此使用机器语言时可能比使用JAVA更快。然后我们可以使用JAVA程序调用此代码。
  • 使用这种方法,我们可以直接进行系统调用。降低外部干扰的概率,提高代码执行速度。
  • 您可以使用用JAVA编写的任意驱动代码动态调用预加载的库(用JAVA以外的任何语言编写),仍然可以用JAVA获得响应。
  • 它使JAVA能够访问硬件资源,而这些硬件资源只能由其他语言使用。
  • 如果您已经为应用程序构建了一个依赖于平台的代码,并且其功能不受JAVA支持,那么我们可以使用本机代码,并通过native关键字将本机代码链接到JAVA。

五、规则

native关键字的规则如下所示:

native关键字将在方法名称之前使用。

  • native方法声明没有正文,应该以分号结尾,因为这些方法不是在JAVA中定义的,而是在C/C++语言中出现的。
  • native方法不能声明为抽象方法。
  • 由于无法保证以前的旧代码是否按照IEEE 754标准编写(IEEE浮点算法标准是1985年由电气和电子工程师协会制定的浮点算法技术标准),因此我们不能将这些原生方法声明为严格FTP。
  • JAVA设计JAVA本机native接口(JNI)规范来定义实现本机方法的规则和声明,如JAVA和native代码之间的数据类型转换。

六、总结

native关键字是架起本机语言和JAVA之间鸿沟的桥梁。如果我们的软件与硬件的交互在使用预先存在的代码时更有效,那么这可以作为一个关键环节。与从头开始设计新的应用程序代码相比,只要可以避免,它就可以使实现工作更少。

--结束END--

本文标题: Java中的Native关键字讲解

本文链接: https://www.lsjlt.com/news/160972.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Java中的Native关键字讲解
    目录一、Java中Native关键字的语法二、Native关键字是如何工作的?三、代码示例四、Java中Native关键字的优势五、规则六、总结前言: native关键字充当JAVA...
    99+
    2024-04-02
  • Java关键字之native详解
    目录1、JNI:Java Native Interface2、用C语言编写程序本地方法一、编写带有native声明的方法的java类二、使用javac命令编译所编写的java类,生成...
    99+
    2024-04-02
  • Java中Native关键字怎么用
    这篇文章将为大家详细讲解有关Java中Native关键字怎么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一、Java中Native关键字的语法本机代码的语法与普通函数定义相同,在函数开头添加了“nat...
    99+
    2023-06-22
  • JAVA中native方法与synchronized 关键字
    native , synchronized [@more@]JAVA中native方法 @与羊共舞的狼 Java不是完美的,Java的不足除了体现在运行速度上要比传统的C++慢许多之外,Java无法直接访问到操作系统底层(如系统硬件...
    99+
    2023-06-03
  • Java中instanceof关键字实例讲解
    目录1.向上转型 向下转型2.强制类型转换的应用3.instanceof 关键字使用4.测试举例5.强制类型转换成功总结1.向上转型 向下转型 2.强制类型转换的应用 应用多态性时...
    99+
    2024-04-02
  • Java关键字native怎么用
    这篇文章主要介绍“Java关键字native怎么用”,在日常操作中,相信很多人在Java关键字native怎么用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Java关键字native怎么用”的疑惑有所帮助!...
    99+
    2023-06-26
  • 讲解Python 中的 with 关键字
    我们中的许多人在 Python 代码中一遍又一遍地看到这个代码片段: with open('Hi.text', 'w') as f: f.write("Hello, ther...
    99+
    2024-04-02
  • Java深入讲解instanceof关键字的使用
    目录instanceof关键字的使用1. 语法格式2. 类型转换 (Casting)2.1 基本数据类型的Casting2.2 对象类型转换2.3 代码演示3. 错误举例instan...
    99+
    2024-04-02
  • C++explicit关键字讲解
    目录1 隐式转换2 显示转换前言: C++编码时,可以通过构造函数将相应的数据类型转换成为C++类的对象,从某种程度来说给编码带来了方便,但并不是每次都正确,为了避免这种情况,C++...
    99+
    2024-04-02
  • Java volatile关键字特性讲解下篇
    目录一、概述二、特性详解一、概述 关键字volatile虽然增加了实例变量在多个线程之间的可见性,但它却不具备同步性,那么也就不具备原子性。 二、特性详解 原子性是指一个线程的操作是...
    99+
    2022-12-12
    Java volatile Java volatile关键字
  • Java基础之static关键字的使用讲解
    static关键字 在Java中,static是静态修饰关键字。用于修饰类的成员方法、类的成员变量,另外可以编写static代码块来优化程序性能;被static关键字修饰的方法或者变...
    99+
    2024-04-02
  • vue中的搜索关键字实例讲解
    目录vue的搜索关键字1、定义一个搜索框2、循环遍历,之前3、在data中,我们写入如下数据4、在methods中5、我们还可以这样写搜索功能及搜索结果关键字高亮首先实现搜索功能通过...
    99+
    2024-04-02
  • 详解Java中的final关键字
    目录概述使用方式修饰类修饰方法修饰变量概述 子类可以在父类的基础上改写父类内容,比如,方法重写。那么我们能不能随意的继承API中提供的类,改写其内容呢?显然这是不合适的。为了避免这种...
    99+
    2022-11-13
    Java final关键字 Java final
  • Java中的public关键字详解
    第1部分:什么是public关键字? 在Java中,public是一个访问修饰符(Access Modifier),用于控制类、方法、字段等元素的可见性。使用public关键字修饰的元素可以在任何地方被访问,即具有最大的访问权限。 第2部分...
    99+
    2023-09-29
    java 开发语言
  • 解析Java中的static关键字
    目录一.static关键字使用场景1.1、静态变量1.2、静态方法1.3、静态代码块1.4、静态内部类1.5、静态导入二.static变量和普通成员变量区别三.类的构造器到底是不是s...
    99+
    2024-04-02
  • C语言中volatile关键字的深入讲解
    1. 什么是volatile关键字? volatile用于声明一个变量,告诉编译器该变量值容易发生改变,在编译、读取、存储该变量的时候都不要做任何优化,因此编译后的程序每次需要存储...
    99+
    2024-04-02
  • Java中super关键字详解
    目录super有什么用?super什么时候不可以省略呢?super在内存图中是如何存在的呢?super使用时的注意事项总结super有什么用? (1)当子类中构造方法第一行没有sup...
    99+
    2024-04-02
  • Java超详细分析讲解final关键字的用法
    目录基本介绍final细节01final细节02基本介绍 final 可以修饰类、属性、方法和局部变量. 在某些情况下,程序员可能有以下需求,就会使用到final: Base Sub...
    99+
    2024-04-02
  • Java类中this关键字与static关键字的用法解析
    目录前言1:修饰属性,表示调用类中的成员变量。2:this修饰方法3:this表示当前对象的引用前言 今天给大家总结介绍一下Java类中this关键字和static关键字的用法。 t...
    99+
    2024-04-02
  • java中的volatile关键字
    目录1.volatile实现可见性的原理是什么?2.演示volatile的可见性1.volatile实现可见性的原理是什么? 有volatile变量修饰的共享变量进行写操作的时候汇编...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作