Kotlin-Everywhere
在今年五月份的 Google I/O 大会上,Google 宣布了 Android 应用开发中 Kotlin 优先的战略,此后 Google 提供的 API(例如 Jetpack 工具库)将以 Kotlin 优先。大会结束后不久,Google 便联合 Jetbrains 在全球范围内推出了 Koltin/Everywhere 计划。Kotlin/Everywhere 计划 是由各地社区主导的一系列活动,旨在关注 Kotlin 在多平台上的潜力,并为学习 Kotlin 的基本要素与最佳实践提供帮助,包括但不限于 Android、服务端、前端和其他平台。
Kotlin-Everywhere Beijing
笔者有幸和一位朋友一起参加了北京 GDG 与 Kotlin 中文社区共同主办的 Kotlin/Everywhere Beijing ,这场活动的嘉宾阵容空前强大,台下观众高朋满座,各路大咖云集,可谓之国内规格最高的一场 Kotlin/Everywhere 活动。会议的全程录像可在 大咖说 回放。
日程安排
时间 | 主题 | 嘉宾 |
---|---|---|
9:00-10:00 | 签到入场 | - |
10:00-10:10 | 开场介绍 | 韩国恺 |
10:10-10:50 | What’s New in Kotlin | Svetlana Isakova |
10:50-11:30 | 携程 Kotlin Multiplatform 工程实践 | 陈琦 |
11:30-12:10 | 潜力无限:Kotlin 用于服务端与 WebAssembly | 贾彦伟 |
12:10-13:40 | 中午午休 | - |
13:40-14:20 | Boost Your Productivity with Kotlin | 陈龙博 |
14:20-15:00 | Be Friends with kotlinc | 段建华 |
15:00-15:20 | 下午茶歇 | - |
15:20-16:00 | Kotlin High-Performance Programming | 朱涛3 |
16:00-16:40 | Kotlin Coroutine | 朱凯 |
16:40-17:20 | Kotlin 函数式编程 | 乔禹昂 |
上午
我和朋友于九点半到达活动会场,会场签到处有 kotlin 主题的挎包、徽章、冰箱贴、贴纸等伴手礼,签到进场后发现观众席已落座 300 余人,便匆忙在一个靠中间的位置坐下,会场大屏播放着 Kotlin 相关的视频,视频中世界各地的开发者在表达着对 Kotlin 语言的喜爱,现场观众席也充斥着对 Kotlin 的探讨之声。
稍等了一会,活动主持人韩国恺(北京 GDG 核心组织者)便登台对本次活动的议程进行了介绍,同时简要介绍了 Kotlin 的发展史,紧接着便由 Jetbrains 技术步道师、Kotlin 编译器团队早期成员 、《Kotlin in action》的作者 Svetlana Isakova 开始了本次活动的第一场主题演讲 — What’s New in Kotlin。
What’s New in Kotlin
Svetlana Isakova 向大家介绍了 KEEP — Kotlin Evolution and Enhancement Process ,表达出 JetBrains 重视开发者,乐于倾听开发者的反馈与心声。此外还介绍了一系列 Kotlin 的新特性,为开发者建立信心。
- Inline classes
- Contract
- Channel
- Flows
这些特性虽大多处于实验阶段,但它们所带来的效率提升的确值得期待。
携程 Kotlin Multiplatform 工程实践
接下来是携程机票研发部无线研发总监陈琦带来的 携程 Kotlin Multiplatform 工程实践 主题分享。
该主题讲述了携程跨平台使用 Kotlin 的实践进展,以及实践过程中所遇到的来自人员与技术方面的挑战和解决思路,同时讲述了 Kotlin 技术选型中的考察指标与验证方式,还有Kotlin Native 在内部研发工具方面的运用,可谓是干货满满。
潜力无限:Kotlin 用于服务端与 WebAssembly
上午最后一场是由蔚来汽车技术经理贾彦伟带来的 潜力无限:Kotlin 用于服务端与 WebAssembly 主题分享,该主题介绍了 Kotlin 在服务端开发领域相关的 Web 框架,DB 连接库等以 Kotlin 语言编写的基础设施,此外还介绍了 WebAssembly 的现状与 Kotlin 对 WebAssembly 的态度,同时对 Kotlin 的美好未来进行了一番畅想。
上午的会议在十二点一刻结束,我和朋友在附近转了转,一路边找饭馆边探讨,最后在一家小饭馆简单吃了些便匆匆赶回会场。
下午
回到会场的时间还早,我和朋友在前排挑了两个座位。随着参会人员的陆续返回,一会儿的时间前排座位就再次满座。
Boost Your Productivity with Kotlin
下午的第一场分享是由抖音 Android 工程师陈龙博(id:smallSoho)带来的 Boost Your Productivity with Kotlin ,陈龙博看起来是一个阳光活泼的大男孩,一上台就带动了现场的气氛,他在演讲中通过一些小例子来表达 kotlin 对开发者的友好和工作效率的提升,对还未使用 kotlin 的和 kotlin 的新手进行推广和指引。内容包括:
- data class
- 中缀表达式
- let apply also 等标准函数
- “真泛型”
- 集合操作的快捷方式
- 优雅的“DSL”
- Sequence [译]Kotlin中的龟(List)兔(Sequence)赛跑
- internal 关键字
- Anko
- Kotlin 编写 gradle 插件 McImage
- Kotlin 编写 .kts 脚本代替 python 脚本
Be Friends with kotlinc
第二场是由知名博主段建华(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
品尝了点心和咖啡后再次回到会场,接下来是陌陌工程师朱涛带来第三场名为 Kotlin High-Performance Programming 的主题分享。
朱涛为大家介绍了 kotlin 的甜(语法糖)与盐(性能陷阱),同时给出了众多的 kotlin 陷阱规避 tips,堪称 Kotlin 效率编程实用宝典。此外,朱涛还介绍了他所建立的 kotlin lint ,但目前 lint 规则有限,且维护人员较少,期待后续有更好的发展并开源出来。
Kotlin 的协程 Coroutines
下午第四场是由 Android 老司机、HenCoder 创办人、知名博主朱凯(id: 扔物线)带来的 Kotlin 的协程 Coroutines主题分享。
朱凯的台风四平八稳,讲课技巧高超,循循善诱的为大家讲解了 kotlin 协程与 suspend 关键字的来龙去脉,确实解决了 kotlin 初学者不少的疑惑。
Kotlin Functional Programming
下午第五场也是本次活动的最后一场分享由来自 OkCoin 的工程师、Kotlin 中文网译者、Kotlin 中文社区运营 乔禹昂带来的 Kotlin Functional Programming 主题分享。
乔禹昂是一名资深的函数式编程爱好者,他从 Java 中的 lambda 到 kotlin 中的函数一一进行了讲解,演示了 kotlin 函数式编程的一些方式,并对 kotlin 中内联函数 inline 的使用提出了编译器限制和指定性意见,最后还总结了函数式编程的优势,也是充满干货的一篇分享。
留影纪念
分享结束后,主办方同参会方进行了合影留念,照片取自朱涛朋友圈,侵删。
后记
本次的活动内容丰富干货满满,未来再有机会时,我想我还会积极参加。
知识点拾遗
- 内联函数 inline 的在编译期的实现机制
- kotlin contracts :在代码中为编译器提供信息的通信元语
- channel:kotlin 协程 coroutine 间通信的阻塞式队列
- kotlinc:编译工具的使用和从反编译 .class 结果查看 kotlin 语法特性在 java 实现方式的友好途径
- kotlin 协程与 “协程” 理论间的差异
- kotlin 协程挂起 suspend 的本质
- kotlin 泛型增强 reified 关键字在编译期的实现机制
- kotlin flows 响应式 API 的使用