一、JNI簡介
JNI(Java Native Interface,Java本地接口),用於銜接Java層與Native(C/C++)層。Java可以通過JNI調用本地的C/C++代碼,本地的C/C++代碼也可以通過JNI調用Java代碼。 這不是Android系統所獨有的,而是Java所有。衆所周知,Java語言是跨平臺的語言,而這跨平臺的背後都是依靠Java虛擬機,虛擬機採用C/C++編寫,適配各個系統,通過JNI爲上層Java提供各種服務,保證跨平臺性。
效率 C/C++是本地語言,比Java更高效,在對性能要求較高的場合,需要使用C/C++來實現程序邏輯;
代碼複用 可以複用一些C/C++開發的功能模塊;
反編譯 Java反編譯比C語言容易,一般加密算法是用C語言編寫的,不容易被反編譯;
硬件控制 Java運行在虛擬機中,和真實的物理硬件之間是相互隔離的,通常我們使用本地代碼C/C++實現對硬件驅動的控制,然後再通過Java代 碼調用本地硬件控制代碼。
- 對代碼運行速度有要求的場合;
- 本地代碼複用;
- 一些核心功能,不想被反編譯的場景;
- 對底層硬件需求控制的場合;
Java與Native層的關係下圖所示:
下一篇文章將介紹
JNI原理。