17611538698
webmaster@21cto.com

谷歌:告别 Java,Kotlin 才是首选

资讯 0 2557 2019-05-10 11:57:31
2017 年,谷歌 I/O 大会上官宣宣布在其 Android Studio IDE 中支持 Kotlin,Kotlin 开始成为 Android 开发的一级语言。Kotlin与 Java 100% 互通,并具备诸多 Java 不支持的特性。
 
当时软件开发业界并不太看好,因为 Java 在安卓的发展过程中做出了巨大的贡献,其作为安卓开发语言的观念已经根深蒂固,而且它也一直在不断完善。
 

5.10_.1_.1jpg_.jpg

 
 
然而仅仅两年时间,Kotlin 因其相比 Java 更安全与简洁等优越性,很快占领市场,谷歌 Android 首席布道师 Chet Haase 表示:“在过去的两年中,Kotlin 受欢迎程度一直在提高,超过 50% 的专业 Android 开发人员现在使用 Kotlin 开发他们的应用”。
 
从今年 Stack Overflow 年度开发者调查的数据中也能看到这一点,Kotlin 在最受欢迎的编程语言排第 4 位。如下图所示,报告中指出,在开发者最喜爱的编程语言中,Kotlin 得到了 72.6% 正面反馈。
 

 
“我们宣布,我们正在采取的下一个重大步骤是 Kotlin-first,Android 开发将越来越多地以 Kotlin 为主”,Chet 表示:“许多新的 Jetpack API 和功能将首先在 Kotlin 中提供。如果你要开始一个新项目,你应该使用 Kotlin 编写,用 Kotlin 可以大量减少代码量,同时也减轻了测试和维护的负担。”
 
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 这样表示:
 
” 尽管当时我们已经开发了对几种基于 JVM 的编程语言的支持,我们还是基本都在 Java 环境下写基于 IntelliJ 的 API。IntelliJ 开发系统是基于 Groovy 和 Gant 的,Groovy 也用于测试,RubyMine 中还有一些 JRuby 代码,情况就是如此。我们希望转向更具表现力的语言从而提高生产力。同时,我们不能接受在 Java 互操作性或编译速度方面的妥协。“
 
Kotlin 与 Java 总是在主观比较
 
“Kotlin 比 Java 好”,“Kotlin 可读性比 Java 强”,“Kotlin 开发速度比 Java 快”,类似这样的陈述缺少相关准确数据的支持,所以都归为主观看法一类。
 
主观看法是个体开发人员在对与 Kotlin 或 Java 相关的主题作出一个或多个主观判断时形成。
 
开发人员的主观判断存在如下问题:
 
1、没有与主观判断相关联的量化指标。
 
2、主观判断存在很大的偏见。
 
3、主观判断的偏见在开发人员之间存在很大的差异。
 
由于没有与主观判断相关联的量化指标,建立在这些判断基础上的观点只是反映出了开发人员之前就有的偏见。不同的开发人员可能有着截然不同的偏见,因此,有开发人员认为 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?除了 Kotlin 的优势之外,还有某些原因,大家可能都懂的。
 
谷歌和甲骨文之间旷日持久的 Java API 侵权案件,从 2010 年开始,至今还没有定论。在 2019 年 1 月,Google 要求美国最高法院终止与甲骨文之间 Java 侵权案。
 
美国最高法院也犯了难,在 2019 年 4 月 29 日,把球踢给了特普朗联邦政府,寻求总统的建议。
 

 
如果这个案件甲骨文最终胜诉,谷歌预计要赔偿约 80 亿美元,所以谷歌又研发出这款新的移动端开发语言Kotlin。
不管怎么处理,现在作为安卓开发者的开发者们,你从 Java 转到 Kotlin 了么?
 

作者:周末的周小七
来源:21CTO社区


评论