【发布时间】:2019-04-27 14:27:09
【问题描述】:
我试图了解 Kotlin 源代码在编译时所经历的过程。 The documentation 状态
当以 JVM 为目标时,Kotlin 会生成与 Java 兼容的字节码。当以 JavaScript 为目标时,Kotlin 转译为 ES5.1 并生成与包括 AMD 和 CommonJS 在内的模块系统兼容的代码。当以原生为目标时,Kotlin 将生成特定于平台的代码(通过 LLVM)。
我的理解是,当 Kotlin 以 JVM 为目标时,代码被编译/翻译成字节码,然后 JVM 将其解释(?)成机器码。这会是 JIT(Just in time) 编译的一个例子吗?
在定位 javascript 时,使用“transpiles”一词。代码究竟被编译成什么?它在任何步骤都被进一步解释或编译?
当以原生为目标时,代码是否直接编译为机器码? LLVM 采取了哪些步骤?
最后,这是否意味着 Kotlin 既是编译语言又是解释语言?
【问题讨论】:
标签: kotlin compilation kotlin-native kotlin-js