Java 真的失宠?谷歌宣布 Kotlin 现在是 Android 开发的首选语言?

168 阅读7分钟

所以到底是怎样的呢?

在Google I/O 大会上,Google 官方正式宣布,Kotlin 编程语言现在是 Android 应用程序开发人员的首选语言。Java 占据 Android 开发绝对统治的时代一去不复返了。

Kotlin,东宫太子

=========================================================================

谷歌今天宣布,Kotlin 编程语言现在是 Android 应用程序开发人员的首选语言。

谷歌在今天的声明中写道:“Android 的开发将越来越以 Kotlin 为先。”许多新的 Jetpack API 和特性将首先在 Kotlin 中提供。如果你要开始一个新项目,你应该用 Kotlin 来写;用 Kotlin 编写通常意味着更少的代码——更少用于类型、测试和维护方面的代码。”

就在两年前的 2017 年 I/O 大会上,谷歌宣布在其 Android Studio IDE 中支持 Kotlin。考虑到 Java 长期以来一直是 Android 应用程序开发的首选语言,这有点令人惊讶。在过去的两年里,Kotlin 的人气只增不减。谷歌说,超过 50% 的专业 Android 开发人员现在使用该语言开发他们的应用程序,在最新的 Stack Overflow 开发人员调查中,它被列为第四大最受欢迎的编程语言。

第一次看我文章的小伙伴可以关注一下我,顺便关注一下我的专栏:Android高级架构,每天更新各种技术干货,分享更多最热程序员圈内事。

image

Android 的首席倡导者切特·哈斯 (Chet Haase) 表示:“我们宣布,我们正在采取的下一个重大举措是,我们将以 Kotlin 为先。”

哈斯说:“我们知道,不是每个人现在都在用 Kotlin,但是我们相信,你会需要它的。”“你可能有充分的理由继续使用 C++ 和 Java 编程语言,这完全没问题。这些语言不会消失。”

Kotlin,Android 世界的 Swift?

=======================================================================================

早在 2015 年,Kotlin 就有“Android 世界的 Swift ”的称号。

Kotlin 是一门与 Swift 类似的静态类型 JVM 语言,由 JetBrains 设计开发并开源。与 Java 相比,Kotlin 的语法更简洁、更具表达性,而且提供了更多的特性,比如,高阶函数、操作符重载、字符串模板。它与 Java 高度可互操作,可以同时用在一个项目中。

按照 JetBrains 的说法,根据他们多年的 Java 平台开发经验,他们认为 Java 编程语言有一定的局限性和问题,而且由于需要向后兼容,它们不可能或很难得到解决。因此,他们创建了 Kotlin 项目,主要目标是:

  • 创建一种兼容 Java 的语言

  • 编译速度至少同 Java 一样快

  • 比 Java 更安全

  • 比 Java 更简洁

  • 比最成熟的竞争者 Scala 还简单

若在当时看来,Android 世界的 Swift 称号似乎底气不足,更像是一种美好的愿望。那么在 2017、2019 两届的 Google I/O 以后,这个说法可以站住脚了。

Kotlin 真比 Java 强?

===============================================================================

许多新语言的出现似乎都是源于对某种其它语言的厌倦。似乎 Kotlin 也是如此。但在 JetBrains 看来,Kotlin 项目的原始动机就是为了提升生产力。JetBrains 开发者支持组组长 Hadi Hariri 在接受 InfoQ 采访时表示:

”尽管当时我们已经开发了对几种基于 JVM 的编程语言的支持,我们还是基本都在 Java 环境下写基于 IntelliJ 的 API。IntelliJ 开发系统是基于 Groovy 和 Gant 的,Groovy 也用于测试,RubyMine 中还有一些 JRuby 代码,情况就是如此。我们希望转向更具表现力的语言从而提高生产力。同时,我们不能接受在 Java 互操作性或编译速度方面的妥协。“

Kotlin 与 Java 总是在主观比较

“Kotlin 比 Java 好”,“Kotlin 可读性比 Java 强”,“Kotlin 开发速度比 Java 快”,类似这样的陈述缺少相关准确数据的支持,所以都归为主观看法一类。

主观看法是个体开发人员在对与 Kotlin 或 Java 相关的主题作出一个或多个主观判断时形成。

开发人员的主观判断存在如下问题:

  • 没有与主观判断相关联的量化指标。

  • 主观判断存在很大的偏见。

  • 主观判断的偏见在开发人员之间存在很大的差异。

由于没有与主观判断相关联的量化指标,建立在这些判断基础上的观点只是反映出了开发人员之前就有的偏见。不同的开发人员可能有着截然不同的偏见,因此,有开发人员认为 Kotlin 是不错(或糟糕)的 Java 替代者并不意味着其他开发人员也这么认为。

而且,由于没有客观指标,主观分歧就无法客观地消除,这经常会导致“口水战”。

相较于 Java,Kotlin 的确在一些方面有较大优势:效率高、易维护、可靠、简单易学。在一些特定场景下,许多 Java 开发者因为某些方面的问题选择了切换到 Kotlin:比如受够了 Java NullPointerException 的人都喜欢 Kotlin 的 Null 安全特性;扩展函数被大量使用;除了扩展 Java 类,人们也常常将 Java 代码迁移到 Kotlin。

根据英国软件公司 Pusher 调查的数据显示,在样本数 2744 人的调查中,超过 87% 的受调者已经完成了迁移。他们有的使用了迁移向导,有的直接手动修改代码。超过四分之一的受调者迁移到 Kotlin 后又回到了 Java。有技术方面的原因,也有组织方面的原因。其中使用了反射或代码生成的工具是被提及最多的因素。

  • “Kotlin 的枚举不能包含常量。在自定义注解时(比如 @IntDef),为了保持接口的整洁,需要将值保存在枚举中。”

  • “我们正在使用 Realm,但它不能与数据类一起使用。”

  • “我们的 Java 代码中使用了 Retrolambda,因为类型缺失,很难转到 Kotlin。”

  • “另一个团队不喜欢 Kotlin,我们也预料不到会这样。”

  • “这不是我们决定的,我们是按照公司的规则来的。”

Java 依旧是编程语言排行榜上的第一名。但 Java 是最好的语言么?不是,因为在每个领域都有更合适的编程语言。

那么,Java 语言到底有什么优势可以占据排行榜第一的位置呢?

  • 其一,语法比较简单,学过计算机编程的开发者都能快速上手。

  • 其二,在若干了领域都有很强的竞争力,比如服务端编程,高性能网络程序,企业软件事务处理,分布式计算,Android 移动终端应用开发等等。

  • 最重要的一点是符合工程学的需求,成为企业软件公司的首选,也受到互联网公司的青睐。

综合而言,Java 语言全能方面是最好的。但同样可以看到,Android 社区拥抱 Kotlin 的速度越来越快,也许有一天,在 Android 世界里,我们会看到 Kotlin 对 Java 的超越。

为什么谷歌会支持 Kotlin?

==============================================================================

免责声明:以下内容纯属基于既有事实合理推测,毫无任何实锤。

还记得谷歌与 Oracle 旷日持久的 Java 侵权案吗?这个持续时间长达 8、9 年的纷争目前以谷歌败诉为最新结局,其需要向 Oracle 赔偿 88 亿美元。(编者注:在过去几年时间里,几次裁决分别判两家公司胜诉或败诉。今年 1 月份,谷歌不服判决上诉美国最高法院做最终裁决。)