2021.6 更新
这个仓库最初(2016年底)是用来分享一些 Kotlin 教程的,感兴趣的话可以查看这里。后来随着 Google 的大力支持,Kotlin 已经逐步在 Android 开发领域占据了一席之地。我就以个人经历来说说自己的感受吧:
过去几年我所在的腾讯公司当中,Kotlin 的落地项目实际上已经相当可观,例如:
- 外部开源的 Android 插件化框架 Shadow,核心逻辑基本上使用 Kotlin 编写。
- 蓝鲸 CI 平台,这是一个后端项目,在腾讯内部已经成为公司主推的 CI 平台,之前我在上面做持续集成时需要做插件开发,惊喜地发现打印出来的调用堆栈居然有 Kotlin 身影。
- 内部还有团队使用 KMM 做跨平台的 UI 控件渲染,这可以说是非常有挑战的工作了,不仅要在移动端支持 Android、iOS,还要同时支持桌面版。基于这个框架所属产品的体量,我们大概率已经是这套技术方案的用户了。
今年初我因个人原因离开了鹅厂,去了北京猿力教育科技有限公司(猿辅导),不出所料,在这家号称小而美且有技术追求的公司当中,Kotlin 在项目上的应用已经相当广泛了,新代码很少能见到 Java 的身影(有需要内推的小伙伴可以找我)。
所以,作为“布道者”,过去我们总是想着怎么让更多的开发者知道 Kotlin,现在我们则需要提供更多的 Kotlin 的学习材料,来帮助大家更好的使用 Kotlin。
我目前主要的想法就是做一些视频放到 B 站上(账号:bennyhuo 不是算命的),当然视频的内容也不限于 Kotlin 本身。这个计划已经开始尝试实施了,内容的规划在这个仓库的 issue 当中跟进,例如前不久刚刚录制的几个 Gradle 迁移 KTS 的视频。
还有一个相对长期的规划是做一套电子书,后面会在这个 issue 当中跟进,电子书的主体内容与我之前的课程 Kotlin 从入门到精通 视频教程 会有一定程度上的重叠,但电子书的好处就是更新维护方便,相比之下视频教程制作成本太高且不易维护。
有想法的小伙伴欢迎与我交流,也欢迎加入催更群:966752510一起讨论。
Kotlin 1.5 于 2021年5月份发布,主要更新内容其实集中在编译器和工具链上,所以开发者可感知的特性并不多 —— 大概要等 IR 编译器前端稳定了之后才会集中输出一波语法特性的大改动,等吧,那时候大概就是 Kotlin 2.0 了。
Kotlin 语言特性和标准库
- [Kotlin 1.5] Duration:这玩意也能实验这么久?!
- [Kotlin 1.5] 支持 JvmRecord:Java 开始抄作业了?
- [Kotlin 1.5] Kotlin 反手一个密封接口?谁抄谁还不一定呢!
- [Kotlin 1.5] inline(×) value(√) class:换个马甲还是另有所图?
- [编程语言引战] 辣鸡 Java,看看人家 C# 的值类型! 这期视频主要是 Kotlin value class 话题的一个延伸,所以放到这里
Kotlin 协程
- [Kotlin 协程 1.5] 什么?GlobalScope 竟被废弃了? >>示例代码
- [Kotlin 协程 1.5] 越更越惨的 Channel:我 TM 就是个倒霉蛋 >>示例代码
- [Kotlin 协程 1.5] Flow 有两个 API 转正:一个是另一个的马甲?
- [Kotlin 协程] 反向操作:怎么把挂起函数转成阻塞函数?
- [Kotlin 协程] 常规操作:怎么把回调转成挂起函数?
Kotlin 的一些很零碎的内容,放到这个栏目下面。
- [Kotlin 杂谈] SAM 转换遇到包内可见 >>示例代码
- [Kotlin 杂谈] 使用协程实现轮询任务竟是这么简单 >>示例代码
- [Kotlin 杂谈] API 要谨慎使用?你可能需要 OptIn 注解! >>示例代码
- [Kotlin 杂谈] 要废弃 API ?@Deprecated 你学废了吗? >>示例代码
- [一周一个小技巧] 查看字节码,你们都用什么工具?
- httpreq 介绍,该工具可以方便地对接口进行测试 https://httpreq.com/ 制作中
- Pipedream 介绍,该工具实现更复杂的接口调试场景,可以自定义请求结果,还可以把请求数据存起来。
- Android Studio 技巧之快捷键
前不久开源了一个小项目 Android-LuaJavax,在改造 Gradle 脚本的时候也同时看到群里有不少小伙伴在问 KTS 编写 Gradle 脚本的问题,于是想要做几个视频来介绍下 Gradle 脚本从 Groovy 到 Kotlin 需要掌握哪些内容。
- 你的 Gradle脚本究竟是什么?
- 你的 Gradle 脚本是怎么运行起来的?
- Gradle Project 的属性都是哪里来的?
- Gradle Task 创建的特殊语法
- 快速迁移 Gradle 脚本至 KTS
- 番外:如何调试 Gradle 源码
- 如何为 Gradle 的 KTS 脚本添加扩展?
-
B 站账号:bennyhuo 不是算命的,我的个人视频会优先在 B 站发布
-
微信公众号 Kotlin,公众号主要用来发布 Kotlin 以及移动端开发相关的内容。
-
加入社区 QQ 群
- Kotlin 中文社区群 大群:162452394 (已满)
- Kotlin 中文社区群 ① 群:603441485 (已满)
- Kotlin 中文社区群 ② 群:751395597
-
当然,北京猿辅导的小伙伴也可以找我面聊 :)
以下是过去几年我的一些积累和产出,有兴趣可以关注。
《深入理解 Kotlin 协程》 2020.6 出版
Kotlin 协程可以说是截止目前为止 Kotlin 中最让人困惑的一部分内容了,官方文档也比较简略,对于初学者不够友好。今年我把过去在公众号和博客发布的协程相关的文章进行了整理和扩充,进一步完善了诸多细节编写了本书,有兴趣可以留意一下。
本书源码地址:《深入理解 Kotlin 协程》源码
- 京东自营:深入理解Kotlin协程
- 当当自营:深入理解Kotlin协程
我在做 基于 GitHub App 业务深度讲解 Kotlin1.2高级特性与框架设计(目前已经下线) 这门课的时候,顺便做了一个注解处理器的框架,叫 Tieguanyin(铁观音),这个框架主要是用来解决 Activity 跳转时传参的问题,我们知道 Activity 如果需要参数,那么我们只能非常繁琐的使用 Intent
来传递,有了这个框架我们就可以省去这个麻烦的步骤。
在这里,框架的内容其实不是重点,重点是,它是一个注解处理器的项目。为了让它的作用尽可能的放大,我对原框架做了简化,做了这套课程。
Kotlin 1.3 是一个相对成熟和稳定的版本,这次基于 Kotlin 1.3.50 重新制作入门到精通的课程,相比之下新课知识点梳理更详细,内容干货更多,讲法也更成熟,希望能对大家有帮助。
视频地址: http://coding.imooc.com/class/398.html
最近不少朋友反馈希望能看到一些深入分析框架的课程,正好前段时间对 Retrofit 又做了一次深入的分析,整理了一套免费视频分享给大家~
我一直做 Kotlin 的推广和宣传,发现大多数学习 Kotlin 的同学都是被行业“胁迫”不得不学。大家的诉求更多是怎么样找到一份好的工作,考虑到学习 Kotlin 的同学大多都是 Android 开发者,我就花了半年的功夫仔细整理了这一套视频出来,题目看上去不多,但每一个题目背后能引出的知识点可一点儿都不少。不求面面俱到,只求精准打击,面试过程中只要你能给面试官留下深刻的印象,那么这事儿就成了。