Skip to content

【Kotlin 视频教程】国内资料较少,我录制了一套视频作为抛砖引玉~

Notifications You must be signed in to change notification settings

PeterXiao/Kotlin-Tutorials

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

GitHub license

我在做 基于 GitHub App 业务深度讲解 Kotlin1.2高级特性与框架设计 这门课的时候,顺便做了一个注解处理器的框架,叫 Tieguanyin(铁观音),这个框架主要是用来解决 Activity 跳转时传参的问题,我们知道 Activity 如果需要参数,那么我们只能非常繁琐的使用 Intent 来传递,有了这个框架我们就可以省去这个麻烦的步骤。

在这里,框架的内容其实不是重点,重点是,它是一个注解处理器的项目。为了让它的作用尽可能的放大,我对原框架做了简化,做了这套课程。

我们在 2018年6月基于 Android 的开发环境推出了一套深入讲解 Kotlin 特性的课程,这套课程以大家最为熟悉的 GitHub App 开发作为整套课程的线索,将 Kotlin 的高级特性一一融入其中予以讲解,这其中我们对泛型、反射、属性代理、协程、Dsl 做了详尽的讲解和框架设计与开发,力求让大家能够对这些技能灵活运用。

这是什么?这是我最新制作的系统讲解 Kotlin 的视频教程,相比较早录制的视频,这套视频在专业团队的协助下完成,内容更适合初学者入门学习;另外,由于 Kotlin 版本更新非常快,新视频也结合了 1.1/1.2 的新特性为大家展开讲解,希望能对大家有帮助~

视频地址: http://coding.imooc.com/class/108.html

已经更新了 反射 泛型 跨平台 的内容。

发现有人在淘宝店上卖这套视频哈,大家不要去买。。。直接在这里下载多好

随着Kotlin越来越成熟稳定,我已经开始在生产环境中使用它。考虑到目前国内资料较少,我录制了一套视频教程,希望以此抛砖引玉,让 Kotlin 在国内火起来。

个人水平有限,不足之处欢迎大家发邮件到 [bennyhuo@println.net](mailto: bennyhuo@println.net) ,谢谢大家!

介绍

视频从2016年10月初开始发布,更新至12月中旬完结。精力有限,后续暂时每周一通过公众号推送 Kotlin 及 Java 生态的一些文章,大家有选题也可以直接联系我,目前已经有两篇是基于大家的反馈撰写的,反馈也比较不错,谢谢大家的关注与支持。

在线收看全部视频(腾讯视频)

下载全部视频(百度云)

