最近的Kotlin 1.4 正式版,貌似很牛逼!

开发者全社区

共 6083字,需浏览 13分钟

 ·

2020-10-22 05:18

作者:技术最TOP

链接:http://dwz.date/cfsk

在过去的几年里,我们一直在努力使 Kotlin 成为一种有趣、令人愉快且高效的编程语言。为了借助此版本的 Kotlin 继续追求这一目标,我们投入了大量精力和努力来提高 Kotlin 及其工具的性能和质量。我们也很兴奋地宣布支持多种新的语言功能,包括期待已久的 Kotlin 接口的 SAM 转换。



社区和生态系统
在过去 12 个月里,有超过 580 万人编辑了 Kotlin 代码,而且数量还在不断增长:
我们很高兴看到 Kotlin 变得越来越受欢迎!活跃用户的数量尤其鼓舞人心,我们将在未来的博文中详细介绍这一指标。这个数字比上一年增加了 1.5 倍。

根据 2020 StackOverflow 开发者调查,在最受专业开发者欢迎的编程语言中,Kotlin 已攀升至第 13 位,我们很高兴看到 Kotlin 成为最受喜爱的 5 种语言之一。

许多公司选择 Kotlin 作为他们的首选语言,并且已在所有平台上成功使用 Kotlin。我们很高兴看到这种趋势,并且非常感谢很多这样的公司提供了各种案例研究供社区阅读和学习。下面是一些最近使用 Kotlin 开发的优秀软件示例:
  • 服务器端:Atlassian、Adobe、ING Bank;
  • Android:Google Home、Duolingo、Zomato;
  • 多平台移动端:VMware、PlanGrid 和 CashApp、Mirego 的 Trikot;
  • Web:JetBrains 的 Space、Karhoo、MIPT 核物理方法实验室的 VisionForge。
我们的 Kotlin 社区也在迅速壮大。现在,超过 30,000 名 Kotlin 开发者在 Slack 和 Reddit 上交流知识并相互支持,同时超过 90,000 人关注了我们的官方 Twitter 帐号来获取提示、技巧和公告。Kotlin 社区在全球拥有超过 200 个用户小组,并且正在蓬勃发展。我们感谢所有人帮助传播信息、分享知识以及支持其他 Kotlin 开发者。大家创造的温暖而亲切的氛围让共同探索 Kotlin 成为一种愉快的体验。没有您,就不会有今天的 Kotlin。

Kotlin 1.4 在线活动

我们希望确保您拥有出色的 Kotlin 1.4 使用体验,并希望您对该语言的下一步发展有一个很好的了解。

专注于质量
此版本的重点是改善 Kotlin 的整体开发体验,包括提高 IDE 性能和稳定性。我们的目标是使 Kotlin 用户尽可能高效工作,并且我们专注于改进对用户最重要的功能,让他们在使用时更加满意!

我们检查和修复了超过 60 个性能问题,包括导致 IDE 冻结或内存泄漏的许多问题。在 Kotlin 1.4.0 的 EAP 阶段中,我们收集到许多积极反馈,这表明整体体验现在变得相当出色!

当您第一次处理项目并打开一个较大的 Kotlin 文件时,现在可以更快地看到高亮显示的内容。在大多数情况下,高亮显示的速度现在提高了 1.5-4 倍:

我们还大幅缩短了显示自动补全建议所花的时间。下图概述了 Kotlin 用户所经历的平均自动补全响应时间。补全时间超过 500 毫秒的情况几乎减少了一半:
请注意,这些最新更改(包括加速的代码高亮显示) 只能与 IntelliJ IDEA 2020.1+ 和 Android Studio 4.1+ 使用。

性能改进是一个持续的过程,我们还有更多增强计划,例如继续努力消除冻结以及使输入更加流畅。我们已开始集成新的实验性 Kotlin 编译器前端,这将进一步提高 IDE 的速度。这是一项艰巨的任务,需要重写插件的许多部分,但是它将提高 IDE 在许多方面的性能,包括代码补全、语法高亮显示和编译器错误报告。

IDE 新功能

JetBrains 的使命是让软件开发更加高效和有趣,因此我们自然希望确保围绕 Kotlin 打造的工具非常出色,并使 Kotlin 编码尽可能简单。

为了让您更轻松地使用协同程序,尤其是查明并发应用程序中的错误,我们引入了协同程序调试器。我们将扩展其初始功能集,以提供社区最需要的功能,因此请使用我们的渠道之一或在下面的评论部分中与我们分享您的反馈。

我们还引入了一个灵活的新 Kotlin Project Wizard。这个新向导为您提供了一个创建和配置不同类型的 Kotlin 项目的地方,即使使用更复杂的结构(例如多平台项目),也可以轻松上手。

