为了协助社区的小伙伴们更好地了解 Kotlin 相关的最新动态,我们决定运用月报的方法,收拾展现最近一个月的 Kotlin 技能动态。

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

最新动态

Kotlin 1.9.20-Beta 发布

What’s new in Kotlin 1.9.20-Beta

Kotlin 1.9.20-Beta 版别已发布,详细包含以下内容:

  • 全新的 Kotlin 多渠道项目模板,减少装备中的重复代码
  • Kotlin 多渠道插件增加了对 Gradle 装备缓存的彻底支撑
  • Kotlin/Native 默认运用新版内存分配器
  • Kotlin/Native 废物收回功用持续提高
  • 增加了全新的 wasm-wasi 方针,并将原有的 wasm 方针重命名为 wasm-js
  • 标准库增加了对 WASI API 的支撑

Dagger/Hilt 支撑 KSP

github.com/google/dagg…

Dagger 2.48 版别发布,供给了对 Dagger 和 Hilt KSP 处理器的支撑。

为了运用 Dagger 的 KSP 处理器,首要需求完成以下作业:

  • 按照基本设置,将 Dagger 的处理器从 kapt 迁移到 ksp。
  • 将任何 Dagger SPI 插件迁移到新的 Dagger SPI 插件 API。
  • 保证没有 Kapt 处理器生成需求与 Dagger 交互的类。

需求留意的是,Dagger 的 KSP 处理器仍处于 alpha 阶段,官方现在首要重视的是保证正确性而不是优化功用,在运用的过程中有任何问题都可及时向官方反应

TouchLab 开源 SKIE 项目

SKIE is Open Source

SKIE 是 TouchLab 开源的 Kotlin 多渠道桥接 Swift API 的工具,经过该工具,能够生成 Swift 友爱的 API.

SKIE 经过为 Kotlin 编译器创立的 Objective-C 头文件生成 Swift 包装器来进步 Kotlin 和 Swift 之间的互操作性。它重新创立了两种言语都支撑的功用,这些功用在从 Kotlin 到 Objective-C 再到 Swift 的转化中丢失了,例如:

  • 详尽的密封类和真实的 Swift 枚举。
  • 默认参数
  • 无缝的suspend函数与flow

ktlint 发布 1.0.0 版别

github.com/pinterest/k…

ktlint 是被广泛运用的 Kotlin lint 库,总算发布了 1.0.0 版别,其中包含新功用和一些严重更改,概况可见以上链接。

Jetpack Paging 支撑 Kotlin 跨渠道

developer.android.com/jetpack/and…

Jetpack Paging 3.3.0-alpha02 版别增加了对 Kotlin 跨渠道的支撑,现在已支撑 android, Jvm, iOS, macOS, linux 渠道。这在很大程度上要归功于此前 CashApp 开源的 multiplatform-paging 项目的上游作业。

Paging 库也成为继 Annotations, Collections, DataStore 之后又一个支撑 KMP 的 Jetpack 库。

Kotlin 重返 TIOBE 指数前 20 位

September Headline: Kotlin reenters the TIOBE index top 20

在 2023 年 9 月,Kotlin 再次挺进了 TIOBE 指数前 20 位,此前 Kotlin 在 2017 年 Google/IO 大会上被宣告为 Android 开发的一级言语时也曾达到过这一排名。经过 6 年的发展,Kotlin 树立起了一个稳定的社区,逐步兴起并赢得了大批的忠诚拥趸。

关于此次 Kotlin 再次杀进 Top 20,TIOBE 首席执行官 Paul Jansen 以为 Kotlin 这次的兴起可能会更有力,因为其用户群体经过这 6 年早已不是 2017 年的规划了。

Kotlin 技术月报 | 2023 年 9 月

精选博客

Java切换到Kotlin,Crash率上升了?

众所周知,Kotlin 比较 Java 的一大优势便是空安全,因而从 Java 切换到 Kotlin 理论上稳定性将有所提高。

不过本文作者在将一个 Java 老项目运用 Kotlin 重构上线后却发现 Crash 率有所上升。而大部分 Crash 发生在 Java 调用 Kotlin 的函数里,本文分析了详细的 Crash 场景以及一些规避方法。

Kotlin 技术月报 | 2023 年 9 月

架构等级的 Kotlin linter: Konsist,了解一下

Refactoring Multi-Module Kotlin Project With Konsist

或许你早就知道文件等级的 Kotlin linter,例如 Ktlint,Detekt,它们能够检测出文件中的代码风格,命名标准,代码复杂度,代码坏滋味等问题。

