跳轉到內容

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 規範。
華夏公益教科書