

Kotlin 2.0默认激活K2编译器,带来编译速度大幅提升以及多平台支持强化,改善开发体验,另外,Kotlin也原生支持Compose Multiplatform,简化多平台UI开发
Android主要开发语言Kotlin 2.0现在已经正式发布,这是带有K2编译器的重大更新版本,新的K2编译器不只能够更好地理解代码,编译速度也提升一倍,而且使Kotlin 2.0的多平台支持更强大,服务器端、网页、桌面、iOS和Android应用程序,都可以共用同一套代码库。
K2编译器现在已经成为Kotlin 2.0默认的稳定编译器,适用于JVM、原生、WebAssembly和JavaScript等各种目标平台。K2编译器的一大特色,便是性能的显著提升,加快了新语言功能的开发,并且统一了Kotlin所支持的所有平台,替多平台项目提供更好的架构。为了确保K2编译器的稳定性,JetBrains团队已经编译了来自用户和内部项目总共1,000万行的代码,在测试过程,也已有1.8万名开发者与8万个项目参与测试。
由于Kotlin 2.0采用了新的K2编译器,因此在多平台的支持上,有了长足的改进。在之前Kotlin编译器的设计,无法于编译时分离通用和平台代码集,所以通用代码可能会存取平台代码,而这可能会因平台差异而产生不同的行为,此外,通用代码中的一些编译器配置和相依项目,也会泄漏到平台代码中,通用代码和平台的界线变得模糊,可能导致代码难以维护和管理,甚至发生错误。
在Kotlin 2.0中,由于K2编译器重新设计了编译架构,在编译期间严格分离通用和平台代码集,开发团队提到,这项变更的好处在使用expected和actual函数的时候会更为明显,因为过去通用代码中的函数调用,可能会解析到平台中的函数,但现在这种情况已经得到改正。
除了编译时通用和平台代码分离之外,另一个多平台功能更新是expect和actual声明的可见等级管理调整。在Kotlin 2.0之前,多平台项目使用expect和actual声明,两者必须具有相同的可见性等级,例如expect声明为public,则相对应的actual声明也必须是public。
而Kotlin 2.0的expect和actual声明,则可以具有不同的可见性等级,只是actual声明的可见性等级,必须比expect声明更宽松,或更具包容性。这个改进使得多平台开发更为灵活,允许在不同平台调整可见性层级,并同时维持代码的一致性和可读性。
Kotlin 2.0编译速度大幅提升,部分项目甚至可达到之前版本的2倍速,除了编译速度,IntelliJ IDEA的K2模式性能也有明显改进,在IntelliJ IDEA Ultimate的代码库中,代码突出显示的速度提升至1.8倍,代码完成速度也是之前的1.5倍。目前K2模式的IntelliJ IDEA还在Alpha阶段,官方预计会在2024年底成为默认模式。
Kotlin 2.0也提供对Compose Multiplatform项目的原生支持,Jetpack Compose编译器被合并到Kotlin存储库中与Kotlin一同发布,开发者使用Compose Multiplatform进行多平台UI开发将会更方便。Kotlin开发团队正在积极开发新一代Kotlin Multiplatform函数库格式,供开发者从任意主机开发和发布Kotlin Multiplatform函数库与通用Kotlin函数库。