JEP 419:JDK18將無需JNI呼叫JVM外部程式和資料
外部函式和記憶體 API 是由JEP 412提出的,該API能使Java程式無需JNI直接能夠呼叫本地庫和處理本地資料。
根據Java 17中反饋進行了改進,並在 Java 18 中重新推出孵化 API。
目標
- 易用性— 用高階的純 Java 開發模型替換 Java 本機介面 ( JNI )。
- 效能 — 提供與JNI和sun.misc.Unsafe等現有API相當的效能
- 通用性— 提供對不同型別的外部記憶體(例如,本機記憶體、持久記憶體和託管堆記憶體)進行操作的方法,並且隨著時間的推移,以適應其他平臺(例如,32 位 x86)和用其他語言編寫的外部函式比 C(例如,C++、Fortran)。
- 安全——預設禁用不安全的操作,只有在應用程式開發人員或終端使用者明確選擇後才允許它們。
多年來,出現了許多框架來填補 JNI 留下的空白,包括JNA、JNR和JavaCPP。雖然這些框架通常比 JNI 有了顯著的改進,但情況仍然不太理想,尤其是與提供一流的本地互操作的語言相比時。例如,Python 的ctypes包可以在本地庫中動態包裝函式,無需任何膠水程式碼。其他語言,例如Rust,提供了從 C/C++ 標頭檔案機械地派生本機包裝器的工具。
最終,Java 開發人員應該有一個受支援的 API,讓他們可以直接使用任何被認為對特定任務有用的本地庫,而沒有 JNI 的繁瑣和笨拙。
相關文章
- JNI:Java程式碼呼叫原生程式碼Java
- JNI資料型別和方法資料型別
- Java魔法堂:呼叫外部程式Java
- android使用JNI呼叫C,C++程式AndroidC++
- Java如何呼叫C語言程式,JNI技術JavaC語言
- Android JNI實現Java與C/C++互相呼叫,以及so庫的生成和呼叫(JNI方式呼叫美圖秀秀so)AndroidJavaC++
- Oracle 巧用外部表將大量excel資料匯入資料庫OracleExcel資料庫
- NDK 知識梳理(3) JNI 之 Java 和 JNI 資料型別對映Java資料型別
- [Golang]呼叫外部shell程式處理檔案Golang
- JEP 421: Java將要終結finalize()了!Java
- java 無需建立資料來源連線access資料庫Java資料庫
- 一個JAVA程式呼叫外部程式的問題!(急)Java
- java呼叫c++動態庫之jni呼叫JavaC++
- QTP呼叫外部應用程式的4種方法QT
- 資料科學即將迎來“無程式碼”時代資料科學
- MediaScanner Java, JNI, mediaservice 呼叫關係Java
- JAVA JNI 呼叫C語言 DemoJavaC語言
- C語言 JNI 呼叫JAVA DemoC語言Java
- 外部函式的呼叫函式
- C#呼叫外部DLLC#
- Android 無需申請key直接呼叫微信/QQ/微博分享Android
- python 呼叫外部程式訪止一直阻塞Python
- JNI/NDK開發指南(9):JNI呼叫效能測試及優化優化
- Code First 遷移更新資料庫 無需刪除當前資料庫資料庫
- httprunner yml 呼叫外部函式HTTP函式
- Android檢視資料庫工具推薦,無需rootAndroid資料庫
- JNI呼叫c動態連結庫函式程式碼實踐函式
- C# 客戶端程式呼叫外部程式的三種實現C#客戶端
- 7.在外部資料庫中存取和修改資料(筆記)資料庫筆記
- 如何將外部資料庫 匯入到系統的SQL中資料庫SQL
- 微信小程式新增外部地圖服務資料微信小程式地圖
- Dede呼叫資料庫失敗,無法實現資料處理資料庫
- 觀察者模式,無需多執行緒完成資料監聽模式執行緒
- 無法解析外部符號:AdjustTokenPrivileges和GetAstncKetState符號AST
- SparkSQL外部資料來源SparkSQL
- 無人機也需駕駛執照? 加拿大將禁止無照無人機無人機
- Java的Panama專案與JNI以及外部函式介面FFIJava函式
- JNI/NDK開發指南(8):呼叫構造方法和父類例項方法構造方法