kotlin - Kotlin JVM 和 Kotlin Native 有什么区别?
问题描述
所以我知道 Kotlin Native 显然是 Native 而 Kotlin JVM 不是,而是 Kotlin JVM 和 Kotlin Native 之间的代码: 1. 不同的编译器和不同的代码 2. 不同的编译器和类似的代码 3. 不同的编译器和相同的代码 4. 没有以上(请说明)
解决方案
Kotlin/JVM 和 Kotlin/Native 编译器共享前端(执行代码解析、名称解析、类型推断等的部分),但编译器后端将内部程序表示转换为目标代码(JVM字节码和 LLVM 位码)是不同的。
两种编译器接受的 Kotlin 语言是相同的,但一些特性和检查是特定于平台的。此外,Kotlin/JVM 和 Kotlin/Native 的标准库有很大的不同,请在此处查看每个平台上可用的 API:Kotlin 标准库。
另一个很大的区别是内存模型:Kotlin/JVM 使用 Java 内存模型,而 Kotlin/Native 提供了自己的并发和内存模型。
此外,在 Kotlin/JVM 和 Kotlin/Native 项目中可以使用的依赖项是不同的。除了使用相同 Kotlin 目标构建的项目:
Kotlin/JVM 还可以使用为 JVM 构建的任何库(用 Java、Scala 等编写)
Kotlin/Native 还可以使用C 互操作工具与用 C 编写的本机库(或至少具有 C 头文件)进行互操作。
Kotlin/JVM 和 Kotlin/Native 都可以使用 Kotlin 多平台库。鉴于依赖项是一个多平台库,因此可以在 Kotlin/JVM 和 Kotlin/Native 之间完全重用使用它的代码。
推荐阅读
- flutter - 断言失败:第 61 行第 12 行:'_route == ModalRoute.of(context)':不正确
- ios - 深度数据始终为零
- javascript - 计算两个日期格式(YYYY-MM-DD HH:MM)之间的差异,并以分钟为单位显示结果
- c# - 如何在纯 c# 中转换 wav 文件的采样率
- python - 用交叉线为两条阶梯线之间的区域着色
- 3d - 模型查看器:如何缩放 3D 对象以填充容器
- angular - Angular Ngrx 在调度动作 storageMetaReducer 时删除一些状态
- python - 分组和堆积条形图
- javascript - 如何从jsp中的foreach循环访问Js中的多个td数据
- wpf - 您可以使用 Microsoft Print to PDF 打印机将 XPS 转换为 PDF 文件吗?