複製鏈接
請複製以下鏈接發送給好友

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本地接口簡介

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

Java本地接口功用

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

Java本地接口定義

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