为了帮助社区的小伙伴们更好地了解 Kotlin 相关的最新动态,咱们决定运用月报的形式,收拾展示最近一个月的 Kotlin 技能动态。

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

最新动态

Compose Multiplatform 1.6 版别发布

Compose Multiplatform 1.6 版别已发布,详细包含如下内容:

  • 更新了通用资源办理 API: 能够运用生成的 Res 对象在 Compose Multiplatform 代码中拜访资源
  • 引进了通用 UI 测验 API: UI 测验能够帮助您保证使用程序的行为符合预期,Compose Multiplatform 1.6 为此引进了通用 UI 测验 API
  • 添加了 iOS 辅佐功用支撑: Compose Multiplatform 现在为 iOS 提供支撑,使残障人士能够与 Compose UI 以与原生 UI 相同的舒适度进行交互
  • 带来了许多其他功用和改善: 包含对 Fleet 的 @Preview 注解的支撑,iOS 与桌面端的一些优化等

Ktor 2024 路线图发布

Ktor 是一个轻松构建联网使用(web 使用、 HTTP 服务、 移动使用以及浏览器使用)的结构。Ktor 2024 路线图已发布, Ktor 团队将继续坚持结构轻量级、灵敏和透明,进步功用质量和功能,扩展Ktor插件生态体系,详细包含如下内容:

  • 新功用:
    • 引进OpenTelemetry插件,用于生成和收集遥测数据。
    • 集成gRPC,支撑创建和消费基于gRPC的服务。
    • 在Ktor 3.0.0中迁移到Kotlinx-io库,以支撑多渠道。
    • 添加对办理业务的支撑,简化数据库拜访。
    • 简化依赖注入,支撑集成像Koin这样的结构。
  • 改善Ktor开发:
    • 改善文档,提供更全面、更易于了解的教程和指南。
    • 引进插件注册表,支撑第三方Ktor插件。
    • 发布一个命令行工具,以便在终端或Shell中创建和修正Ktor项目。

Kotlin 1.9.23 版别发布

Kotlin 1.9.23 已在 GitHub 中标记并更新。查看其间包含的一切内容:github.com/JetBrains/k…

精选博客

Kotlin Multiplatform 初探

众所周知,Kotlin 是一门跨渠道的言语,它能够在 JVM、Android、iOS、Web、Native 等多个渠道上运行。Kotlin Multiplatform 是 Kotlin 的一个重要特性,它能够让咱们在一个项目中编写一份代码,然后在多个渠道上运行。本文将带你初探 Kotlin Multiplatform。详细包含如下内容:

  • Kotlin Multiplatform 是什么?
  • KMP的优势是什么
  • 一个简单的demo
  • KMP 完成原理
  • KMP生态
  • 业界事例

Compose 2023 运用情况查询

State of Compose 2023

Compose 的推出已经有一段时间了,那么在 2023 年 Compose 的运用情况究竟怎么呢?本文一项针对 165 名参与者问询其 Compose API 知识和运用情况的查询结果,它涉及了Compose API的运用和知道,包含状况办理、副作用、动画效果的痛点,以及不同的库和结构。报告还探讨了Compose在导航、测验、图画加载和组件库方面的应战。此外,查询还包含了开发者对Compose的满意度、缺失功用以及学习资源。

Kotlin 技能月报 | 2024 年 3 月

怎么测量与剖析 Kotlin/JS 包体积

Kotlin/JS 的原理是将 Kotlin 代码编译成 JavaScript,而要将 Kotlin/JS 用于生产环境,合适的包体积大小至关重要。较小的 JavaScript 包体积有助于提高网站的加载速度和功能。本文介绍了两种怎么测量您的 Kotlin/JS 包体积大小并可视化库和类的影响。

Kotlin 技能月报 | 2024 年 3 月

Kotlin 的 -Xjdk-release 标签怎么影响编译

Kotlin’s JDK release compatibility flag

val widget = edit.widgets.removeFirst()

在将编译 SDK 版别设置为 Java 21,jvmTarget 版别设置为 1.8 的情况下,以上代码运行时发生了 NoSuchMethodError 反常的问题。

本文剖析主要原因在于 Java21 中 List 接口新增了 removeFirst 办法,而成员函数优化级默认高于扩展函数,导致引证到了高版别 Jdk 的办法。

而 jvmTarget 没有生效的原因是因为 jvmTarget 仅仅控制编译器生成的字节码的版别,而不是用于指定体系核心类库的位置(需求经过 -bootclasspath 参数来指定)。

在 Kotlin 1.7 之后,咱们能够经过-Xjdk-release参数来一致-source,-target,-bootclasspath的版别,然后防止相似的问题。

kotlin.targets.withType(KotlinJvmTarget::class.java) { target ->
  target.compilations.configureEach {
    it.kotlinOptions.freeCompilerArgs += listOf(
      "-Xjdk-release=$javaVersion",
    )
  }
}

精选视频

【榨干 Kotlin】把函数当类用,Compose 风骚的作用域机制

Compose 是用 Kotlin 写的,它享受了 Kotlin 的便利,但也要承受 Kotlin 的约束。它用 Kotlin 的函数来完成了界面组件,就继承了「函数不具备作用域」的缺点。

咱们该怎么约束某些公开的属性或者函数只能在特定的函数内部才能被运用呢?本视频介绍了 Compose 是怎么经过高阶函数、隐式 receiver 和 DslMarker 注解等方法,解决函数作用域办理的问题的。

社区活动

上海 KUG 线下活动回放

上海 KUG 新年首场开发者线下活动交流会已于 3 月 1 日成功举行。本次活动邀请了多位 Kotlin 开发者,分享了他们在 Kotlin 开发中的心得体会。活动回放视频已上传至 B 站,欢迎我们观看: