Kotlin 能追赶上 Java 的步伐吗?
犹记得 2017 年 Google I/O 大会上,Google 宣布 Kotlin 语言为 Android 开发的一级语言。时隔四年,Kotlin 的用户量在不断递增,在《2020-2021中国开发者大调查报告》中,轻芒联合创始人、前豌豆荚技术负责人范怀宇也曾评价道,“Kotlin 虽然在统计中总的比例不高,但在 Android 开发上进一步在取代 Java。Kotlin 作为另一个基于 JVM 的编程语言,一方面,可以保持 Java 使用 JVM 稳定和高性能的好处,享用 JVM 已有的生态;另一方面,通过其更为灵活的语法特性,越来越广泛地被 Android 开发者使用,已然成为 Android 的首选编程语言,对于新参与 Android 的开发者而言,Kotlin 是更好的学习对象。”
近日,面向未来,Kotlin 发布了全新的 2021 路线图,JetBrains 也为我们重磅揭晓了有关 Kotlin 即将到来的九大亮点。
采用新的 Kotlin 编译器
重写编译器并不是一件简单的事情,而 Kotlin 即将带来的一项重大创新就是实现全新的编译器,对此,Kotlin 团队表示它是一个庞大的项目,因为它将重写 JVM 和 JS 后端以及新的架构的前端。等到这个项目完全完成之后,它能够为 Kotlin 带来显著的性能提升,包括支持编译器插件 API,且让开发者有机会创建新的语言功能及特性。目前关于这个项目的最新进度是,不久前,JetBrain 刚刚发布了编译器中新的 JVM 后端部分。与此同时,其前端部分也接近了 Alpha 版本(https://youtrack.jetbrains.com/issue/KT-46756)。
第二个重点是将新的 Kotlin/JS 后端进入稳定状态,这需要实现增量编译和源映射生成。
Swaled When 语句
日常开发者中,你的代码库中是否有一个实用函数可以使 Kotlin 的 when 语句更完整无遗?为此,Android 开发大神 Jake Wharton 也曾创建了一个 Kotlin 插件——Exhaustive(https://github.com/cashapp/exhaustive),并引入了一个注释,使 @Exhaustive when 语句真正详尽。但是现在 Kotlin 团队希望大家很快就不再需要它了!
Kotlin 计划推出 sealed when 语句,这是一个被众人期待已久的功能,并在 YouTrack(JetBrains 推出的一种问题跟踪系统和项目管理软件)中获得了 230 票。不过,具体语言语法尚未准备就绪,但总体思路是让编译器能够在 when 语句不完整时候发出警告。这一功能的更新可以保证开发者所开发的代码会更安全,且无需引入自己的函数。
支持 WebAssembly
对于 Kotlin 的未来,其将进一步支持 Kotlin/Wasm。据悉,Kotlin 团队已经开始创建了一个专门的团队来进行全职开发工作,并与 WebAssembly GC 提案的作者密切合作,实现基本的 Kotlin 语言功能、库和基本的 Gradle 支持,并添加实验性的 JavaScript 互操作。
新的 Kotlin/Native 垃圾收集器已处于实验阶段
在声明中,Kotlin 团队表示,已经为创建简单的垃圾收集器所需的大部分组件制作了原型。下一步是编写一个支持多线程的垃圾收集器实现。不过,垃圾回收器的第一个版本会很慢,因此不适合生产。预期在今年晚些时候会向开发者发布,并收集用户的反馈。
同时,该团队称,“准备好告别你的老朋友 InvalidMutabilityException,因为每次使用 Kotlin/Native 时你都不会看到它!”
改进 KMM 中与 iOS 相关的工具
KMM 是一种跨平台技术,Kotlin 将完善与 iOS 相关的工具。其中,除了 Kotlin/Native 内存模型,该官方团队也将专注于改进 Cocoapods 集成用户体验,并从默认脚本中隐藏 packForXcode Gradle 构建任务,以简化项目设置和首次体验。
在 Kotlin 多平台工具中支持 Apple Silicon
随着 Apple Silicon 的推出,它的采用率持续增加。Kotlin/Native 编译器已经可以在这个平台上运行并且可以为它生成二进制文件。为了帮助开发者在项目中充分享受到 Apple Silicon 的支持,Kotlin 团队将在 Kotlin Multiplatform Gradle 插件和所有 Kotlinx 库中支持它。
提高 IDE 性能和稳定性的新方法
快速流畅的 IDE 支持仍然是 Kotlin 团队今年的首要任务。虽然正如第一个亮点所述,Kotlin 团队提高该语言响应能力的长期解决方案是开发新的编译器,但与此同时,其也将继续支持当前的工具并寻找提高性能的新方法。
其中,该团队在用于 IntelliJ IDEA 和 Android Studio 的 Kotlin 插件中,使用了 30 多个种索引,另外,他们也探索了许多通过重构索引系统来提高代码分析速度和稳定性的方法。除此之外,其还计划提高 IDE Navigation 和 Find Usages 的速度。
新的核心库功能
Kotlin 团队将继续改进标准和 kotlinx 库,例如协程和序列化。其中包括:
多平台支持协程中的挂起测试,这将改进 KMM 和 JVM-only 项目的测试套件。
在序列化中与 Java I/O 流集成,以支持从任意数据源(如网络或文件系统流)反序列化大文件。
去掉 !! 之后的 readLine(),这应该会使“Hello world”程序语法对新手更直观。
新的社区风格
如果你稍加注意,可能已经发现 Kotlin 的 logo 有了新的变化,另外,Kotlin 团队还设计了一种新的徽标,即更新了颜色、排版等等,其计划是为不同的用户组提供品牌体验,之所以设计这样的样式,Kotlin 官方表示,Kotlin 官方徽标与语言本身相关联。它不应该在不同的范围内以其他方式使用,因为这可能会导致混淆。这种样式同样适用于它的衍生品。
关于路线图的更多内容请参考:https://kotlinlang.org/docs/roadmap.html
2001 年创刊,20 年技术见证
《新程序员001:开发者黄金十年》
重磅来袭