玖叶教程网

前端编程开发入门

Kotlin 多平台(KMP),它在底层是如何工作的?

Kotlin Multi-Platform(KMP)是一种让开发者能够在不同平台上共享Kotlin代码的技术。KMP由JetBrains开发,并且目前在移动平台上的应用还处于测试阶段。

那么KMP是如何运作的呢?Kotlin代码是如何转换为其他平台的呢?对于Android平台,Kotlin代码会被转换为Java字节码。而对于iOS平台,Kotlin代码必须被转换为源代码(能够在iOS上执行的本地代码),然后将该源代码嵌入到框架中。这个框架可以在iOS上运行。

那么,Kotlin代码是如何被转换为能够在iOS上运行的源代码的呢?这就需要用到Kotlin编译器。它由两个部分组成:

  • 1、前端(Frontend):它将Kotlin代码转换为IR(Intermediate Representation,中间代理)。这个IR可以通过下面要介绍的后端转换为机器可执行的本地代码。
  • 2、 后端(Backend):它将IR转换为机器可执行的本地代码。这得益于JetBrains构建的Kotlin/Native基础设施。对于Android平台,它将IR转换为Java字节码;而对于iOS平台,它将IR转换为iOS本地机器码。

根据官方文档的描述:

“Kotlin/Native is an LLVM backend for the Kotlin compiler, runtime implementation, and native code generation facility using the LLVM toolchain.”

“Kotlin/Native is primarily designed to allow compilation for platforms where virtual machines are not desirable or possible (such as iOS or embedded targets), or where a developer is willing to produce a reasonably sized self-contained program without the need to ship an additional execution runtime.”

“Kotlin/Native是Kotlin编译器的LLVM后端,它实现了运行时和使用LLVM工具链进行本地代码生成。”

“Kotlin/Native的主要设计目标是允许在不需要或不适合使用虚拟机的平台上进行编译(例如iOS或嵌入式目标),或者开发者希望生成一个合理大小、独立的程序,而无需额外提供执行运行时。”

那么LLVM是什么呢?可以将LLVM看作是一个库,用于根据中间代理(IR)来程序化地创建机器本地代码。

首先创建中间代理(IR),然后LLVM会根据这个IR进行转换,完成魔术般的工作。

总结一下,Kotlin代码经过以下转换流程:

Kotlin代码 → 中间代理(IR) → 机器可执行的本地代码。

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言