用 JNI 進行 Java 編程(5)

結束語和參考資料

結束語

Java 本機接口是 Java 平臺中一種設計良好和良好集成的 API。它被設計成用來使您能將本機代碼合併到 Java 程序中,也爲您提供了一種在用其它編程語言編寫的程序中使用 Java 代碼的方式。html

使用 JNI 總會破壞 Java 代碼的可移植性。當從 Java 程序調用本機方法時,須要爲每一個您打算運行程序的平臺分發本機共享庫文件。另外一方面,從本機程序調用 Java 代碼實際上能夠改進應用程序的可移植性。java

 

附錄

附錄 A:JNI 類型

JNI 使用幾種映射到 Java 類型的本機定義的 C 類型。這些類型能夠分紅兩類:原始類型和僞類(pseudo-classes)。在 C 中,僞類做爲結構實現,而在 C++ 中它們是真正的類。程序員

Java 原始類型直接映射到 C 依賴於平臺的類型,以下所示:算法

C 類型 jarray 表示通用數組。在 C 中,全部的數組類型實際上只是 jobject 的同義類型。可是,在 C++ 中,全部的數組類型都繼承了 jarrayjarray 又依次繼承了 jobject。下列表顯示了 Java 數組類型是如何映射到 JNI C 數組類型的。shell

這裏是一棵對象樹,它顯示了 JNI 僞類是如何相關的。編程

附錄 B:JNI 方法說明編碼

用下表指定的編碼將本機 Java 方法參數類型表示或轉換成本機代碼。數組

JNI 對象樹

安全

  • 類類型 L 表達式結尾的分號是類型表達式的終止符,而不是多個表達式之間的分隔符。

  • 必須用正斜槓(/)而不是點(.)來將包和類名稱隔開。要指定數組類型,用左方括號([)。 例如,Java 方法:
    boolean print(String[] parms, int n)

    的轉換說明以下:
    ([Ljava/lang/Sting;I)Z

 

參考資料

下載 數據結構

文章和教程 數據結構和算法

  • 要了解更多關於用 C/C++ 語言編程和用 Java 語言編程之間的差別(從 C/C++ 程序員的角度),請參閱教程「 Introduction to Java for C/C++ programmers 」(developerWorks,1999 年 4 月)
  • 最近的一篇文章「Weighing in on Java native compilation」(developerWorks,2002 年 1 月)使用用來進行比較的基準測試程序從正反兩方面研究了 Java 本機接口。
  • 瞭解更多關於 Java 本機接口的內容,包括 Java 2 SDK 中的 JNI 的加強
  • 要進一步學習 Java 編程,請參閱 developerWorks 上的 關於 Java 編程的教程列出的全部教程。
  • 在 IBM developerWorks 上的 Java 技術專區,關於 Java 編程的每一個方面,您均可以找到數百篇文章。

推薦書籍

 

關於做者

Scott Stricker 是 IBM Global Services 下屬的 Business Innovation Services 的企業應用程序開發人員。他的專長是面向對象技術,尤爲是 Java 和 C++ 編程。

Scott 擁有美國辛辛那提大學計算機科學理學學士學位。他是「Sun 認證的 Java 2 程序員與開發者(Sun Certified Java 2 Programmer and Developer)」。 可經過 sstricke@us.ibm.com 聯繫 Scott。

相關文章
相關標籤/搜索