Java本地接口

Java本地接口

儘管可以完全用Java編寫應用程式,但是有時單獨用Java不能滿足應用程式的需要,程式設計師使用JNI來編寫Java本地方法,可以處理那些不能完全用Java編寫應用程式的情況。

以下示例說明了何時需要使用Java本地方法:

l 標準Java類庫不支持與平台相關的應用程式所需的功能。

l 已經擁有了一個用另一種語言編寫的庫,而又希望通過JNI使Java代碼能夠訪問該庫。

l 想用低級語言(如彙編語言)實現一小段時限代碼。

通過用JNI編程,可以將本地方法用於:

l 創建檢查及更新Java對象(包括數組和字元串)。

l 調用Java方法。

l 插捉和拋出異常。

l 載入類和獲得類信息。

l 執行運行時類型檢查。

也可以與調用API一起使用,以允許任意本地應用程式嵌入到Java虛擬機中,這樣使用程式設計師能夠輕易地讓已有應用程式支持Java,而不必與虛擬機原始碼相連結。

基本介紹

  • 中文名:Java本地接口
  • 外文名:JNI
  • 定義:編程框架
  • 功用:提供了檔案I/O與其它功能
簡介,功用,定義,

簡介

Java本地接口(JNI)是一個編程框架使得運行在Java虛擬機上的Java程式調用或者被調用特定於本機硬體與作業系統的用其它語言(CC++彙編語言等)編寫的程式。

功用

JNI允許用本地代碼來解決純粹用Java編程不能解決的平台相關的特性。也用於改造已存在的其它語言寫的應用程式,供Java程式訪問。許多使用了JNI的標準庫提供了檔案I/O與其它功能。標準庫中性能敏感或平台敏感的API實現允許所有Java應用程式安全且平台獨立地訪問這些功能。
JNI框架使得本地方法可以訪問Java對象,就如同Java程式訪問這些本地對象。本地方法可以創建Java對象,然後檢查、使用這些對象執行任務。本地方法也可以檢查並使用由Java程式創建的對象。
Java開發人員稱JNI為逃生門("escape hatch"),因為JINI允許增加標準Java API不能提供的功能。也可以用於時間關鍵的計算或者如解複雜數學方程,因為本地方法的運算比JVM更快。也可以在安卓上重用已存在的C/C++編寫的庫。

定義

與其他方法相似,你必須聲明要用的所有本地方法,並且必須將它們定義在一個類中。
你可將你的本地
HelloWorld
方法定義為如下形式:
publicnativevoidnativeHelloWorld();
這與你所寫的其他
publicvoid
方法比較有兩個變化:
*
關鍵字
native
被用作方法修飾符。
*
方法的主體部分(實際實現部分)在這裡沒有定義,而是代之以一個分號(;)。
你必須把本地方法的聲明放到類的定義中。含有這個本地方法的類還包含一個靜態代碼塊,它負責裝載帶有該方法實現的動態庫。這裡是為簡單的
Java
運行環境在類被裝載時執行定義的
static
代碼塊。
在上例中,
當類
NativeHello
被裝載時,
hello1
被裝入
套用

相關詞條

熱門詞條

聯絡我們