News

K2 模式热点:2025.1 中的高采用率、更少的 Bug 和重大改进

Read this post in other languages:

IntelliJ IDEA 2025.1 默认采用 K2 模式,我们希望在这里分享 K2 模式的使用情况。 这篇文章将概要介绍 K2 模式的当前状态,分享其采用指标,重点介绍 2025.1 中的改进,并预告下一步的计划。

我们建议您更新到最新的 IntelliJ IDEA 版本,享受最佳的 K2 模式体验。

采用

目前采用 K2 模式的用户数量已经非常高,并且还在持续增长。 在 IntelliJ IDEA 2025.1 用户中,95% 的 Ultimate 开发者和 9% 的 Community Edition 开发者使用 K2 模式。

大多数用户都会在新版本发布后的几个月内更新 IDE,因此我们也跟踪了 2024.3 和 2025.1 版本的综合使用情况。 即使算上 2024.3 版的用户,K2 模式的采用率也已超过 76%,并且这一数字每周都在稳步增长。

感谢您的反馈

您的反馈是我们所有改进和增强的驱动力。

我们通过 YouTrack 问题Slack 消息讨论帖以及各种会议和聚会上的无数次面对面交流获得了宝贵的意见和建议,这些都直接影响了 Kotlin 支持的发展。

我们的专属支持团队每天都会审查和监控 YouTrack 报告,确保您提出的问题成功传达和解决。

您的反馈不仅能帮助我们解决问题,还将帮助我们塑造 Kotlin 工具的未来。 感谢您持续分享!

Bug 报告

这个最新版本发布后的前 3-4 周内提交的 bug 报告数量与 2024.3 版本发布后的数量相当。

其他反馈渠道也显示负面提及数量显著下降,总体情绪比预期更积极。

一些用户在 2024.3 和 2024.2 版本中使用 K2 模式。 我们强烈建议您更新到最新版本的 IntelliJ IDEA,因为 2025.1 版本在质量和功能完整性方面都为 K2 模式带来了巨大的改进。

我们来看看哪些内容有所更新。

2025.1 中的修正和改进:

  • 稳定性得到提高,意味着崩溃和冻结更少。
  • 超过 100 项检查和意图已得到改进并从 K1 模式迁移到 K2 模式。
  • 临时文件和脚本现在获得了更好的支持 (.kts)。
  • 错误报告中的误报(例如 Constructor expected(应为构造函数)和 Unknown symbol(未知符号))已被修正。
  • 应为 String? 但实际为 String 类型的错误不再错误显示。
  • 未使用的函数或属性现在获得一项检查。
  • .serializer() 获得高亮显示支持。
  • Create member from usage(从用法创建成员)快速修复现在可以按预期工作。
  • 频繁重新索引触发器已减少。
  • 项目切换缓存问题已解决。
  • 所有外部和内部主要插件现在都支持 K2 模式。
  • JetBrains Academy 集成功能齐全。 
  • 多种 Spring 支持改进已经实现。
  • K2 模式调试器已与其 K1 模式对等功能达到同等水平。

我们还改进了 K2 模式的许多其他方面。 查看我们的版本说明获取完整列表。

Move(移动)重构

在 K2 模式中,我们重写了 Move(移动)重构的运作方式。 现在,它更加可靠和可预测。 边缘情况会得到正确处理,生成的代码也更加清晰和准确。

2025.2 最新变化:

  • 常规代码补全改进。 
  • 类型匹配智能补全支持。
  • Spring 支持与 K1 模式相当。
  • 重构,例如针对文件和函数的 Convert Enum to Sealed Class(将枚举转换为密封类)、Extract Interface(提取接口)、Create test / Navigate to test(创建测试/导航到测试)、Rearrange Code(重新排列代码)。
  • 针对回归高亮显示的修正,包括 DSL、注解和 Kotlin 特定语法的一致行为。
  • 针对 Constructor expected(应为构造函数)和 Unknown symbol(未知符号)等误报错误的修正。 
  • Kotlin 脚本更可靠的执行,包括独立文件和 Gradle .kts 文件。
  • 脚本定义的正确加载和项目特定符号的正确解析。
  • 对使用 @DslMarker 注解的函数的正确识别和高亮显示。
  • 所有项目配置中更可靠的 Extract Interface(提取接口)重构。

还有更多变化,敬请期待!

协程检查

协程是我们最受欢迎也最常被提及的功能之一,但要正确使用可能并不简单,特别是对于新手来说。

我们正在设法使它们更易使用,并且已经引入不断增加的协程检查集。 它们可以捕捉常见问题、提供实用建议,并指导您更顺畅、更自信地编写正确且惯用的协程代码。 以下是我们通过这一举措解决的一些工单:

  • 关于在挂起函数中调用 runBlocking警告
  • 尽可能将 `kotlin.coroutine.coroutineContext` 访问替换为 `kotlinx.coroutines.currentCoroutineContext` 调用的检查
  • 未使用来自 kotlin.coroutines 的流时的检查
  • 在 ‘Deferred’ 对象集合上替换 ‘map { it.await() }’ with ‘awaitAll()’ 的检查
  • 在 ‘Job’ 对象集合上替换 ‘forEach { it.join() }’ with ‘joinAll()’ 的检查

对 Kotlin 2.2 功能预览的支持

Kotlin 2.2 将带来多种在 K2 模式下具有 IDE 支持的精彩新功能,包括:

  • when、多美元内插以及非局部 breakcontinue 中的保护条件。
  • 嵌套类型别名。
  • 对 Kotlin 中注解的使用场所默认值的改进。
  • 上下文形参(不稳定)。
  • 将具有内联类的函数暴露给 Java(不稳定)。
  • 上下文相关解析的原型(不稳定)。

性能

2025.1 版本带来了显著的性能改进,2025.2 则在此基础上带来了进一步改进。

在 2025.1 中,高亮显示和 Find Usages(查找用法)等操作变得更快、更灵敏。 为了准备 2025.2 版本,我们还提升了补全速度和内存使用情况,使日常编辑更加顺畅和高效。

这些更新是我们不断使 K2 模式更加强大的一部分。 我们将继续跟踪这些更改的影响,并在今年晚些时候分享更详细的指标。

后续计划

我们将继续完善和增强 K2 的架构,解决剩余的限制,并确保所有开发者获得稳定、可靠的体验。 您的反馈是帮助我们确定优先事项和改进重点方面的关键。

如果您有想法、建议或问题需要报告,欢迎通过 SlackYouTrack电子邮件与我们联系。

快乐编程!

本博文英文原作者:

Teodor Irkhin

Teodor Irkhin

image description

Discover more