日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

JNI概述

發布時間:2025/7/14 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JNI概述 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

JNI是Java Native Interface的縮寫,它提供了若干的API實現了Java和其他語言的通信(主要是C&C++)。

JNI 讓你在利用強大 Java 平臺的同時,使你仍然可以用其他語言寫程序。 作為 JavaVM 的部分,JNI 是一套雙向的接口,允許 Java 與本地代碼間的互操作。?

作為雙向接口,JNI 支持兩種類型本地代碼:本地庫和本地應用。
? 用本地代碼實現 Java 中定義的 native method 接口,使 Java 調用本地代碼 (即是Java層調用Native層代碼(主要是C、C++))
? 通過 JNI 你可以把 Java VM 嵌到一個應用程序中,此時 Java 平臺作為應用程序的增
強,使其可以調用 Java 類庫 (即是Native層調用Java層代碼)

交互圖:

?

注意事項:

首先,脫離 Java 后,可移植性問題你要自己解決,且需重新在其他平臺編譯鏈接本地庫。

第二,要小心處理 JNI 編程中各方面問題和來C/C++語言本身的細節性問題,處理不當,應用將崩潰。

一般性原則:

做好應用程序架構,使 native methods 定義在盡可能少的幾個類里?(不要太分散,不好管理,查看)

學習 JNI 編程是個漫長的實踐過程,會碰到無數問題。

用 C/C++編程,常見問題有內存泄露,指針越界...,此外使用了 JNI,還要面對 JavaVM的問題:

? 在本地代碼中 new 一個 Java 對象后期望在本地代碼中維護此對象的引用,如何避免被 GC?

? Java 面向對象語言的封裝性被破壞了,Java 類中任何方法和屬性對 JNI 都是可見的,不管它是 public 的,還是 private/protected/package 的

? 對 LocalRef/GlobalRef 管理不善,會引發 Table Overflow Exception,導致應用崩

? 從 JNI 調用 Java 的過程不是很直觀,往往幾行 Java 代碼能搞定的事情,用 JNI 實現卻要幾百行雖然,有這樣多問題,逃避不了,你就認了吧。 經過一段時間的實踐,當你能熟練處理這些問題時,就會,眉頭一皺,文思泉涌,指尖飛舞,瞬間幾百行代碼誕生了,一個 make全部編譯通過,這時的你肯定已經對 JNI 上癮了......?

?

轉載于:https://www.cnblogs.com/H-BolinBlog/p/6093887.html

總結

以上是生活随笔為你收集整理的JNI概述的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。