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
- Java魔法堂:呼叫外部程式Java
- Java如何呼叫C語言程式,JNI技術JavaC語言
- Android JNI實現Java與C/C++互相呼叫,以及so庫的生成和呼叫(JNI方式呼叫美圖秀秀so)AndroidJavaC++
- [Golang]呼叫外部shell程式處理檔案Golang
- java呼叫c++動態庫之jni呼叫JavaC++
- JEP 421: Java將要終結finalize()了!Java
- 織夢呼叫導航外部連結無法顯示
- 外部函式的呼叫函式
- JNI呼叫c動態連結庫函式程式碼實踐函式
- C# 客戶端程式呼叫外部程式的三種實現C#客戶端
- Android檢視資料庫工具推薦,無需rootAndroid資料庫
- 資料科學即將迎來“無程式碼”時代資料科學
- Android Studio NDK開發-JNI呼叫Java方法AndroidJava
- httprunner yml 呼叫外部函式HTTP函式
- 無法解析外部符號:AdjustTokenPrivileges和GetAstncKetState符號AST
- 如何將外部資料庫 匯入到系統的SQL中資料庫SQL
- Java的Panama專案與JNI以及外部函式介面FFIJava函式
- Android 無需申請key直接呼叫微信/QQ/微博分享Android
- 微信小程式新增外部地圖服務資料微信小程式地圖
- Dede呼叫資料庫失敗,無法實現資料處理資料庫
- Java jvm級別native關鍵詞、JNI詳解JavaJVM
- SparkSQL外部資料來源SparkSQL
- JNI程式碼實踐
- Android JNI開發系列之Java與C相互呼叫AndroidJava
- 【Vue】 外部JSON資料引用IconfontVueJSON
- java程式通過swing呼叫javaFx更新 資料Java
- 無需重新學習,使用 Kibana 查詢/視覺化 SLS 資料視覺化
- 觀察者模式,無需多執行緒完成資料監聽模式執行緒
- JVM——【執行時資料區】程式計數器JVM
- JVM如何處理方法呼叫JVM
- JVM系列-方法呼叫的原理JVM
- 外部js呼叫vue的methods中的方法JSVue
- QT6編寫外部庫並呼叫QT
- python收集jvm資料PythonJVM
- 【轉載】GDB高階技巧:邊Debug邊修復BUG,無需修改程式碼,無需重新編譯編譯
- ICCV 2019 | 北大、華為聯合提出無需資料集的Student Networks
- hive將查詢資料插入表中某欄位無資料Hive