目录
Java 中 Native 关键字的语法
Native 关键字如何工作?
示例
Java 中 Native 关键字的优点
规则
结论
首页 Java java教程 Java 中的 Native 关键字

Java 中的 Native 关键字

Aug 30, 2024 pm 03:21 PM
java

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

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

热门话题

Java教程
1677
14
CakePHP 教程
1431
52
Laravel 教程
1334
25
PHP教程
1280
29
C# 教程
1257
24
作曲家:通过AI的帮助开发PHP 作曲家:通过AI的帮助开发PHP Apr 29, 2025 am 12:27 AM

AI可以帮助优化Composer的使用,具体方法包括:1.依赖管理优化:AI分析依赖关系,建议最佳版本组合,减少冲突。2.自动化代码生成:AI生成符合最佳实践的composer.json文件。3.代码质量提升:AI检测潜在问题,提供优化建议,提高代码质量。这些方法通过机器学习和自然语言处理技术实现,帮助开发者提高效率和代码质量。

如何使用MySQL的函数进行数据处理和计算 如何使用MySQL的函数进行数据处理和计算 Apr 29, 2025 pm 04:21 PM

MySQL函数可用于数据处理和计算。1.基本用法包括字符串处理、日期计算和数学运算。2.高级用法涉及结合多个函数实现复杂操作。3.性能优化需避免在WHERE子句中使用函数,并使用GROUPBY和临时表。

H5:HTML5的关键改进 H5:HTML5的关键改进 Apr 28, 2025 am 12:26 AM

HTML5带来了五个关键改进:1.语义化标签提升了代码清晰度和SEO效果;2.多媒体支持简化了视频和音频嵌入;3.表单增强简化了验证;4.离线与本地存储提高了用户体验;5.画布与图形功能增强了网页的可视化效果。

怎样在C  中使用type traits? 怎样在C 中使用type traits? Apr 28, 2025 pm 08:18 PM

typetraits在C 中用于编译时类型检查和操作,提升代码的灵活性和类型安全性。1)通过std::is_integral和std::is_floating_point等进行类型判断,实现高效的类型检查和输出。2)使用std::is_trivially_copyable优化vector拷贝,根据类型选择不同的拷贝策略。3)注意编译时决策、类型安全、性能优化和代码复杂性,合理使用typetraits可以大大提升代码质量。

MySQL的字符集和排序规则如何配置 MySQL的字符集和排序规则如何配置 Apr 29, 2025 pm 04:06 PM

在MySQL中配置字符集和排序规则的方法包括:1.设置服务器级别的字符集和排序规则:SETNAMES'utf8';SETCHARACTERSETutf8;SETCOLLATION_CONNECTION='utf8_general_ci';2.创建使用特定字符集和排序规则的数据库:CREATEDATABASEexample_dbCHARACTERSETutf8COLLATEutf8_general_ci;3.创建表时指定字符集和排序规则:CREATETABLEexample_table(idINT

如何在MySQL中重命名数据库 如何在MySQL中重命名数据库 Apr 29, 2025 pm 04:00 PM

MySQL中重命名数据库需要通过间接方法实现。步骤如下:1.创建新数据库;2.使用mysqldump导出旧数据库;3.将数据导入新数据库;4.删除旧数据库。

如何在C  中实现单例模式? 如何在C 中实现单例模式? Apr 28, 2025 pm 10:03 PM

在C 中实现单例模式可以通过静态成员变量和静态成员函数来确保类只有一个实例。具体步骤包括:1.使用私有构造函数和删除拷贝构造函数及赋值操作符,防止外部直接实例化。2.通过静态方法getInstance提供全局访问点,确保只创建一个实例。3.为了线程安全,可以使用双重检查锁定模式。4.使用智能指针如std::shared_ptr来避免内存泄漏。5.对于高性能需求,可以使用静态局部变量实现。需要注意的是,单例模式可能导致全局状态的滥用,建议谨慎使用并考虑替代方案。

为什么Java代码可以在不同的操作系统上运行,而无需修改? 为什么Java代码可以在不同的操作系统上运行,而无需修改? Apr 28, 2025 am 12:14 AM

Java代码可以在不同操作系统上无需修改即可运行,这是因为Java的“一次编写,到处运行”哲学,由Java虚拟机(JVM)实现。JVM作为编译后的Java字节码与操作系统之间的中介,将字节码翻译成特定机器指令,确保程序在任何安装了JVM的平台上都能独立运行。

See all articles