在今日凌晨的 Google I/O 大会上,Google 官方正式宣布,Kotlin 编程语言如今是 Android 应用程序开发人员的首选语言。Java 占据 Android 开发绝对统治的时代一去不复返了。编程
1 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 的首席倡导者切特·哈斯 (Chet Haase) 表示:“咱们宣布,咱们正在采起的下一个重大举措是,咱们将以 Kotlin 为先。”分布式
哈斯说:“咱们知道,不是每一个人如今都在用 Kotlin,可是咱们相信,你会须要它的。”“你可能有充分的理由继续使用 C++ 和 Java 编程语言,这彻底没问题。这些语言不会消失。”函数
2 Kotlin,Android 世界的 Swift?工具
早在 2015 年,Kotlin 就有“Android 世界的 Swift ”的称号。性能
Kotlin 是一门与 Swift 相似的静态类型 JVM 语言,由 JetBrains 设计开发并开源。与 Java 相比,Kotlin 的语法更简洁、更具表达性,并且提供了更多的特性,好比,高阶函数、操做符重载、字符串模板。它与 Java 高度可互操做,能够同时用在一个项目中。测试
按照 JetBrains 的说法,根据他们多年的 Java 平台开发经验,他们认为 Java 编程语言有必定的局限性和问题,并且因为须要向后兼容,它们不可能或很可贵到解决。所以,他们建立了 Kotlin 项目,主要目标是:
若在当时看来,Android 世界的 Swift 称号彷佛底气不足,更像是一种美好的愿望。那么在 201七、2019 两届的 Google I/O 之后,这个说法能够站住脚了。
3 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。有技术方面的缘由,也有组织方面的缘由。其中使用了反射或代码生成的工具是被说起最多的因素。
Java 依旧是编程语言排行榜上的第一名。但 Java 是最好的语言么?不是,由于在每一个领域都有更合适的编程语言。
那么,Java 语言到底有什么优点能够占据排行榜第一的位置呢?
综合而言,Java 语言全能方面是最好的。但一样能够看到,Android 社区拥抱 Kotlin 的速度愈来愈快,也许有一天,在 Android 世界里,咱们会看到 Kotlin 对 Java 的超越。
4 为何谷歌会支持 Kotlin?
免责声明:如下内容纯属基于既有事实合理推测,毫无任何实锤。
还记得谷歌与 Oracle 旷日持久的 Java 侵权案吗?这个持续时间长达 八、9 年的纷争目前以谷歌败诉为最新结局,其须要向 Oracle 赔偿 88 亿美圆。(编者注:在过去几年时间里,几回裁决分别判两家公司胜诉或败诉。今年 1 月份,谷歌不服判决上诉美国最高法院作最终裁决。)
事件的原由是在 2010 年,做为 Java 拥有者的 Oracle 认为,谷歌在 Android 系统上免费使用了 37 个 Java APIs,这侵犯了他们的专利,而在 Android 中还有 9 行代码抄袭了 Java,这侵犯了他们的版权。
那 9 行代码形成抄袭的原因听说是由于当时谷歌的一位工程师在为 Android 项目工做的同时,又为 Sun 公司的 OpenJDK 效力,后来,该工程师直接从 OpenJDK 中复制了 9 行代码到 Android 中,因为 Google 没有获得 Sun 公司的受权,因此 Oracle 收购 Sun 以后,Java 易主,这就至关于侵犯了 Oracle 的版权。
而对于那 37 个 Java APIs,双方互不相让,谷歌认为 API 不该受版权保护,而 Oracle 则认为 谷歌对其的使用具备很强的商业性,再加上用 Java 写的 Android 代码没法在 JVM 上运行,这对 Java 语言是一种分裂,同时 Oracle 认为,Android 经过不当使用 Java API 挤占了 Java ME 可能的市场,这是它巨额索赔的根基。
2016 年初,Google 发言人表示,Android N(7.0) 再也不沿用现有的 Java APIs 内容,而是迁移至基于 OpenJDK 的方法,为开发者建立一个通用代码库。虽然无法规避 Java APIs 官司,但至少能够减小潜在的可能纠纷。
到了 2017 年的 Google I/O 大会,Google 宣布 Kotlin 成为 Android 开发的一级语言,能够说对 Kotlin 寄予了厚望。此后,Kotlin 也被开发者视为 Java 的替代品。
在以后的一年时间里,Google 能够说把 Kotlin 当亲儿子看待,为何这么说呢?让咱们来梳理这一年 Google 为 Kotlin 作了什么:
这些都是 Google 逐渐向 Kotlin 靠拢的证据,虽然还不至于让 Kotlin 彻底取代 Java,但不难看出 Google 的“偏爱”。事实上,Kotlin 本身也很是争气:2017 年 11 月,在第一届 Kotlin 专题大会 KotlinConf 上,Kotlin 首席设计师 Andrey Breslav 宣布 Kotlin 将支持 iOS 开发和 Web 开发,这意味着 Kotlin 向全平台开发迈出了重要的一步。
Kotlin 目前正处于发展的初始阶段,还有不少成长的空间。Google 如今是把它当成 Android 黄昏时期的救命稻草,它能与 Java 100% 互通,但它存在的目的并非为了取代 Java,只是为了让开发者有多种选择。虽然说编程语言只是软件实现的一种工具,开发者不管选择哪一种语言都没有绝对的对与错。但在互联网时代,开发者应该懂得审时度势,拥抱变化,才能走得更远。