12

所以我知道 Kotlin Native 显然是 Native 而 Kotlin JVM 不是,而是 Kotlin JVM 和 Kotlin Native 之间的代码: 1. 不同的编译器和不同的代码 2. 不同的编译器和类似的代码 3. 不同的编译器和相同的代码 4. 没有以上(请说明)

4

1 回答 1

17

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 之间完全重用使用它的代码。

于 2019-03-28T22:40:41.470 回答