16.1 Kotlin Native 简介
Kotlin Native利用LLVM来编译到机器码。Kotlin Native 主要是基于 LLVM后端编译器(Backend Compiler)来生成本地机器码。
Kotlin Native 的设计初衷是为了支持在非JVM虚拟机平台环境的编程,如 ios、嵌入式平台等。同时支持与 C 互操作。
16.1.1 LLVM
LLVM最初是Low Level Virtual Machine的缩写,定位是一个虚拟机,但是是比较底层的虚拟机。LLVM是构架编译器(compiler)的框架系统,以C++编写而成,用于优化以任意程序语言编写的程序的编译时间(compile-time)、链接时间(link-time)、运行时间(run-time)以及空闲时间(idle-time),对开发者保持开放,并兼容已有脚本。
LLVM的出现正是为了解决编译器代码重用的问题,LLVM一上来就站在比较高的角度,制定了LLVM IR这一中间代码表示语言。LLVM IR充分考虑了各种应用场景,例如在IDE中调用LLVM进行实时的代码语法检查,对静态语言、动态语言的编译、优化等。
16.1.2 支持平台
Kotlin Native现在已支持以下平台:
平台名称 | target 配置 |
---|---|
Linux | linux |
Mac OS | macbook |
Windows | mingw |
Android arm32 | android_arm32 |
Android arm64 | android_arm64 |
iOS | iphone |
Raspberry Pi | raspberrypi |
这意味着我们可以在这些平台上愉快地开始体验了!目前Kotlin Native 已经发布的最新预发布版本是 v0.3 。
16.1.3 解释型语言与编译型语言
编译型语言,是在程序执行之前有一个单独的编译过程,将程序翻译成机器语言,以后执行这个程序的时候,就不用再进行翻译了。例如,C/C++ 等都是编译型语言。
解释型语言,是在运行的时候将程序翻译成机器语言,所以运行速度相对于编译型语言要慢。例如,Java,C#等都是解释型语言。
虽然Java程序在运行之前也有一个编译过程,但是并不是将程序编译成机器语言,而是将它编译成字节码(可以理解为一个中间语言)。在运行的时候,由JVM将字节码再翻译成机器语言。