Kotlin 技术月报 | 2025 年 2 月

为了帮助社区的小伙伴们更好地了解 Kotlin 相关的最新动态,我们决定使用月报的形式,整理展示最近一个月的 Kotlin 技术动态。

月报的主要内容包括:整理展示最近一个月的最新技术动态,精选博客,精选视频以及社区活动等方面的信息。

最新动态

OpenAI vs. DeepSeek: 哪个 AI 更懂 Kotlin?

OpenAI vs. DeepSeek: Which AI Understands Kotlin Better?

JetBrains Research 测试了包括 DeepSeek--R1 和多个 OpenAI 模型在内的人工智能模型对 Kotlin 的理解能力,使用了 KotlinHumanEval 和新的 Kotlin_QA 基准测试。用于对比评测哪个 AI 更懂 Kotlin。

Kotlin 2.1.10 已发布

2.1.10 已在 GitHub 上发布。在以下链接中查看此新版本附带的功能的完整列表:github.com/JetBrains/k...

Kotlin Multiplatform 工具 -- 改变方向

JetBrains 曾计划基于 Fleet 平台打造 Kotlin Multiplatform 独立 IDE,以推动 KMP 应用发展。但客户期望在 IntelliJ Platform(如 IntelliJ IDEA、Android Studio )获得 KMP 支持,加之应用开发方式变革,Google 也正式在 Android 上支持 KMP。

因此,JetBrains 改变策略,未来专注于在 IntelliJ Platform 增强 KMP 支持,3 个月内停止 Fleet 对 KMP 的支持,不再发布 KMP 独立 IDE。团队感谢试用用户的反馈,称将利用技术为开发者提供更好体验。

Kotlin 近期动态

Kodee's Kotlin Roundup: Fresh Picks to Begin 2025

本文主要介绍了 Kotlin 在 2025 年初的一系列新动态,具体包括如下内容:

  • Kotlin 版本更新:Kotlin 2.1.0 于去年年底发布,带来众多新特性和改进;Kotlin 2.1.20-Beta2 也已推出,包含性能改进和 bug 修复。
  • Kotlin Multiplatform 新服务:JetBrains 推出 klibs.io,方便发现 Kotlin Multiplatform 库,目前处于 Alpha 阶段。
  • 采用 Kotlin Multiplatform 的理由:有指南展示采用 Kotlin Multiplatform 在新老项目中的好处,如精简开发、广泛平台支持和强大工具生态等。
  • Kotlin Multiplatform 竞赛结果:公布了竞赛的三位获奖者,分别是 TinyComposer、PayFlo 和 arandomroom 的创作者。
  • KotlinConf 2025:介绍了 KotlinConf 2025 的相关信息,包括社区交流、学习机会和工作坊等。
  • Kotlin YouTube 频道:介绍了频道中由不同人主持的精彩视频内容,可订阅 Kotlin Blog 获取更多更新。

精选博客

KMP iOS 编译速度慢,如何优化?

touchlab.co/touchlab-bu...

在开发 Kotlin/Native iOS 应用时,编译速度是一个常见的问题。除了 Kotlin 编译器本身构建性能问题之外,许多团队在 KMP 构建 iOS 项目时,因构建过多不必要架构,导致构建时间冗长。

  • 问题产生原因:KMP 构建涉及不同平台工具链,熟悉 KMP 与多平台构建的开发者较少。构建 iOS 应用有 3 种主要架构,同时构建会大幅增加时间,而实际常只需构建一种。
  • Gradle 构建优化:Gradle 构建默认执行所有架构和版本的构建任务,可通过指定特定任务,如linkDebugFrameworkIosSimulatorArm64 减少构建量。也能自定义 Gradle 任务,仅执行所需的 Android 或其他平台构建任务。查看 Gradle 构建日志(-i参数开启详细日志),能判断是否构建了多余架构。
  • SPM 和 XCFrameworks 构建要点:KMP Gradle 插件构建 XCFrameworks 时,assembleXCFramework任务会构建所有架构。
  • CI 构建优化:CI 构建时,应依据 Mac 架构选择 iosSimulatorArm64Test 或 iosX64Test 等特定测试任务,避免运行 build 任务。

