Kotlin学习笔记-[编译过程]

前言

在使用kotlin的过程中,很好奇kotlin是如何能够做到完全兼容java,如何在最后打包进入到dex中。显而易见的,kotlin在编译时最后阶段会产生java字节码,最后通过dx 生成 dex打包进到apk里,不过很好奇中间经过了哪些处理?又有哪些特殊之处?


Kotlin学习笔记-[编译过程]_第1张图片
编译流程

这里大致可以看到java整个的编译流程。
kotlin 也是类似的过程。
Kotlin编译器在编译前端(即词法分析、语法分析、语义分析、中间代码生成)并没有做让人感到惊讶的事情,和Java是基本一致的。与Java相比,所与众不同,也最重要的细节在编译后端(目标代码生成)环节。Kotlin编译器在目标代码生成环节做了很多类似于Java封装的事情,比如自动生成Getter/Setter代码的生成、Companion转变成静态类、修改类属性为final不可继承等等工作。可以说,大部分Kotlin的特性都在这个环节处理产生。可以这么说,Kotlin将我们本来在代码层做的一些封装工作转移到了编译后端阶段,以使得我们可以更加简洁的使用Kotlin语言。

具体流程可参考kotlin编译过程分析,写得太好了,我就不浪费大家时间了。

参考

  • kotlin编译过程分析
  • kotlin源码
  • JFlex
  • IntelliJ Platform SDK DevGuide

你可能感兴趣的:(Kotlin学习笔记-[编译过程])