Kotlin 1.4.0 添加了超过 40 项新的快速修复、意图和检查,它们将在您需要时提供帮助——修改代码时,按 Alt+Enter 可以查看在特定上下文中可用的功能。

新的编译器

很长一段时间以来,我们一直在开发一个新的 Kotlin 编译器,它将在性能和可扩展性方面进一步推动 Kotlin 的发展。新编译器的主要目标是变得更快速、统一 Kotlin 支持的所有平台,并提供用于编译器扩展的 API。我们将逐步引入新的部分,以便它们尽快到达用户手中。在 Kotlin 1.4.0 中,我们发布了几项正在进行的工作:
  • 更强大的新类型推理算法默认启用。它可以在更多用例中自动推理类型,即使在复杂的场景下也支持智能转换,改进了委托属性的推理,等等。
  • 新的 JVM 和 JS 后端以 Alpha 模式提供。一旦稳定下来,它们就会成为新的默认设置。
我们正在积极开发新的前端实现,它将在编译器管道中提供最大的性能提升。此前端是编译器的一部分,可以解析代码和名称、执行类型检查等,因此也会影响 IDE 的性能。。我们将在未来版本中提供它的预览,敬请关注!

语言功能
Kotlin 1.4 提供了许多新功能:
  • Kotlin 接口的 SAM 转换
  • 库作者的显式 API 模式
  • 混合命名和位置参数
  • 尾随逗号
  • 可调用的引用改进
  • 在循环的 when 内使用 break 和 continue
库改进
对于标准库,我们通常优先考虑的是提高跨不同平台和操作本身之间的一致性。在此版本中,Kotlin 标准库获得了新集合运算符、委托属性改进以及双端队列实现 ArrayDeque,等等。

您可以在“通用”代码中使用标准库,“通用”代码是指在不同的平台(即 Android 与 iOS 或 JVM 与 JS)之间共享的代码。我们将逐步扩展通用库,并向其添加或引入缺少的功能。

无论您是针对单一平台还是在多平台项目中工作,在任何 Gradle Kotlin 项目中,都不再需要声明与 stdlib 的依赖关系。从 Kotlin 1.4.0 开始,此依赖关系默认添加。

我们正在开发 Kotlin 生态系统的其他部分:
  • 我们正根据大家的反馈逐步改进 kotlinx.coroutines。
  • 序列化库越来越接近成熟。kotlinx.serialization 1.0.0-RC 版本今日发布!
  • 我们已经发布了 DateTime API 预览版,即处于实验阶段的 kotlinx-datetime 库。

Kotlin/JVM

我们鼓励您对常规项目试用新的 Alpha Kotlin/JVM 后端,并分享您的反馈!除了统一编译器管道外,这项工作还会帮助我们更快地将 Jetpack Compose 之类的编译器扩展引入 Kotlin 社区。

特定于 Kotlin/JVM 的语言功能:
  • 我们添加了新的实验方法,用于在字节码的接口中生成默认方法(对于 Java 8 目标)。
  • 我们为null 检查引入了统一的异常类型。
  • Kotlin现在可以在 JVM 字节码中生成类型注释,以便它们在运行时可以在 Java 反射中使用。该功能适用于目标版本 8 及更高版本,到目前只在实验模式下被发布。
Kotlin/JS
Kotlin 1.4.0 提供了新的 Gradle DSL 和 Alpha 版本的新 Kotlin/JS 编译器后端以及其他功能。
  • 新的 Gradle DSL 添加了对从 DSL 配置 CSS 和样式加载器的支持,它包括与 npm 依赖项管理相关的各种改进,并改进了对 Dukat 集成的控制。
  • 全新的 Kotlin/JS 编译器后端给 Kotlin/JS 指明了未来的方向。它包括优化和功能,例如从 Kotlin 代码自动生成 TypeScript 定义、更小的二进制文件和捆绑包、向 JavaScript 公开 Kotlin 功能的现代化方式,等等。
Kotlin/Native
Kotlin/Native 获得了大量新功能和改进,包括:
  • Kotlin/Native 编译和执行的整体性能提升。
  • Kotlin/Native 和 Swift / Obj-C 之间互操作性的改进。
  • 简化了 CocoaPods 依赖项管理。
Kotlin/Native 中的当前自动内存管理实现在并发方面存在限制,我们正在努力将其替换。

Kotlin/Native 的一个重点是可与 Kotlin Multiplatform Mobile 无缝集成,但不仅仅是这些。

