Google I/O 2017 首日 Keynote 刚刚落幕,其中 Google 宣布 Android 系统开发全面支持Kotlin 算是一个非常重磅的新闻。昨天的文章,你可能对Kotlin有了一定的了解,今天我们再来深入了解下这门语言。
Kotlin的简介
Kotlin 是一个基于 JVM静态类型编程语言,由 JetBrains 开发。于2010年首次推出。
相信很多人都会问:为什么Kotlin可以加入Android家族?它和java相比,在语法,可用性,UI性能和异步性方面双方孰好孰坏?接下来咱家就为您探讨探讨。
Kotlin VS Java
一、语法简单不啰嗦
Kotlin的一个主要优点是它的简洁。 你用更少的代码获得更多的功能。
① Kotlin 支持类型推断,没有 Java 那样的啰嗦。
用 var 表示变量,val 表示常量更加的简洁
③ 方法也很简单,连 function 都缩写成了 fun
④ 类的继承和实现很简单,使用:即可
⑤ Kotlin 每个句子都不需要加分号 (;)
二、避免空指针异常
在许多编程语言中最大的痛苦 - 空指针异常。 但是使用Kotlin,这个问题得到了很好的解决
① 在类型上的处理,即在类型后面加上?,即表示这个变量或参数以及返回值可以为 null,否则不允许为变量参数赋值为 null 或者返回 null
② 对于一个可能是 null 的变量或者参数,在调用对象方法或者属性之前,需要加上?,否则编译无法通过。
三、支持方法拓展
扩展功能
注意:Kotlin 的方法扩展并不是真正修改了对应的类文件,而是在编译器和 IDE 方面做得处理。使我们看起来像是扩展了方法。
四、高阶函数, 函数式编程支持
可以接受函数作为参数,也可以返回函数作为结果。
Kotlin 支持了 Streams API 和方法引用,这样函数式编程更加方便。比如下面的代码就是我们结合 Jsoup,来抓取某个 proxy 网站的数据,代码更加简单,实现起来也快速。
关于性能
Kotlin 的执行效率和 Java 代码的执行效率理论上一致的。有时候 Kotlin 可能会显得高一些。比如 Kotlin 提供了方法的 inline 设置,可以设置某些高频方法进行 inline 操作,减少了运行时的进栈出栈和保存状态的开销。
与Java互操作
Kotlin 在设计时就考虑了 Java 互操作性。可以从 Kotlin 中自然地调用现存的 Java 代码,并且在 Java 代码中也可以 很顺利地调用 Kotlin 代码。
来自Android Developers 的FAQ
1.如何在Android Studio中使用Kotlin?
Android Studio 3.0已经完全支持Kotlin了,所以现在你可以方便的新建一个基于Kotlin的Android项目或者在你现有项目的基础上增加Kotlin的代码,你还可以将你的Java代码转换为Kotlin。使用Kotlin开发,你可以完全的使用现在Android Studio附带的所有工具,像autocomplete,lint,checker,refactoring,debugging等。
2.如何在Android Studio中调试Kotlin?
调试Kotlin就像调试Java代码一样,你不需要做任何额外的事情。
3.为Kotlin提供了什么样的其他IDE支持(如lint,autocomplete,refactorings等)?
Android Studio 3.0 对Kotlin有完整的工具支持。
4.如何在Java和Kotlin语言之间进行选择?
不必选择,如果你想要的话,你可以二者一起使用。
5.我可以在Kotlin中调用Android或其他Java语言库API吗?
可以。 Kotlin提供Java语言互操作性。这是一个允许Kotlin代码透明地调用Java语言方法的设计,再加上注释,这样可以轻松地将Kotlin功能公开到Java代码。不使用任何Kotlin特定语义的Kotlin文件可以直接从Java代码引用,而没有任何注释。综合起来,这样可以将Java代码与Kotlin代码进行细微的混合。
6.我可以在同一个项目中同时使用Java文件和Kotlin文件吗?
可以。您可以利用Kotlin和Java的互操作性混合使用两种编程语言。
7.创建一个支持Kotlin的新项目
当您在Android Studio中创建新项目时,选择“包含Kotlin支持”复选框。
8.在已有项目中添加kotlin支持
FIle > New 选择一个AndroidStudio提供的模板
source language
点击finish就ok了。
9.Kotlin有并行的文档,样本,codelabs和模板吗?
我们正在努力使我们的文档适用于Java和Kotlin语言用户。与此同时,开发人员可以依靠Kotlin与Java语言卓越的互操作性,自动将Java语言代码转换为Android Studio中的Kotlin。
10.Kotlin可以在Android上协同工作吗?异步/等待如何?
目前Kotlin的协同工作还在实验阶段,但不代表未来没有这种可能性。
11.Kotlin支持哪些版本的Android?
全部!Kotlin与JDK 6兼容,所以Kotlin的应用程序可以安全地运行在较旧的Android版本上。
总结
Kotlin的特性有很多,总的来说, Kotlin这门语言简化了Java , 完全是从一个是实用派的角度,而不是学院派的角度。
相比于JRuby , Jython这些一移植到JVM上的语言, Kotlin 和Java 和互操作感觉更加自然。
每个语言的流行都需要一个引爆点,就像Ruby on Rails 引爆了Ruby 一样, Android 也许就是之前不那么流行的Kotlin的引爆点。
最后附上Kotlin学习资源:
1.kotlin官方中文翻译文档网址:
https://www.kotlincn.net/docs/reference/
2.Kotlin官网
http://kotlinlang.org/
3.kotlin中文官网
https://www.kotlincn.net/
4.kotlin的gitbook网址
https://www.gitbook.com/book/hltj/kotlin-reference-chinese/details
参考文章:
http://droidyue.com/blog/2017/05/18/why-do-i-turn-to-kotlin/
https://www.w2bc.com/article/239949
http://tech.it168.com/a2017/0519/3124/000003124740.shtml
https://developer.android.com/kotlin/faq.html
https://developer.android.com/kotlin/resources.html