而 Konsist 则是架构等级的 Kotlin linter,幻想一下你有如下代码检查需求:

  • 每个 ViewModel 的子类文件名有必要以 ViewModel结束
  • @Repository注解的类有必要存放在..repository..包名下
  • presentation层的类(存放在presentation包名下)只能访问domain层的类(存放在doomain包名下)
  • 每个UseCase类的构造函数参数都按字母顺序排列

总得来说,Konsist 解决的就是这类问题,经过这种方法能够提高架构中各个层级代码结构的标准性和统一性。

本文介绍了怎么运用 Konsist 重构一个多模块 Kotlin 项目,怎么让写在不同模块的同一层级的代码,遵循同一标准与风格。

运用 Kotlin 高档特性与技巧写出更好的代码

Getting Better with Kotlin — Exploring Advanced Features and Effective Coding Strategies

Kotlin 不仅供给了简洁的语法和与 Java 的无缝交互性,还拥有一系列高档功用,能够提高编码体会。本文介绍了 Kotlin 的一些高档特性与实用技巧。

  • Inline Classes: 更加紧凑的抽象
  • Type Aliases: 增强可读性
  • Sealed Classes: Kotlin 版枚举
  • 属性代理:更加优雅的管理属性读写
  • 带有 Lambda 的 DSL: 构建用于特定于范畴的言语
  • 运算符重载: 增加个人风格

经过 Kotlin 协程轻松完成接连顺次弹窗需求

怎么经过Kotlin协程, 简化”接连顺次弹窗(Dialog行列)”的需求

有时我们会有接连顺次弹窗的需求,即上一个弹窗封闭后再弹出下一个弹窗,这种需求假如运用回调来做很容易陷入回调地狱,利用 Kotlin 协程能够轻松完成相似的需求

lifecycleScope.launch {
    showDialog("报到活动", "报到领10000币") // 直到dialog被封闭, 才会持续运行下一行
    showDialog("新手使命", "做使命领20000币") // 直到dialog被封闭, 才会持续运行下一行
    showDialog("首充奖励", "首充6元送神装")
}
suspend fun showDialog(title: String, content: String) = suspendCancellableCoroutine { continuation ->
    MaterialAlertDialogBuilder(this)
        .setTitle(title)
        .setMessage(content)
        .setPositiveButton("我知道了") { dialog, which ->
            dialog.dismiss()
        }
        .setOnDismissListener {
            continuation.resume(Unit)
        }
        .show()
}

从服务端到客户端,一次 Ktor 的跨端实践

常常运用 Kotlin 写项目的人应该都对 Ktor 这个结构不陌生,它严格意义上不仅仅是个网络结构,而是一个能够创立异步,高功用和轻量级的 Web 服务的结构,简略的来说它既能写服务端也能写客户端。本文介绍了怎么一步步运用 Ktor 来写服务端代码,并在客户端运用 Ktor 对它建议网络请求,详细包含以下内容

  1. 服务端怎么创立 Ktor 项目
  2. 服务端 Ktor 项目结构介绍
  3. 运用 Ktor 开发第一个接口
  4. 客户端运用 Ktor 请求接口

总得来说,运用 ktor 能够一起进行服务端与客户端的开发,给个人 Kotlin 开发者供给了一种全栈的技能计划

精选视频

运用 Kotlin 操练算法技巧

Practice Technical Interview Algorithms in Kotlin

在 IDEA 或者 Android Studio 上装置Jetbrains Academy插件后就能够翻开Algorithmic Challenges in Kotlin课程,然后就能够体会在 IDEA 上运用 Kotlin 写算法题。

该课程能够协助参与者为编码面试做好准备,并供给对算法技能的扎实了解。

  • 掌握 30 多种算法,包含暴力算法、贪心算法、分而治之和动态规划等内容。
  • ‍ 直接在 JetBrains IDE 中操练,便利调试。解决一系列精心挑选的编码应战,包括算法面试中最流行的主题。
  • 运用 Kotlin(一种现代多渠道编程言语)完成您的解决计划。

Kotlin 技术月报 | 2023 年 9 月

Android 深化了解协程

Android 深化了解协程 BaguTree周六茶话

Kotlin 协程在 Android 中的应用十分广泛,本视频首要从协程解决了什么问题,协程的要害角色分析,结合源码解析协程常见问题等角度深化介绍了协程的运用与原理

Kotlin 技术月报 | 2023 年 9 月