Skip to content

Commit

Permalink
ADD: october monthly
Browse files Browse the repository at this point in the history
  • Loading branch information
江军祥 authored and RicardoJiang committed Oct 24, 2023
1 parent 7314eaf commit 0b583f7
Showing 1 changed file with 80 additions and 0 deletions.
80 changes: 80 additions & 0 deletions hugo/content/news/kotlin-news-2023-10.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
---
title: Kotlin 技术月报 | 2023 年 10 月
date: 2023-10-30
tags: [技术月报]
---

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

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

## 最新动态
### Kotlin 1.9.20-RC 版本发布
[What's new in Kotlin 1.9.20-RC](https://kotlinlang.org/docs/whatsnew-eap.html)

Kotlin 1.9.20-RC 版本已发布,具体包括以下内容:

- K2 版本 Kapt 编译器插件的实验性支持
- 全新的 Kotlin 多平台项目模板,减少配置中的重复代码
- Kotlin 多平台插件添加了对 Gradle 配置缓存的完全支持
- Kotlin/Native 默认使用新版内存分配器
- Kotlin/Native 垃圾回收性能持续提升
- 添加了全新的 wasm-wasi 目标,并将原有的 wasm 目标重命名为 wasm-js
- 标准库添加了对 WASI API 的支持

### Kudos 发布
[https://github.com/kanyun-inc/Kudos](https://github.com/kanyun-inc/Kudos)

Kudos 是 Kotlin utilities for deserializing objects 的缩写。它可以解决使用 Gson、Jackson 等框架反序列化 JSON 到 Kotlin 类时所存在的空安全问题和构造器默认值失效的问题。

在使用常见的 JSON 序列化框架解析 JSON 时,Kotlin 开发者通常会面临无参构造器和属性空安全的问题。我们通常的建议是使用 Moshi 或者 kotlinx.serialization。

不过,切换框架往往并不容易。kotlinx.serialization 不支持 Java,适合纯 Kotlin 项目使用;Moshi 虽然也同时支持 Java,但它在解析时与 Gson 这样的框架在细节上仍然有不少差异。

有没有什么办法为 Gson 这样的框架提供类型空安全和支持主构造器的参数默认值的能力呢?答案就是 Kudos。

### [Touchlab 开源项目更新](https://touchlab.co/touchlab-open-source-updates-sep-2023)


## 精选博客
### [Kotlin版本升级到1.9.0,需要做这些事...](https://mp.weixin.qq.com/s/93rJop2StBlKVLbUMrp0Hg)
本文记录了通用项目工程 Kotlin 版本由 1.7 升级到 1.9 版本的适配要点,落实到具体的项目工程需要具体处理其中的细节问题,具体包括以下内容:

- KAE 插件正式废弃,迁移到 ViewBinding
- KAPT 默认启用 JVM IR,当前需要关闭
- 外部枚举类external enum已弃用,新业务请使用外部密封类 external sealed

### [今日好奇:ChatGPT的Android端是用什么写的?](https://juejin.cn/post/7286632584149581885)
ChatGPT 自发布以来一直非常火爆,并已发布了 Android 版本,本文通过 LibChecker 等工具分析对比了 ChatGPT 与 文心一言 Android 版本的技术栈。

经过分析,ChatGPT Android 版本主要基于 Jetpack Compose 构建,而文心一言仍然基于传统的 Android View 构建。可以看出,Jetpack Compose 在国外已经相当流行了,而在国内仍然有相当的发展空间。

| ChatGPT | 文心一言 |
|-------------------------------------------------------------------------------|-------------------------------------------------------------------------------|
| ![](https://raw.gitmirror.com/RicardoJiang/resource/main/2023/october/p1.jpg) | ![](https://raw.gitmirror.com/RicardoJiang/resource/main/2023/october/p2.jpg) |

### [Kotlin的语法糖到底有多甜?](https://juejin.cn/post/7258970835044827192)
目前 Kotlin 开发者大多是 Android 开发者,而本文介绍了作者使用 Kotlin 进行后端开发的经验。他在过去一年中使用 Kotlin 进行开发,作者发现 Kotlin 在开发效率方面有显著优势,比较之下,后续不再想使用 Java 进行代码开发了。因此,他希望通过分享 Kotlin 的优点来吸引更多人使用这种语言。

本文主要介绍了 Kotlin 的一些语法糖,包括:

- Kotlin 基础常用特性
- Kotlin 常用内置函数
- Kotlin 扩展函数与扩展属性
- Kotlin的容器

## 精选视频
### 如何使用 Kotlin Timing API
[How to Use Kotlin's Timing API](https://www.youtube.com/watch?v=VRxp3DD-ULQ)

```kotlin
fun main() {
val startTime = System.nanoTime()
someLongWork()
val endTime = System.nanoTime()
val duration = (endTime - startTime) / 1_000_000
println("Duration: $duration ms")
}
```

有时我们总要写一些类似上面的模板代码来计算某个函数的执行时间,但是这样的代码重复且冗长,Kotlin 的 Timing API 从 Kotlin 1.9 开始就稳定了,它提供了一些测量和指定时间的好方法。在本视频中,主要介绍了此 API 的主要功能,以便您可以像专业人士一样开始计算耗时与时间标记!

0 comments on commit 0b583f7

Please sign in to comment.