KMM(Kotlin Multiplatform Mobile)Beta 版终于发布了!

经过漫长的迭代过程,Kotlin 团队终于在 2022 年 10 月 10 日发布了 KMM(Kotlin Multiplatform Mobile)技术的 Beta 版本(伴随 Kotlin 1.7.20 版本),最明显的改进点无疑是 New Memory Management 技术也进入到 Beta 版本状态,可以说是比较稳定了!

KMM 开发者的苦恼

长期以来,使用 Kotlin Multiplatform 技术进行开发时,Kotlin/Native 程序所使用的内存管理模型(Legacy Memory Management)给开发者带来了很多的困惑,还记得我当时入门 KMM 的时候,经常被 kotlin.native.concurrent.InvalidMutabilityException: mutation attempt of frozenkotlin.native.IncorrectDereferenceException 异常搞的焦头烂额,当时还没有比较浅显易懂的文档来解决问题。

后来在了解了 freeze 机制并熟悉了 Stately 库以后,异常问题总算知道如何去解决了,但代码中满篇的 freeze、Atomic 类、IsoState 集合类等一些特殊元素的引入,也让人痛苦了许久!

现在的改进

现在,在使用 Kotlin 1.7.20 以上版本开发 KMM 项目时,默认会启用 New Memory Management,多线程之间的状态共享,变得简单多了,可以使用 Kotlin 语言在 JVM 上的基本规则,来处理多线程问题。

再也不需要 freeze、@SharedImmutable、@ThreadLocal 这样的语法了!

另外,Top Level 属性在 Legacy Memory Management 上的初始化问题(by lazy 可能造成 iOS App 崩溃)也得到解决,KMM 上的使用体验更接近 JVM 平台。

Beta 版本的发布,也意味着各类 API 趋于稳定,后续不会再有大幅度的修改了,也意味着可以更多地使用 KMM 技术进行 Android 和 iOS 端 App 的开发!

相关资料

本人有幸在 JetBrains 发布的视频中代表百度分享了百度在使用 KMM 技术上的一些经验,欢迎感兴趣的朋友前往相关网站查看!

Kotlin-Blog

Kotlin 官网英文原版博文:https://blog.jetbrains.com/kotlin/2022/10/kmm-beta/

Kotlin 官网中文翻译博文:https://blog.jetbrains.com/zh-hans/kotlin/2022/10/kmm-beta/

Bilibili 视频:https://www.bilibili.com/video/BV1kV4y1V7qV/

YouTube 视频:https://youtu.be/CngKDGBlFxk

Case

还有一篇之前写的文章,也发布在 Kotlin 官网上:《业务逻辑统一与 KMM 技术在百度的落地探索》

最后

再次祝愿 Kotlin Multiplatform 技术及和相关生态发展得越来越好!