JNI与NDK理解及JNIEnv与JavaVM区别详解.pdfVIP

  • 5
  • 0
  • 约4.82千字
  • 约 6页
  • 2026-04-14 发布于北京
  • 举报

一、谈谈你对JNI和NDK的理解

JNI:

JNI是JavaNativeInterface的缩写,即Java的本地接口。

目的是使得Java与本地其他语言(如C/C++)进行交互。

JNI是属于Java的,与Android无直接关系。

NDK:

NDK是的缩写,是Android的工具开发包。

作用是更方便和快速开发C/C++的动态库,并自动将动态库与应用一起打包到apk。

NDK是属于Android的,与Java无直接关系。

总结:

JNI是实现的目的,NDK是Android中实现JNI的。

二、谈谈你对JNIEnv和JavaVM理解

JavaVM

JavaVM是虚拟机在JNI层的代表。

一个进程只有一个JavaVM。(重要!)

所有的线程共用一个JavaVM。(重要!)

JNIEnv

JNIEnv表示Java调用native语言的环境,封装了几乎全部JNI方法的指针。

JNIEnv只在创建它的线程生效,不能跨线程传递,不同线程的JNIEnv彼此独立。(重要!)

注意:

在native环境下创建的线程,要想和java通信,即需要获取一个JNIEnv对象。我们通过

AtthC

文档评论(0)

1亿VIP精品文档

相关文档