首頁 > Java > java教程 > 主體

Java 中的 Native 關鍵字

王林
發布: 2024-08-30 15:21:45
原創
1024 人瀏覽過

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中文網其他相關文章!

相關標籤:
來源:php
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!