Kotlin 1.5.0 – 2021 年的首个大版本
欢迎新版本计划表的第一个功能版本 —— Kotlin 1.5.0!
新版本计划表
https://blog.jetbrains.com/kotlin/2020/10/new-release-cadence-for-kotlin-and-the-intellij-kotlin-plugin/
Kotlin 1.4.30
https://blog.jetbrains.com/zh-hans/kotlin/2021/04/kotlin-1-4-30/
IntelliJ IDEA
https://www.jetbrains.com/idea/download/#section=mac
Roman Elizarov
https://twitter.com/relizarov
Svetlana Isakova
https://twitter.com/sveta_isakova
https://pages.jetbrains.com/kotlin-online-event-2021
在这篇文章中,您将会看到以下内容的概述:
稳定的语言特性 —— 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
https://www.jetbrains.com/idea/download/
Android Studio
https://developer.android.google.cn/studio
稳定的语言特性
1.4.30 中提供预览
https://blog.jetbrains.com/zh-hans/kotlin/2021/04/kotlin-1-4-30/
对 JVM records 的支持以及保持和 Java 最新特性—— record 类的互操作性。要将 Kotlin 类编译为 Java 代码中的 record,将其声明为 data 类,并通过 @JvmRecord 注解标记:
record 类
https://openjdk.java.net/jeps/395
@JvmRecord data class User(val name: String, val age: Int)
您可以访问相关文档,了解使用 JVM records 所需条件的更多信息:
https://kotlinlang.org/docs/jvm-records.html#requirements
密封接口 sealed 修饰符在接口与在类上的原理相同——密封接口的所有实现在编译时均为已知状态。
sealed interface Polygon
密封类的改进以前,所有子类都必须与密封类放在同一个文件中。现在它们可以位于相同编译单元和相同程序包的任意文件中。
内联类是只包含值为基础类型的类的子集。您可以用它们为某个指定类型的值进行封装,而不会因为内存分配而产生额外的开销。通过 value 修饰符进行声明。
值为基础类型的类
https://github.com/Kotlin/KEEP/blob/master/notes/value-classes.md
@JvmInline //required for the JVM backend value class Password(val s: String)
了解更多有关 Kotlin 1.5.0 语言特性的信息:
语言特性预览博文 https://blog.jetbrains.com/zh-hans/kotlin/2021/04/kotlin-1-4-30/
语言文档 https://kotlinlang.org/docs/whatsnew15.html#language-features
语言相关系列视频 https://space.bilibili.com/414846001/channel/detail?cid=183063
[Kotlin 1.5 新特性] 从内联类到内联值类
标准库及测试库的改进
Kotlin 1.5.0-RC https://blog.jetbrains.com/zh-hans/kotlin/2021/04/kotlin-1-5-0-rc-released/
标准库提供了许多有用的功能,包括:
用于无符号整数类型的新稳定 API,以及它们的范围,级数和函数。了解更多有关无符号整型的信息。
java.nio.file.Path 的扩展函数,以 Kotlin 惯用风格调用的现代非阻塞 Java IO。
String 和 Char API 的改进,包括用于更改字符串和字符大小写的新的与语言环境无关的 API,用于在字符及其整数代码和数值之间进行转换的一组新函数,以及更多兼容多平台的 char 函数。
Duration API 变动,包括内部使用 Long 值表示,并提供新的属性以获取 duration 的 Long 值。
无符号整型 https://kotlinlang.org/docs/basic-types.html#unsigned-integers java.nio.file.Path https://docs.oracle.com/javase/7/docs/api/java/nio/file/Path.html 非阻塞 Java IO https://docs.oracle.com/javase/8/docs/api/java/nio/package-summary.html
测试库带来了一系列重要的改进:
只需要在多平台项目的公共源集里对 kotlin-test 进行单次依赖。
当您指定唯一的 kotlin-test 依赖项时,会自动为 Kotlin/JVM 源集选择测试框架。
大量断言函数的更新。
了解更多有关库改善的信息:
带示例的库改善博文
https://blog.jetbrains.com/zh-hans/kotlin/2021/04/kotlin-1-5-0-rc-released/
What’s new in Kotlin 1.5.0
https://blog.jetbrains.com/kotlinlang.org/docs/whatsnew15.html#standard-library 视频
https://www.bilibili.com/video/BV1wy4y1x76a/
Kotlin/JVM
在 Kotlin 1.4.0 宣布的新 JVM IR 编译器已稳定,并成为默认项。在博文和文档中了解更多有关新编译器的信息。
SAM adapters 和 lambda 将编译为动态调用 (invokedynamic),这得益于最新的 JVM 特性。Kotlin plain lambdas 的编译是实验性的。
新的默认 JVM target: 1.8。而 1.6 target 已被弃用。
改进了对于 Java 中类型可空性信息的处理方式: https://blog.jetbrains.com/kotlinlang.org/docs/whatsnew15.html#improvements-to-handling-nullability-annotations
弃用 @JvmDefault 和旧的 Xjvm-default 模式:
https://blog.jetbrains.com/kotlinlang.org/docs/whatsnew15.html#deprecation-of-jvmdefault-and-old-xjvm-default-modes
宣布的新 JVM IR 编译器 https://blog.jetbrains.com/zh-hans/kotlin/2020/08/kotlin-1-4-released-with-a-focus-on-quality-and-performance-zh/ 稳定 https://kotlinlang.org/docs/components-stability.html 博文 https://blog.jetbrains.com/kotlin/2021/02/the-jvm-backend-is-in-beta-let-s-make-it-stable-together/ 文档 https://blog.jetbrains.com/kotlinlang.org/docs/whatsnew15.html#stable-jvm-ir-backend SAM adapters 和 lambda 将编译为动态调用 (invokedynamic)
https://blog.jetbrains.com/kotlinlang.org/docs/whatsnew15.html#sam-adapters-via-invokedynamic实验性的 https://kotlinlang.org/docs/components-stability.html
Kotlin/Native
Kotlin 1.5.0 提供了:
在 linuxX64 和 iosArm64 目标的调试模式下支持编译器缓存。当编译器缓存启用,除第一次调试编译外,大部分调试编译的速度都将更快。测量结果表明,我们测试项目的编译速度提高了 200%。
停用内置的内存泄漏检查器,以避免可能导致的应用程序崩溃问题。了解如何启用内存泄漏检查器 (如有必要)。
编译器缓存 https://blog.jetbrains.com/kotlin/2020/03/kotlin-1-3-70-released/#kotlin-native 编译器缓存 https://blog.jetbrains.com/kotlinlang.org/docs/whatsnew15.html#performance-improvements 启用内存泄漏检查器https://blog.jetbrains.com/kotlinlang.org/docs/whatsnew15.html#deactivation-of-the-memory-leak-checker
Kotlin/JS
新 Kotlin/JS IR 编译器迈向 Beta
https://youtrack.jetbrains.com/issue/KT-42289
KVision
https://kvision.io/
fritz2
https://www.fritz2.dev/
doodle
https://github.com/nacular/doodle
IR 编译器
https://kotlinlang.org/docs/js-ir-compiler.html
通过向后兼容性库迁移
https://kotlinlang.org/docs/js-ir-compiler.html
webpack 5
https://webpack.js.org/blog/2020-10-10-webpack-5-release/
如何安装 Kotlin 1.5.0
IntelliJ IDEA https://www.jetbrains.com/idea/download/ Android Studio https://developer.android.google.cn/studio 说明 https://kotlinlang.org/docs/releases.html
用于为不同平台开发 Kotlin 应用程序的 IntelliJ IDEA。
用于开发 Android 和跨平台的移动应用程序的 Android Studio。
兼容版本
hhttps://kotlinlang.org/releases.html
GitHub 版本页面
https://github.com/JetBrains/kotlin/releases/tag/v1.5.0
如果遇到任何问题
Slack
http://kotlinlang.slack.com/
获取邀请
hhttps://surveys.jetbrains.com/s3/kotlin-slack-sign-up
YouTrack https://youtrack.jetbrains.com/issues/KT
Kotlin 1.5 在线活动
https://pages.jetbrains.com/kotlin-online-event-2021
兼容性
Kotlin 1.5 兼容性
https://kotlinlang.org/docs/compatibility-guide-15.html
YouTrack
https://youtrack.jetbrains.com/issues/KT
更多的观看及阅读材料
观看 Kotlin YouTube:
Kotlin 1.5.0 视频播放列表:
https://youtube.com/playlist?list=PLlFc5cFwUnmySUsgUV90sZccj4U8XnsK_ 订阅 Kotlin YouTube,避免错过有关协程和序列化库新改进的视频:
https://www.youtube.com/channel/UCP7uiEZIqci43m22KDl0sNw?sub_confirmation=1
阅读 Kotlin 博客:
Kotlin 1.5.0 语言特性预览:
https://blog.jetbrains.com/zh-hans/kotlin/2021/04/kotlin-1-4-30/ Kotlin 1.5.0 标准和测试库改进:
https://blog.jetbrains.com/zh-hans/kotlin/2021/04/kotlin-1-5-0-rc-released/ 新的 JVM IR 后端:
https://blog.jetbrains.com/kotlin/2021/02/the-jvm-backend-is-in-beta-let-s-make-it-stable-together/ 改善 IntelliJ IDEA 对 Kotlin 的支持:
https://blog.jetbrains.com/zh-hans/kotlin/2021/04/kotlin-ide-2021-1/
通过 Kotlin 文档了解更多信息:
Kotlin 1.5.0 新鲜事
https://kotlinlang.org/docs/whatsnew15.html Kotlin 1.5.0 兼容性指南
https://kotlinlang.org/docs/compatibility-guide-15.html
外部贡献者
YouTrack 的最佳问题报告
即刻安装 Kotlin 1.5.0:
推荐阅读