你好,这里是卖桃者说。今天我想和你聊一聊 Kotlin 这门编程语言。

在今年 5 月份举行的 I/O 大会上,谷歌宣布 Kotlin 是 Android 应用程序开发人员的首选语言。前几天,谷歌又一次重申了对 Kotlin 的承诺,同时表示在 2020 年,将努力提供更多的 Kotlin + Android 学习资料,并与 Kotlin 的开发公司 JetBrains 合作改善代码编译器,加快代码的编译速度。

你看,强强联手,怕不怕?

谷歌宣布Kotlin是Android开发的首选语言,就是它将取代Java?

近几年,Kotlin 的热度持续走高,再加上谷歌大力扶持,使得它获得了越来越多开发者的青睐。谷歌宣称,目前在前 1000 个 Android 应用程序中,包含 Kotlin 代码的达到了 60%,使用 Kotlin 的开发人员数量也一直在稳定增长。

此前,Java 在 Android 编程江湖中占据了绝对统治地位,Android 的发展也离不开 Java 的贡献。在谷歌宣布引入 Kotlin 后,这两门编程语言之间的竞争逐渐进入白热化阶段,Pinterest、Uber 等顶级科技公司甚至已经将他们的 Android APP 编程语言从 Java 转换成了 Kotlin。ThoughtWorks 首席技术官丽贝卡·帕森斯(Rebecca Parsons)非常看好 Kotlin,“那些尚未了解 Kotlin 的开发人员最好看看它能够做些什么。Kotlin 绝对是一门真正优秀的编程语言,它具有扎实的特性和不断发展的生态系统”。

有人说,Kotlin 即将取代 Java。十几年来,很多编程语言都想取代 Java,但它依然屹立在浪潮之巅,凭啥这次是 Kotlin 呢?和 Java 相比它有哪些优势?谷歌为什么钦点它作为 Android 官方编程语言?想解开这些问题,咱们可以去源头看一看。

谷歌宣布Kotlin是Android开发的首选语言,就是它将取代Java?

Kotlin 是一门静态类型、面向对象的编程语言,依托 JVM,为 Android、浏览器和本地解决方案而设计。2011 年,捷克的 JetBrains 软件公司正式发布 Kotlin,JetBrains 在程序员群体中可谓大名鼎鼎,该公司最为人熟知的产品就是 Java 语言开发集成环境 IntelliJ IDEA。

Kotlin 核心开发者斯维特拉娜·伊凡诺沃(Svetlana Isakova)在接受采访时说,这门编程语言在诞生之初就是为了解决 Java 存在的问题,比如语法冗长以及 Java 空指针的问题。另一名核心开发者安德烈·布雷斯拉夫(Andrey Breslav)一出手就是要取代 Java,人家是这么说的:“创建一门与 Java 100% 兼容,但比 Java 更安全、更简洁、更灵活,并且不会过于复杂的语言”。

使用 Java 编程的工程师看到这里是不是已经吓哭了?别紧张,取代一门老牌语言没那么容易,毕竟最大的语言生态在那里摆着。我们继续说 Kotlin。

谷歌宣布Kotlin是Android开发的首选语言,就是它将取代Java?

技术更新换代,新的编程语言层出不穷,但像 Kotlin 这样诞生没几年就获得技术巨头支持的却少之又少,Go 语言算一个,Kotlin 算一个。早在 2017 年,谷歌就宣布要好好支持这门编程语言,不知道 JetBrains 和谷歌是不是打招呼了。随后,Kotlin 又因为跨平台特性和相关工具的崛起,成功在 Thoughtworks 的技术雷达上亮相,后来还成为了 Stack Overflow 上最受欢迎的语言之一。在国内发展也不慢,像字节跳动这样的头部企业,也开始在 Android 开发工程师招聘需求里提到“熟悉 Kotlin 者优先”。

种种迹象表明,Kotlin 发展势头凶猛,甚至要成为 Java 势均力敌的竞争者。这两门编程语言也经常被拿来作比较,虽然开发人员对二者的看法褒贬不一,但对于 Kotlin 语言层面的优势,大家还是有共识的:

  1. Kotlin 汲取了许多编程语言的精髓,它的语法不像 Java 那么复杂,学习成本更低,调试程序花费的时间也更少;
  2. Kotlin 支持显式地声明 null,并确保开发人员不会遇到可能导致质量问题的空引用异常;
  3. Kotlin 支持线程的并发协同,当取消一个线程执行的时候,并不会阻塞任何其他线程,Java 虽然也允许多线程在后台运行,但它的处理机制更加复杂,在处理长时间运行的网络 I/O 或 CPU 密集型任务方面,Kotlin 比 Java 更具有领先优势;
  4. Kotlin 允许开发人员在不使用冗余类的情况下定义函数和静态对象,轻松地在代码中同一个地方完成对象和函数的定义,这会让代码更容易阅读和调试;
  5. Kotlin 得到了 Android Studio 的有效支持,Java 7 虽然也得到了全部支持,但 Java 8 只得到了部分功能支持;
  6. Kotlin 的生产效率更高,谷歌对它的支持也更好,如果你的项目只针对 Android 开发,不需要创建更大规模、更复杂的产品的话,可以果断选择 Kotlin;
  7. Kotlin 支持内联函数,使用 Lambda 表达式时,这些内联函数让它比 Java 编写的代码运行得更快;
  8. Kotlin 的发展速度更快,它由 Kotlin 基金会管理,并由编程语言设计大师安德烈·布雷斯拉夫(Andrey Breslav)特意设计,可以快速进化。
谷歌宣布Kotlin是Android开发的首选语言,就是它将取代Java?

虽然优点很多,但 Kotlin 还处于不断成长和进化中,并不完美。目前,它还不支持很多功能,比如静态成员、通配符类型、非私有字段、Checked Exception、原始类型以及三元运算符等等。

一边是稳健老练的 Java,一边是新生代 Kotlin,为什么谷歌钦点后者作为 Android 官方编程语言?谷歌产品管理总监斯蒂芬妮·卡特伯森(Stephanie Cuthbertson)给出了五个理由:

第一,Kotlin 是一门漂亮的现代编程语言,它利用了开发人员已经熟悉的许多最佳实践;

第二,Kotlin 完全可以与 Java 互操作,允许开发人员在不同语言之间来回调用;

第三,当谷歌决定采用 Kotlin 时,它已经诞生五年,并且已经有了稳定的版本;

第四,Kotlin 和 Android Studio 的底层平台都来自于 JetBrains,Kotlin 可以获得 Android 的全部支持;

第五,Kotlin 可以解决社区的痛点,利用一种语言在不同平台之间共享代码。

谷歌宣布Kotlin是Android开发的首选语言,就是它将取代Java?

其实最根本的原因大家都心知肚明:Kotlin 不是 Oracle 的,毕竟谷歌和 Oracle 这两家巨头之间的版权战打了十年之久。从 Go 语言到 Dart,再到支持 Kotlin,谷歌在编程语言上的探索从未停止脚步。

不论如何,Kotlin 的确是一门优秀的编程语言,但要在 Android 编程上完全取代 Java,还是有很长的路要走。

我们在极客时间上开设了一门 Kotlin 课程,叫做《快速上手 Kotlin 开发》,目前有近 4000 人在学习这门课程,有兴趣的读者可以去看看。