Kotlin 作为 Android 开发语言相比传统 Java 有什么优势？
首先很高兴看到Google在I/O上官网宣布 Kotlin 成为 Android 的语言。我觉得既是大势所趋，也使得Android编程上效率大增。自从写了一段时间 Python 和 Swift 语言之后，我就觉得 Java 这样“冗长”的语言应该慢慢退出历史舞台了（本来2-3行python的逻辑，Java可以写出20+行）；而 Java 之前由于其写代码“爽”和“多”成为很多程序员喜欢的点，但是历史的巨轮滚滚向前，终究我们编码会是越来越简洁，工作量越来越少。 回到问题本身，个人觉得 Kotlin 比 Java 优秀在于： 由 JetBrain 的牛人 Dmitry Jemerov 在2011年开始带队开发，主要是解决Java之前被诟病已久的问题，而且积极借鉴了 Scala、Ruby 等新语言在开发效率和简洁性上的优势。由于是全新开发和设计的语言，当然在各方面上都有着其先进性，也就是重新设计的 Java现代版；比起 Scala 更加interoperate with Java，比如说很多 Kotlin 的库都可以一直复用 Java libraries。 想必大部分程序员应该都写过Java，有些甚至写过10年以上；Java的好处是语法工整，清晰直接，严格，不容易犯低级程序错误；但是它的问题也很明显：“verbosity”，中文通俗翻译就是 “王大妈的裹脚又臭又长”。经常是 Python 或者 Ruby 10行完成的逻辑或者data class，用 Java 可以轻松轻松写出三倍多的代码。大部分程序员对此表示很无语，小数程序员可能还会陷入一种自我催眠状态，觉得自己程序码的多，于是码的爽，于是沾沾自喜于每天可以写500或者上千行代码的自我感动中。而 Kotlin 和 iOS 上 swift 的出现，可以有效地节约我们程序员不少的时间，让写代码更为有效率。 另外 Java 还有最大的一个问题，在Null的处理上一直是其阿基里斯之踵：Top 5 Crashes on Android - Apteligent 在 Android top crashes 的排名上：第一 NPE（NullPointerException），第二 OOM（OutOfMemoryException，特别对于低端手机而言）；Java 最近的改进也是在 annotation 上增加对于 null 的规范和检查。而 Kotlin 则是彻底规范了对于变量在 null 上检查和支持 "?:" 来简洁地处理 null。比如： 从上面可以看到在检查和处理 nullable 变量的时候，Kotlin 更加有效。 另外 Kotlin 先进的地方还有 Lamda、Extension function、when 等；都是现在语言默认支持的特性。这里就不一一介绍了。 其实之前我最为担心的问题是：Kotlin 会不会像 Scala 或者 Groovy 或者 Clojure 那样，“先进”但是曲高和寡，最后导致没人用。经过这次的 Google IO 的官方支持，我现在200%确定 Kotlin 会是以后 Android 上主流语言的方向，所以各位现在就开始学习吧。 附带我觉得最为有效的Kotlin学习方法： 1. 先快速浏览：Basic Syntax - Kotlin Programming Language 2. 对于Java选手，附加看这个：From Java to Kotlin 3. 上手跟着这个tutorial一步一步完成它的练习：Try Kotlin 4. 把 Cheatsheet 打出来贴在显示器旁边没事看看：https://pbs.twimg.com/media/C0yRbHLUUAAgacl.jpg 5. 文字版本 Cheatsheet：
https://gist.github.com/dodyg/5823184
https://gist.github.com/dodyg/5616605