深入理解 Kotlin 协程异常处理

Why exception handling with Kotlin Coroutines is so hard and how to successfully master it!

异常处理可能是学习协程时最困难的部分之一。当我们使用 try-catch 或者 CoroutineExceptionHandler 捕获异常时,都可能会捕获不到导致线上问题。

本文描述了 Kotlin 协程异常捕获复杂性的原因,并为你提供一些关键点,这将有助于你对该主题有一个良好的理解。然后,你将能够在自己的应用程序中实现一个成功的异常处理基础架构。

应该使用 Kotlin Sequences 来提高性能吗?

Should you use Kotlin Sequences for Performance?

本文探讨了在 Kotlin 中不同方式对集合进行建模及操作的性能表现。介绍了 Collections(包括 List、Set 和 Map 等)、Sequences 和 Flow 三种集合模型的特点,并通过基准测试比较了它们在执行链式操作时的性能。

python 复制代码
fun getItemsList(): List<UiModel> {
return Db.getItems()
    .filter { it.isEnabled }
    .map { UiModel(it.id) }
    .filter { true }
    .map { UiModel(it.id) }
    .filter { true }
    .map { UiModel(it.id) }
    .filter { true }
    .map { UiModel(it.id) }
}

数据对比后可以发现,Sequences 在速度上相比 Collections 并没有什么优势,由于其懒加载特性,Sequences 在内存占用上应该会更优。因此当考虑性能时,应根据具体场景选择合适的集合模型。

精选视频

Compose 热重载是如何实现的?

How 'Hot Reload' is implemented for Compose

JetBrains 团队为了解决 Kotlin(尤其是 Compose)开发中频繁修改代码需重启应用的问题,开发了 Compose Hot Reload 工具,本视频主要介绍了 Compose 热重载的实现原理。

  • 动态类重定义:基于 DCEVM(Dynamic Code Evolution VM),支持动态类重定义(允许新增方法、字段等结构性变更) 字节码分析 和 依赖追踪,实现了近乎无限制的代码热更新能力。其多进程架构和深度集成 Compose Runtime 的设计,使其在保留状态的同时,显著提升了开发效率。
  • 运行时字节码分析引擎:通过解析 Compose 组件的作用域并生成唯一哈希标识,动态追踪代码依赖关系,仅在哈希变化时精准刷新受影响的 UI 部分,实现高效热重载。
  • 状态保留:通过 Compose Runtime 的 remember 机制,在重载后保留状态。
相关推荐
工程师老罗4 小时前
如何在Android工程中配置NDK版本
android
Libraeking7 小时前
破壁行动:在旧项目中丝滑嵌入 Compose(混合开发实战)
android·经验分享·android jetpack
市场部需要一个软件开发岗位7 小时前
JAVA开发常见安全问题:Cookie 中明文存储用户名、密码
android·java·安全
JMchen1239 小时前
Android后台服务与网络保活:WorkManager的实战应用
android·java·网络·kotlin·php·android-studio
crmscs10 小时前
剪映永久解锁版/电脑版永久会员VIP/安卓SVIP手机永久版下载
android·智能手机·电脑
localbob10 小时前
杀戮尖塔 v6 MOD整合版(Slay the Spire)安卓+PC端免安装中文版分享 卡牌肉鸽神作!杀戮尖塔中文版,电脑和手机都能玩!杀戮尖塔.exe 杀戮尖塔.apk
android·杀戮尖塔apk·杀戮尖塔exe·游戏分享
机建狂魔10 小时前
手机秒变电影机:Blackmagic Camera + LUT滤镜包的专业级视频解决方案
android·拍照·摄影·lut滤镜·拍摄·摄像·录像
hudawei99610 小时前
flutter和Android动画的对比
android·flutter·动画
lxysbly12 小时前
md模拟器安卓版带金手指2026
android
儿歌八万首12 小时前
硬核春节:用 Compose 打造“赛博鞭炮”
android·kotlin·compose·春节