目录

  简要介绍下什么是 Kotlin,新语言太多了,大家为什么要接触 Kotlin 呢?因为它除了长得与 Java 不太像以外,其他的都差不多~   

  千里之行,始于Hello World!   

  这年头,写 Java 系的代码,不知道 Gradle 怎么行呢?   

  放下 i++,你不知道 map 已经占领世界了么?以前我以为 map-reduce 很牛逼,后来才知道就是数据迭代处理嘛。   

  这个可以说是 map 的一个加强版,返回的仍然是开一个可迭代的集合,用哪个您自己看需求~   

  Kotlin 丢掉了 switch,却引进了 when,这二者看上去极其相似,不过后者却要强大得多。至于枚举嘛,还是 Java 枚举的老样子。

  这一期通过一个统计文章中字符数的小程序进一步给大家呈现 Lambda 的威力,也向大家展示一下如何在 Kotlin 当中优雅地使用 RxJava。我不做教科书,所以如果大家对概念感兴趣,可以直接阅读官方 API

  RxJava 是一个非常流行的 Java Reactive 框架,函数式的数据操作使得 Lambda 表达式可以充分体现自己的优势,比起 Java 的冗长,你会看到一段非常漂亮简洁的代码。建议大家先阅读 RxJava 的官方文章以对其有一些基本的认识。   

  Retrofit 是 Square 的 Jake 大神开源的RESTful 网络请求框架,用它发送请求的感觉会让你感觉爽爆的。我这里还有几篇文章,以及一个我 hack 过的分支 HackRetrofit,有兴趣的童鞋可以一起探讨下~

  尾递归,顾名思义,就是递归中调用自身的部分在函数体的最后一句。我们知道,递归调用对于栈大小的考验是非常大的,也经常会因为这个导致 StackOverflow,所以尾递归优化也是大家比较关注的一个话题。Kotlin 支持语法层面的尾递归优化,这在其他语言里面是不多见的。

  单例大家一定都不陌生,只要你动手写一个程序,就免不了要设计出一些全局存在且唯一的对象,他们就适合采用单例模式编写。在 Java 里面,单例模式的写法常见的有好几种,虽然简单却也是涉及了一些有意思的话题,那么在 Kotlin 当中我们要怎么设计单例程序呢?

  枚举类型可以很好的限制一个类型的实例个数,比如 State 枚举有两种类型 IDLE 和 BUSY 两种状态,用枚举来描述再合适不过。不过,如果你想要设计子类个数有限的数据结构,比如指令,指令的类型通常是确定的,不过对于某些有参数的指令每一次都使用同一个实例反而不合适,这时候就需要 Sealed Class。      

  Json 数据可真是大红大紫一番,它实在是太容易理解了,随着 Js 的火爆它就更加『肆无忌惮』起来。我们在 Java/Kotlin 当中解析它的时候经常会用到 Gson 这个库,用它来解析数据究竟会遇到哪些问题?本期主要围绕 Json 解析的几个小例子,给大家展示一下 Java/Kotlin 的伪泛型设计的问题,以及不完整的数据的解析对语言本身特性的冲击。

  首先感谢 @CodingPapi,这一期的内容主要来自于他的建议。

  Kotiln 对于注解的支持情况在今年(2016)取得了较大的成果,现在除了对 @Inherited 这个注解的支持还不够之外,试用了一下没有发现太大的问题。关于 kapt,官方的文章罗列下来,其中

  本期主要通过一个简单的 Dagger2 实例给大家展示了注解在 Kotlin 当中的使用,看上去其实与在 Java 中使用区别不大,生成的源码也暂时是 Java 代码,不过这都不重要了,反正是要编译成 class 文件的。

  后面我们又简单分析了一下 Dagger2 以及 ButterKnife 的源码(有兴趣的话也可以看下我直接对后者进行分析和 Hack 的一篇文章:深入浅出 ButterKnife,听说你还在 findViewById?),其实自己实现一个注解处理器是非常容易的,类似的框架还有androidannotations,它的源码大家可以自行阅读。


通过这个例子,我们其实发现 kapt 还是有一些不完善的地方,主要是:

  1. 不支持 @Inherited
  2. 生成的源码需要手动添加到 SourceSets 中
  3. 编译时有时候需要手动操作一下 gradle 的 build 才能生成源码(这一点大家注意下就行了,我在视频中并没有提到)

不过总体来讲,kapt 的现状还是不错的,相信不久的将来这些问题都将不是问题。


  你想要追求代码简洁、美观、精致,你应该倾向于使用 Kotlin,而如果你想要追求代码的功能强大,甚至有些黑科技的感觉,那 Java 还是当仁不让的。

  说了这么多,还是那句话,让他们共存,各取所长。

  那么问题来了,怎么共存呢?虽然一说理论我们都知道,跑在 Jvm 上面的语言最终都是要编成 class 文件的,在这个层面大家都是 Java 虚拟机的字节码,可他们在编译之前毕竟还是有不少差异的,这可如何是好?

  正所谓兵来将挡水来土掩,有多少差异,就要有多少对策,这一期我们先讲在 Java 中调用 Kotlin

  上一期我们简单讨论了几个 Java 调用 Kotlin 的场景,这一期我们主要讨论相反的情况:如何在 Kotlin 当中调用 Java 代码。

  除了视频中提到的点之外还有一些细节,比如异常的捕获,集合类型的映射等等,大家自行参考官方文档即可。在了解了这些之后,你就可以放心大胆的在你的项目中慢慢渗透 Kotlin,让你的代码逐渐走向简洁与精致了。

获取最新动态

关注微信公众号:Kotlin, 获取最新视频更新动态

加入 QQ 群 Kotlin ,162452394:

About

【Kotlin 视频教程】国内资料较少,我录制了一套视频作为抛砖引玉~

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Kotlin 71.6%
  • Java 27.7%
  • C# 0.7%