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 调用。