|      1ly841000      2022-06-02 11:22:31 +08:00 对 JNI 理解不够可能不稳定,正常不会 | 
|  |      2LeegoYih      2022-06-02 11:32:30 +08:00 什么场景需要 JNI ? | 
|  |      3unco020511      2022-06-02 11:34:55 +08:00 有什么不稳定的,不都是这样用的吗 | 
|  |      4sadfQED2      2022-06-02 11:35:52 +08:00 via Android  5 我大学 c 语言第一课老师跟我们讲“如果你觉得你的程序不符合预期,那一定是你代码有问题,不要怀疑编译器“ 我觉得这话对你这问题适用 | 
|  |      5crayygy      2022-06-02 11:38:46 +08:00 整个 Android 的基础可以说都是 JNI ,的确 JNI 有它不太适用 /不太好用的时候,但是稳定性还是很不错的 | 
|  |      6ysc3839      2022-06-02 11:38:53 +08:00 via Android 如果不稳定的话,为啥 Java 还要搞 JNI ?弄个不稳定的东西来坑人?如果是有 bug ,为啥 Java 不修复,留着 bug 来坑人? | 
|  |      7cheng6563      2022-06-02 11:39:12 +08:00  2 Java 自带的 IO 操作全是 JNI 调用,文件读取相关的 FileInputStream 类 的 read 方法就是 JNI 调用 private native int read0(...) Socket 相关的 SocketInputStream 类的方法 private native int socketRead0(...)也是 JNI 调用 文件读写 Socket 读写还不稳定那就别用 Java 了 | 
|  |      8icylogic      2022-06-02 12:39:56 +08:00  11 这句话的意思是“我以前调用过然后出了问题,我水平太烂最后也没解决,所以你如果搞出问题我就怪你没听我的用了 JNI” | 
|  |      9abcbuzhiming      2022-06-02 12:45:48 +08:00 所谓不稳定,其实就是解决不好内存释放问题,你能解决好内存释放,哪有什么不稳定 | 
|      10dcsuibian      2022-06-02 12:52:57 +08:00 不懂,只是好奇是干什么的库? 对 JNI 的印象一直停留在知道有但从来没用过的状态,貌似 Java 的生态圈里用的极少,不像 Python 那样用的居多。 | 
|      11nicevar      2022-06-02 12:58:36 +08:00 @dcsuibian 遇到一些有性能要求的库,比如解码之类的,像 Android 的 App ,对性能要求高的基本上都是 c/c++写的,包括各种游戏引擎。 | 
|      13Jooooooooo      2022-06-02 13:04:36 +08:00 "不稳定" | 
|      14nicevar      2022-06-02 13:08:06 +08:00 @dcsuibian 普通的也很多,你后端的见得少,但是 Java 的桌面应用很常见,一方面是性能,另一方面一些库原本就是 c/c++写的,用 Java 再写一遍不现实。 | 
|  |      15chendy      2022-06-02 13:12:49 +08:00 好奇是实现了什么功能…… java 里一坨 native 操作也没见不稳定 不过确实存在因为写得不好导致不稳定的情况 | 
|  |      16Buges      2022-06-02 13:23:00 +08:00 via Android 当然是真的,C++是 unsafe 的语言。 | 
|      17microxiaoxiao OP 感谢大兄弟们,看起来 JNI 还是挺稳定,估计 BA 只是想忽悠我一下。主要是俺也不熟 JAVA 。 | 
|      18dqzcwxb      2022-06-02 13:59:09 +08:00 我猜上层换成 golang/python 也会存在同样问题,所以你猜应该是哪里有问题 | 
|      19microxiaoxiao OP @dqzcwxb go python 没听说不稳定,因为说到了 jvm ,咋也搞不懂,咋也没敢问呀😊 | 
|  |      20CaptainD      2022-06-02 14:09:23 +08:00 稳不稳定通常取决于技术强不强,两年前我写什么都不稳定,现在稍微稳定点了 | 
|      21microxiaoxiao OP @CaptainD 不考虑自身因素导致的,主要考虑机制本身的变动,或者它本身不可控的,比如它内存释放机制。 | 
|      22hhjuteman      2022-06-02 14:36:58 +08:00 @dcsuibian ffmpeg opencv webrtc 几乎所有的安卓视频滤镜,美颜,传输,协议控制等等底层都是通过 JNI 调用的 c/c++库 | 
|      23hu8245      2022-06-02 15:00:22 +08:00 不会是 JNI 和 Native 在内存分配上没有协商吧,写这两个模块的人要有清晰的职责划分,不然,就是一团粥 | 
|      24anonydmer      2022-06-02 15:39:43 +08:00 一个敢说,一个敢听,嘿 | 
|      25privapps      2022-06-03 02:17:46 +08:00 你如果做过软件移植就知道什么叫不稳定了 不同的编译器, gcc, xlc 不同版本,不同操作系统 redhat, debian, windows, mac x64, mac arm, 不同架构 x86, x64, arm ... bring me some bad memories |