外观
Java、Kotlin、C++ 在客户端里怎样协作?
标准回答
Java 和 Kotlin 可以在同一个 Android 工程中协作;C++ 常用于既有原生库、硬件 SDK 或需要原生实现的部分,通过 JNI 与托管代码交互。先把主力技术栈做扎实,再掌握交界处的规则。
- Java/Kotlin 互操作注意空值注解、平台类型与回调约定,不把可空值当成永远非空。
- JNI 尽量减少跨边界次数和数据复制,JNIEnv 不能跨线程直接共用。
- 原生资源有自己的释放规则,Java 对象回收不自动释放任意 native 资源。
通俗例子
你用 Java 写车机页面,团队用 Kotlin 写数据层,算法 SDK 提供 C++ 库。页面通过清晰的接口调用,重点核对空值、线程、取消和内存归属,避免页面退出后 native 回调仍访问旧对象。
深入解释
**互操作最容易漏什么:**Java 与 Kotlin 交界处要说清 null、异常和回调约定;Java/Kotlin 与 C++ 交界处还要明确线程、数据复制及资源由谁申请、由谁释放。
**为什么需要 JNI 边界:**托管代码与 native 代码采用不同的对象和资源管理方式。JNI 提供调用桥梁,但不会自动消除内存错误;JNIEnv 等线程相关对象不能随意跨线程复用。
易混淆点
AI 客户端岗位写的是至少一种技术栈,不要求同时精通所有语言;这张卡补的是协作边界。
参考资料
内容来源
- Android · AI Agent 知识手册 · 原条目
job-A12