Kotlin Multiplatform
让 Kotlin 成为出色的多平台解决方案是我们的首要任务之一。我们在 KotlinConf 上承诺进行一些重要改进,在此很高兴地报告我们的工作成果:
  • 得益于分层项目结构,您现在可以在目标的特定子集(例如类似的 iOS ARM64 设备目标和 x64 模拟器目标)之间共享代码。
  • 您可以使用在多个原生目标之间共享的通用代码中与平台相关的库。
  • 您可以在共享源集中仅指定一次依赖项,而不是在共享和平台专用源集中同一库的不同变体上指定依赖项。
  • 我们继续开发 Kotlin 库格式 Klib,这种格式在后台用于共享多平台库。
我们正在开发 Android Studio 插件,此插件可在 iOS 设备和模拟器上运行、测试和调试 Kotlin 代码。首个公开预览版将很快发布,敬请关注。

我们将很快发布在 Kotlin 社区成员帮助下创建的大量资料,这些资料解释了如何使用 Kotlin Multiplatform Mobile (KMM) 技术来针对特定的移动用例(在 Android 和 iOS 之间共享代码)。

尽管现在的重点是移动目标,但 JetBrains 已积极使用 Kotlin Multiplatform 的 Web 目标来构建和发布 JetBrains Space。Web 目标仍然是 Kotlin 的一项重要战略投资。

更多详细信息
您可以在 Kotlin 1.4 最新变化页面和文档中找到有关新功能的详细说明,并阅读更多关于迁移到 Kotlin 1.4 的信息。

与所有主要版本一样,某些先前宣布的变更的弃用周期将在 Kotlin 1.4 版本结束。所有这些情况都经过了语言委员会的仔细审查,并在 Kotlin 1.4 兼容性指南中列出。

如何帮助我们改进 Kotlin
IntelliJ IDEA 和 Android Studio 中的 Kotlin 插件会收集关于您如何使用其功能的匿名统计信息。我们恳请您选择提供这些统计信息!

这些匿名数据可极大地帮助我们更好地了解用户、哪些功能有效、哪些方面造成了困难以及我们应当将重点放在哪里。要启用统计信息,请转到 Preferences,打开 Appearance & Behaviour | System Settings | Data Sharing,然后激活 Send usage statistics 复选框。

自 Kotlin 1.3 以来最热心的问题报告者

我们要感谢社区的所有成员,他们通过向 YouTrack 报告问题帮助我们改进了此版本!我们列出了前 20 名报告者,在此向他们致以衷心感谢:
Igor Wojda(145 个问题);Louis CAD(87 个问题);Marc Knaup(86 个问题);AndroidDeveloperLB(83 个问题);Robert Stoll(68 个问题);Morgan Bartholomew(62 个问题);Victor Turansky(54 个问题);Guan Tianyi(51 个问题);Scott Pierce(38 个问题);Andreas Malik(37 个问题);Steven Schäfer(37 个问题);Björn Kautler(36 个问题);Róbert Papp(34 个问题);Toshiaki Kameyama(30 个问题);Nicholas Bilyk(29 个问题);Michael Bailey(26 个问题);Jake Wharton(25 个问题);Lamberto Basti(24 个问题);Serge Pro(23 个问题);Egor Andreevici(21 个问题)。

立即开始使用 Kotlin 1.4
和往常一样,您可以在 play.kotl.in 上在线试用 Kotlin。

在 Gradle 和 Maven 中,使用 1.4.0 作为编译器版本。请参阅 Gradle 和 Maven 的文档。

IntelliJ IDEA 和 Android Studio 会自动提示您将 Kotlin 插件更新为 1.4.0 版。您也可以打开 Preferences | Plugins 并手动更新 Kotlin 插件。

可以从 GitHub 版本页面下载命令行编译器。

您可以使用与此版本一同发布的以下库:
  • kotlinx.coroutines 版本:1.3.9
  • kotlinx.serialization 版本:1.0.0-RC
  • ktor 版本:1.4.0
  • kotlinx.atomicfu 版本:0.14.4
  • kotlinx.html 版本:0.7.2
  • kotlinx-nodejs 版本: 0.0.6
可以在相应的存储库中找到 kotlin-wrappers kotlin-react等)的库版本。

最新的 IDE 性能改进(包括加速的代码高亮显示) 只能与 IntelliJ IDEA 2020.1+ 和 Android Studio 4.1+ 使用。

如果您在新版本中遇到任何问题,可以在 Slack 上寻求帮助(在此处获得邀请)并在我们的 YouTrack 中报告问题。

谢谢!
非常感谢所有试用过 Kotlin EAP 和实验性功能并提供反馈的人。我们正在与您一起开发 Kotlin 语言,并根据您的宝贵意见做出许多设计决策。与社区保持这种快速有效的反馈循环对确保 Kotlin 成为最佳状态非常重要!

我们要衷心感谢所有外部贡献者,此版本中包含了他们的拉取请求。是你们帮助我们让此版本得以问世!


浏览 31
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报