IntelliJ IDEA 2025.1 默认采用 K2 编译器,本文将概要介绍 K2 编译器的当前状态,分享其采用指标,重点介绍 2025.1 中的改进,并预告下一步的计划。
以下内容来自:K2 模式热点:2025.1 中的高采用率、更少的 Bug 和重大改进
我们建议您更新到最新的 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、多美元内插以及非局部_break_和_continue_中的保护条件。
- 嵌套类型别名。
- 对 Kotlin 中注解的使用场所默认值的改进。
- 上下文形参(不稳定)。
- 将具有内联类的函数暴露给 Java(不稳定)。
- 上下文相关解析的原型(不稳定)。
性能
2025.1 版本带来了显著的性能改进,2025.2 则在此基础上带来了进一步改进。
在 2025.1 中,高亮显示和_Find Usages_(查找用法)等操作变得更快、更灵敏。 为了准备 2025.2 版本,我们还提升了补全速度和内存使用情况,使日常编辑更加顺畅和高效。
这些更新是我们不断使 K2 模式更加强大的一部分。 我们将继续跟踪这些更改的影响,并在今年晚些时候分享更详细的指标。