native Keyword in Java

2025年4月14日 | 阅读 3 分钟

native 关键字 用于指示一个方法是用另一种语言实现的,通常是 C 或 C++。这些方法通常用于与硬件交互、操作系统级功能或提高特定任务的性能。请注意,native 关键字只能应用于方法

Java 提供了一种称为Java Native Interface (JNI) 的机制,它允许在 Java Virtual Machine (JVM) 上运行的 Java 代码与用其他语言编写的应用程序和库进行交互。

从 JVM 的角度来看,有两种类型的代码:Javanative。Java Native Interface (JNI) 在两者之间建立了明确定义的、平台无关的接口。

native 关键字的用途

它用于使 Java 应用程序能够调用用其他编程语言编写的函数。这对于性能关键型应用程序或与现有本地应用程序和库集成非常有用。

语法

  • returnType: native 方法的返回类型。
  • methodName: native 方法的名称。
  • parameters: 方法接受的参数。

native 关键字的目标

以下是 native 关键字的主要目标。

  • 其主要目标是使 Java 程序能够与无法在 Java 中直接访问或实现的低级系统资源或库进行交互
  • 执行需要直接与操作系统交互的任务。例如,访问硬件、系统调用或其他本地 API。
  • 它提高了系统性能,因为关键代码段可以用低级语言实现
  • 它提供了一种重用现有的非 Java 代码或库而无需在 Java 中重写的方法。
  • 它允许 Java集成外部库或功能,特别是当库或功能不是用 Java 实现时。
  • 它允许 Java调用 Java 中的动态加载库,其中包含任意汇编代码

native 关键字的示例

示例

Main.c

输出

 
36   

请注意,程序只有在我们用另一种低级语言实现其 native 方法时才能运行。在本例中,我们在 C 语言中定义了 native 方法的实现。

注意:应避免使用 native 关键字,因为它可能违背 Java 的“一次编写,到处运行”的理念。它通常谨慎使用,并且仅在绝对必要时使用。

要记住的重要事项

  • 对于 native 方法,实现已经存在于 C++ 和 C 等旧语言中。因此,我们不负责提供实现。因此,native 方法声明应以;(分号)结尾。
  • 不允许将 native 方法声明为抽象的。
  • 不允许将 native 方法声明为 strictfp。这是因为无法保证旧语言(C、C++)遵循 IEEE 754 标准。因此,native strictfp 组合是非法的。
  • native 关键字的主要优点是提高性能。然而,native 关键字的主要缺点是它违反了 Java 的平台无关性。