首页  >  文章  >  Java  >  Java 中的 Native 关键字

Java 中的 Native 关键字

王林
王林原创
2024-08-30 15:21:451021浏览

native 关键字充当 JAVA 语言与用除 JAVA 之外的其他语言编写的代码块或库之间的链接,这可能取决于您所操作的机器。如果将 native 关键字应用于方法,则意味着该方法将通过 JNI(JAVA 本机接口)使用其他语言(如 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 代码。

代码:package com.slackerOne;

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 中的 Native 关键字

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

输出:

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

Java 中的 Native 关键字

Java 中 Native 关键字的优点

以下是一些优点。

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

规则

原生关键字的规则如下。

  1. native 关键字要在方法名称之前使用。
  2. 原生方法声明没有主体,应该以分号结尾,因为这些方法不是在 JAVA 中定义的,而是存在于 C/C++ 语言中。
  3. 原生方法不能声明为抽象方法。
  4. 由于无法保证之前的旧代码是否按照 IEEE 754 标准编写(The IEEE Standard for Floating-Point Arithmetic 是电气电子工程师协会于 1985 年制定的浮点运算技术标准) )所以,我们不能将这些本地方法声明为 strictftp。
  5. JAVA 设计了 ​​Java Native Interface (JNI) 规范来定义实现本机方法的规则和声明,例如 Java 和本机代码之间的数据类型转换。

结论

native 关键字是弥合母语和 JAVA 之间差距的桥梁。如果我们的软件与硬件的交互在使用预先存在的代码方面更加有效,那么这可以用作关键链接。与尽可能避免从头开始设计新的应用程序代码相比,它减少了实现工作。

以上是Java 中的 Native 关键字的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn