Kotlin-Everywhere

在今年五月份的 Google I/O 大会上,Google 宣布了 Android 应用开发中 Kotlin 优先的战略,此后 Google 提供的 API(例如 Jetpack 工具库)将以 Kotlin 优先。大会结束后不久,Google 便联合 Jetbrains 在全球范围内推出了 Koltin/Everywhere 计划。Kotlin/Everywhere 计划 是由各地社区主导的一系列活动,旨在关注 Kotlin 在多平台上的潜力,并为学习 Kotlin 的基本要素与最佳实践提供帮助,包括但不限于 Android、服务端、前端和其他平台。

Kotlin-Everywhere Beijing

GDGBeijing-Kotlin-2

笔者有幸和一位朋友一起参加了北京 GDG 与 Kotlin 中文社区共同主办的 Kotlin/Everywhere Beijing ,这场活动的嘉宾阵容空前强大,台下观众高朋满座,各路大咖云集,可谓之国内规格最高的一场 Kotlin/Everywhere 活动。会议的全程录像可在 大咖说 回放。

日程安排

时间主题嘉宾
9:00-10:00签到入场-
10:00-10:10开场介绍韩国恺
10:10-10:50What’s New in KotlinSvetlana Isakova
10:50-11:30携程 Kotlin Multiplatform 工程实践陈琦
11:30-12:10潜力无限:Kotlin 用于服务端与 WebAssembly贾彦伟
12:10-13:40中午午休-
13:40-14:20Boost Your Productivity with Kotlin陈龙博
14:20-15:00Be Friends with kotlinc段建华
15:00-15:20下午茶歇-
15:20-16:00Kotlin High-Performance Programming朱涛3
16:00-16:40Kotlin Coroutine朱凯
16:40-17:20Kotlin 函数式编程乔禹昂

上午

我和朋友于九点半到达活动会场,会场签到处有 kotlin 主题的挎包、徽章、冰箱贴、贴纸等伴手礼,签到进场后发现观众席已落座 300 余人,便匆忙在一个靠中间的位置坐下,会场大屏播放着 Kotlin 相关的视频,视频中世界各地的开发者在表达着对 Kotlin 语言的喜爱,现场观众席也充斥着对 Kotlin 的探讨之声。

GDGBeijing-Kotlin-2

稍等了一会,活动主持人韩国恺(北京 GDG 核心组织者)便登台对本次活动的议程进行了介绍,同时简要介绍了 Kotlin 的发展史,紧接着便由 Jetbrains 技术步道师、Kotlin 编译器团队早期成员 、《Kotlin in action》的作者 Svetlana Isakova 开始了本次活动的第一场主题演讲 — What’s New in Kotlin

What’s New in Kotlin

GDGBeijing-Kotlin-3

Svetlana Isakova 向大家介绍了 KEEP — Kotlin Evolution and Enhancement Process ,表达出 JetBrains 重视开发者,乐于倾听开发者的反馈与心声。此外还介绍了一系列 Kotlin 的新特性,为开发者建立信心。

  • Inline classes
  • Contract
  • Channel
  • Flows

这些特性虽大多处于实验阶段,但它们所带来的效率提升的确值得期待。

携程 Kotlin Multiplatform 工程实践

GDGBeijing-Kotlin-4

接下来是携程机票研发部无线研发总监陈琦带来的 携程 Kotlin Multiplatform 工程实践 主题分享。

GDGBeijing-Kotlin-5

该主题讲述了携程跨平台使用 Kotlin 的实践进展,以及实践过程中所遇到的来自人员与技术方面的挑战和解决思路,同时讲述了 Kotlin 技术选型中的考察指标与验证方式,还有Kotlin Native 在内部研发工具方面的运用,可谓是干货满满。

潜力无限:Kotlin 用于服务端与 WebAssembly

GDGBeijing-Kotlin-6

上午最后一场是由蔚来汽车技术经理贾彦伟带来的 潜力无限:Kotlin 用于服务端与 WebAssembly 主题分享,该主题介绍了 Kotlin 在服务端开发领域相关的 Web 框架,DB 连接库等以 Kotlin 语言编写的基础设施,此外还介绍了 WebAssembly 的现状与 Kotlin 对 WebAssembly 的态度,同时对 Kotlin 的美好未来进行了一番畅想。

上午的会议在十二点一刻结束,我和朋友在附近转了转,一路边找饭馆边探讨,最后在一家小饭馆简单吃了些便匆匆赶回会场。

下午

回到会场的时间还早,我和朋友在前排挑了两个座位。随着参会人员的陆续返回,一会儿的时间前排座位就再次满座。

Boost Your Productivity with Kotlin

GDGBeijing-Kotlin-7

下午的第一场分享是由抖音 Android 工程师陈龙博(id:smallSoho)带来的 Boost Your Productivity with Kotlin ,陈龙博看起来是一个阳光活泼的大男孩,一上台就带动了现场的气氛,他在演讲中通过一些小例子来表达 kotlin 对开发者的友好和工作效率的提升,对还未使用 kotlin 的和 kotlin 的新手进行推广和指引。内容包括:

  1. data class
  2. 中缀表达式
  3. let apply also 等标准函数
  4. “真泛型”
  5. 集合操作的快捷方式
  6. 优雅的“DSL”
  7. Sequence [译]Kotlin中的龟(List)兔(Sequence)赛跑
  8. internal 关键字
  9. Anko
  10. Kotlin 编写 gradle 插件 McImage
  11. Kotlin 编写 .kts 脚本代替 python 脚本

Be Friends with kotlinc

GDGBeijing-Kotlin-8

第二场是由知名博主段建华(id:技术小黑屋 )带来的 Be Friends with kotlinc 主题分享,他对 kotlin 的编译工具kotlinc 进行了讲解,通过反编译方式解释了 kotlin 非空类型、reified 泛型增强等特性在 kotlinc 中的实现方式,同时给出了 kotlinc 编译速度优化的一些方案(如 kapt build cache、worker api、compile avoidance、incremental build 等);此外还介绍了一系列 kotlin 为兼容 Java 所提供的注解,如@JvmName 等。

前两场分享结束后迎来了二十分钟的茶歇时间,会议举办方提供了丰富的点心和饮品供参会者品用,不得不说北京GDG真的给力!

Kotlin High-Performance Programming

GDGBeijing-Kotlin-9

品尝了点心和咖啡后再次回到会场,接下来是陌陌工程师朱涛带来第三场名为 Kotlin High-Performance Programming 的主题分享。

朱涛为大家介绍了 kotlin 的甜(语法糖)与盐(性能陷阱),同时给出了众多的 kotlin 陷阱规避 tips,堪称 Kotlin 效率编程实用宝典。此外,朱涛还介绍了他所建立的 kotlin lint ,但目前 lint 规则有限,且维护人员较少,期待后续有更好的发展并开源出来。

Kotlin 的协程 Coroutines

GDGBeijing-Kotlin-10

下午第四场是由 Android 老司机、HenCoder 创办人、知名博主朱凯(id: 扔物线)带来的 Kotlin 的协程 Coroutines主题分享。

GDGBeijing-Kotlin-11

朱凯的台风四平八稳,讲课技巧高超,循循善诱的为大家讲解了 kotlin 协程与 suspend 关键字的来龙去脉,确实解决了 kotlin 初学者不少的疑惑。

Kotlin Functional Programming

GDGBeijing-Kotlin-12

下午第五场也是本次活动的最后一场分享由来自 OkCoin 的工程师、Kotlin 中文网译者、Kotlin 中文社区运营 乔禹昂带来的 Kotlin Functional Programming 主题分享。

乔禹昂是一名资深的函数式编程爱好者,他从 Java 中的 lambda 到 kotlin 中的函数一一进行了讲解,演示了 kotlin 函数式编程的一些方式,并对 kotlin 中内联函数 inline 的使用提出了编译器限制和指定性意见,最后还总结了函数式编程的优势,也是充满干货的一篇分享。

留影纪念

分享结束后,主办方同参会方进行了合影留念,照片取自朱涛朋友圈,侵删。

GDGBeijing-Kotlin-13

后记

本次的活动内容丰富干货满满,未来再有机会时,我想我还会积极参加。

知识点拾遗

  1. 内联函数 inline 的在编译期的实现机制
  2. kotlin contracts :在代码中为编译器提供信息的通信元语
  3. channel:kotlin 协程 coroutine 间通信的阻塞式队列
  4. kotlinc:编译工具的使用和从反编译 .class 结果查看 kotlin 语法特性在 java 实现方式的友好途径
  5. kotlin 协程与 “协程” 理论间的差异
  6. kotlin 协程挂起 suspend 的本质
  7. kotlin 泛型增强 reified 关键字在编译期的实现机制
  8. kotlin flows 响应式 API 的使用