跳转到内容

Java 编程/关键词/native

来自维基教科书,开放的书籍,面向开放的世界

native 是一个 Java 关键字。它标记一个方法,该方法将在其他语言中实现,而不是在 Java 中。该方法声明时没有主体,也不能是 abstract。它与 JNI(Java 本地接口) 协同工作。

语法

[public|protected|private] native method();

以前使用 native 方法来编写性能关键的部分,但随着 Java 的速度越来越快,这种情况现在不那么常见了。目前,在以下情况下需要使用 native 方法:

  • 您需要从 Java 调用用其他语言编写的库。
  • 您需要访问仅从其他语言(通常是 C)可访问的系统或硬件资源。实际上,许多与实际计算机(例如磁盘和网络 I/O)交互的系统功能之所以能够做到这一点,是因为它们调用了本地代码。

要完成编写 native 方法,您需要使用 javah 工具处理您的类,该工具将生成 C 头文件代码。然后,您需要提供头文件代码的实现,生成动态可加载库(在 Linux 下为 .so,在 Windows 下为 .dll)并加载它(在最简单的情况下使用 System.load(library_file_name))。如果只传递了像整数这样的基本类型,代码完成非常简单,但如果需要交换 C 代码中的字符串或对象,就会变得更加复杂。通常情况下,所有内容都可以在 C 层完成,包括创建新对象和回调 Java 中编写的方法。

要调用其他语言(包括 C++)中的代码,您需要编写一个从 C 到该语言的桥接器。这通常非常简单,因为大多数语言都可以从 C 调用。

  • [1] - JNI 编程教程。
  • [2] - JNI 规范。
华夏公益教科书