Kotlin
A concise multiplatform language developed by JetBrains
Kotlin 1.5.0 – 2021 年的首个大版本
欢迎新版本计划表的第一个功能版本 —— Kotlin 1.5.0 !
这个版本提供了稳定的语言特性,如 JVM records,密封接口,内联值类,并包括了新的默认的 JVM IR 编译器。 您在 Kotlin 1.4.30 和 Kotlin 1.5.0 EAP 版本中预览特性的反馈切实帮助我们去稳定这些功能。 我们非常感激您的协助! 谢谢!
已经有多达 25,000 名开发者尝试过 IntelliJ IDEA 上新的 JVM IR 编译器了。
您会逐渐留意到其优势。 新的编译器与 Kotlin/Native 和 Kotlin/JS IR 编译器共享标准统一的管道和业务逻辑,这将使我们能够同时为所有平台实现大多数特性,优化和错误修复。 它还将允许添加在所有平台上自动运行的自定义处理和转换。
您对于 Kotlin 1.5.0 还有什么疑问? 在 5 月 25 日的 Kotlin 在线活动,Roman Elizarov, Svetlana Isakova,以及其他 Kotlin 团队的成员,已准备就绪回答您的问题。
在这篇博文中,您将会看到以下内容的概述:
- 稳定的语言特性 —— JVM 记录(records),密封接口和内联值类。
- 标准库和测试库的改进,包括稳定的无符号整数类型,
java.nio.file.Path
的扩展以及 String,Char 和 Duration API 的改进。 - Kotlin/JVM的改进,包括新的默认 JVM IR 编译器。
- Kotlin/Native 改进,包括针对调试 Linux 和 iOS 应用程序更快速的编译速度。
- Kotlin/JS 改进,包括已迁移了更多 JS 库到新的 Kotlin/JS IR 编译器。
自动升级到 Kotlin 1.5.0
如果您使用的是 IntelliJ IDEA 或 Android Studio,您可以通过它提供的选项,当 Kotlin 的新版已就绪,将自动升级到最新的版本。
了解更多有关 Kotlin 1.5.0 安装的信息。
稳定的语言特性
Kotlin 1.5.0 包含了在 1.4.30 中提供预览的新语言特性的稳定版本:
- 对 JVM records 的支持以及保持和 Java 最新特性—— record 类的互操作性。 要将 Kotlin 类编译为 Java 代码中的 record,将其声明为
data
类,并通过@JvmRecord
注解标记:了解使用 JVM records 所需条件的更多信息。
- 密封接口
sealed
修饰符在接口与在类上的原理相同——密封接口的所有实现在编译时均为已知状态。 - 密封类的改进 以前,所有子类都必须与密封类放在同一个文件中。 现在它们可以位于相同编译单元和相同程序包的任意文件中。
- 内联类是只包含值为基础类型的类的子集。 您可以用它们为某个指定类型的值进行封装,而不会因为内存分配而产生额外的开销。 通过
value
修饰符进行声明。
了解更多有关 Kotlin 1.5.0 语言特性的信息
标准库及测试库的改进
标准库提供了许多有用的功能,包括:
- 用于无符号整数类型的新稳定 API,以及它们的范围,级数和函数。 了解更多有关无符号整型的信息。
- java.nio.file.Path 的扩展函数,以 Kotlin 惯用风格调用的现代非阻塞 Java IO。
- String 和 Char API 的改进,包括用于更改字符串和字符大小写的新的与语言环境无关的 API,用于在字符及其整数代码和数值之间进行转换的一组新函数,以及更多兼容多平台的 char 函数。
- Duration API 变动,包括内部使用
Long
值表示,并提供新的属性以获取 duration 的Long
值。
测试库带来了一系列重要的改进:
- 只需要在多平台项目的公共源集里对
kotlin-test
进行单次依赖。 - 当您指定唯一的
kotlin-test
依赖项时,会自动为 Kotlin/JVM 源集选择测试框架。 - 大量断言函数的更新。
了解更多有关库改善的信息。
- 阅读带示例的库改善博文。
- 阅读What’s new in Kotlin 1.5.0。
- 观看视频。
Kotlin/JVM
Kotlin 1.5.0 带来了:
- 在 Kotlin 1.4.0 宣布的新 JVM IR 编译器已稳定,并成为默认项。 在博文和文档中了解更多有关新编译器的信息。
- SAM adapters 和 lambda 将编译为动态调用 (invokedynamic),这得益于最新的 JVM 特性。 Kotlin plain lambdas 的编译是实验性的。
- 新的默认 JVM target: 1.8。 而
1.6
target 已被弃用。 - 改进了对于 Java 中类型可空性信息的处理方式。
- 弃用 @JvmDefault 和旧的 Xjvm-default 模式。
Kotlin/Native
Kotlin 1.5.0 提供了:
- 在
linuxX64
和iosArm64
目标的调试模式下支持编译器缓存。 当编译器缓存启用,除第一次调试编译外,大部分调试编译的速度都将更快。 测量结果表明,我们测试项目的编译速度提高了200%。 - 停用内置的内存泄漏检查器,以避免可能导致的应用程序崩溃问题。 了解如何启用内存泄漏检查器(如有必要)。
Kotlin/JS
Kotlin/JS 的 新 Kotlin/JS IR 编译器迈向 Beta 。 许多著名的框架和库 KVision,fritz2,doodle 等等已向 IR 编译器敞开怀抱。
如果您是库的作者,则可以通过向后兼容性库迁移来添加您的库。
另一个额外的改进是通过 webpack 5 而非 webpack 4 来构建 JS bundle 包。
如何安装 Kotlin 1.5.0
如果您使用的是 IntelliJ IDEA 或 Android Studio,它会建议在版本发布后自动更新 Kotlin 到 1.5.0。 您也可以按照说明手动更新。
您仍然可以下载这些 IDE 的最新版本以保证对 Kotlin 的全面支持:
- 用于为不同平台开发 Kotlin 应用程序的 IntelliJ IDEA。
- 用于开发 Android 和跨平台的移动应用程序的 Android Studio。
确保您已将 kotlinx 库更新到兼容版本,并在现有项目的构建脚本中指定 Kotlin 版本为 1.5.0
。
如果需要命令行编译器,请在 GitHub 版本页面下载。
如果遇到任何问题
Kotlin 1.5 在线活动
参加 5 月 25 日的 Kotlin 1.5 在线活动,Kotlin 团队将回答您对最新版本的所有问题。 您可以询问任何想知道的事情,或者您没有任何问题,只对回答感兴趣,那也不错。 活动将持续1.5小时。
通过 #kotlin15ask
在 Twitter 上发布您的问题,或在表格中添加你的问题。
我们还将于 5 月 27 日至 28 日在 Reddit 上进行 “Ask Me Anything”(AMA) 讨论,以处理所有未解决的问题,同时也会回答新问题。
兼容性
与所有主要版本一样,某些先前宣布的变更的弃用周期将在 Kotlin 1.5.0 版本结束。 所有这些情况都经过了语言委员会的仔细审查,并在 Kotlin 1.5 兼容性指南中列出。 您也可以在 YouTrack 上浏览这些变更。
更多的观看及阅读材料
观看Kotlin YouTube:
- Kotlin 1.5.0 视频播放列表
- 订阅 Kotlin YouTube,避免错过有关协程和序列化库新改进的视频。
阅读 Kotlin 博客:
通过 Kotlin 文档了解更多信息:
外部贡献者
我们要感谢👏👏👏 所有外部贡献者,此版本中包含了他们的 Pull Request:
Jinseong Jeon, Mads Ager, Ivan Gavrilovic, pyos, Steven Schäfer, Iaroslav Postovalov, scaventz, Kristoffer Andersen, Bingran, Stefan Wolf, Victor Turansky, fjjohnchen, justin.wei, Nelson Osacky, Mikhail Galanin, Michael Hoisie, Kris Hall, Kevin Bierhoff, Jiaxiang Chen, Hung Nguyen, Cedric Champeau.
YouTrack 的最佳问题报告者
我们要感谢👏👏👏 社区的所有成员,他们通过向 YouTrack 报告问题帮助我们改进了此版本! 我们列出了前 20 名报告者,在此向他们致以衷心感谢:
Morgan Bartholomew (118 个问题); Marc Knaup (78 个问题); Ryan Nett (61 个问题); Louis CAD (48 个问题); Daniil Stepanov (44 个问题); AndroidDeveloperLB (39 个问题); Victor Turansky (38 个问题); Jinseong Jeon (35 个问题); Zac Sweers (25 个问题); Łukasz Wasylkowski (22 个问题); Tianyi Guan (21 个问题); Christoph Sturm (20 个问题); Axel Fontaine (19 个问题); Alexander Nozik (18 个问题); Robert Stoll (18 个问题); Björn Kautler (18 个问题); Róbert Papp (14 个问题); Andreas Malik (14 个问题); Lorenzo Neumann (14 个问题); Iaroslav Postovalov (14 个问题).
安装 Kotlin 1.5.0 并注册参加 Kotlin 1.5 在线活动!