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 frozen
和 kotlin.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 官网英文原版博文: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
还有一篇之前写的文章,也发布在 Kotlin 官网上:《业务逻辑统一与 KMM 技术在百度的落地探索》
最后
再次祝愿 Kotlin Multiplatform 技术及和相关生态发展得越来越好!