Java失宠,谷歌宣布Kotlin现在是Android开发的首选语言(1),开发8年的老Android才知道

Kotlin的出现旨在通过更高效的语言提升开发者生产力,尽管存在主观比较,但其在效率、易维护性等方面的优势促使一些Java开发者转向。Google的支持和Android生态的变化预示着Kotlin的发展趋势。
摘要由CSDN通过智能技术生成

许多新语言的出现似乎都是源于对某种其它语言的厌倦,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 月份,谷歌不服判决上诉美国最高法院做最终裁决。)

事件的起因是在 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 做了什么:

  • 2017 年 11 月,Android Studio 3.0 正式开放下载,此版本的 Android Studio 将 Kotlin 语言支持集成到 IDE 中,在此版本上,代码自动完成和语法突出显示都可以在此版本上平稳运行,今年 4 月推出的 Android Studio 3.1 为 Kotlin 代码提供了更好的 Lint 支持,并通过为 Android Emulator 添加 Quick Boot 功能加快了测试速度。

  • 2018 年 2 月,Google 推出预览版本的 Android KTX,Android KTX 是一组扩展程序,它在 Android 框架和支持库上提供了一个良好的 API 层,使 Kotlin 代码更加简洁。

  • 在 Google I/O 2018 上,Google 发布了 Android Jetpack,它是下一代的 Android 组件,它将支持库向后兼容和立即更新的优点融合到更多组件中,提高开发速率和质量,不仅如此,Android Jetpack 将全面兼容 Kotlin,而且它还能利用 Android KTX 使得 Kotlin 代码更加简洁。

这些都是 Google 逐渐向 Kotlin 靠拢的证据,虽然还不至于让 Kotlin 完全取代 Java,但不难看出 Google 的“偏心”。事实上,Kotlin 自己也非常争气:2017 年 11 月,在第一届 Kotlin 专题大会 KotlinConf 上,Kotlin 首席设计师 Andrey Breslav 宣布 Kotlin 将支持 iOS 开发和 Web 开发,这意味着 Kotlin 向全平台开发迈出了重要的一步。

Kotlin 目前正处于发展的初始阶段,还有很多成长的空间。Google 现在是把它当成 Android 黄昏时期的救命稻草,它能与 Java 100% 互通,但它存在的目的并不是为了取代 Java,只是为了让开发者有多种选择。虽说编程语言只是软件实现的一种工具,开发者无论选择哪种语言都没有绝对的对与错。但在互联网时代,开发者应该懂得审时度势,拥抱变化,才能走得更远。

##小结
本人Java开发4年Android开发5年,定期分享Android高级技术及经验分享,欢迎大家关注~(分享内容包括不限于高级UI、性能优化、架构师课程、NDK、混合式开发(ReactNative+Weex)微信小程序、Flutter等全方面的Android进阶实践技术;希望能帮助到大家,也节省大家在网上搜索资料的时间来学习,也可以分享动态给身边好友一起学习!)

最后文末放上一个技术交流群:Android IOC架构设计

群内有许多技术大牛,有任何问题,欢迎广大网友一起来交流,群内还不定期免费分享高阶Android学习视频资料和面试资料包~

再推荐一篇文章:“寒冬未过”,阿里P9架构分享Android必备技术点,让你offer拿到手软!
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则近万的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

img

img

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:Android)

学习福利

【Android 详细知识点思维脑图(技能树)】

其实Android开发的知识点就那么多,面试问来问去还是那么点东西。所以面试没有其他的诀窍,只看你对这些知识点准备的充分程度。so,出去面试时先看看自己复习到了哪个阶段就好。

虽然 Android 没有前几年火热了,已经过去了会四大组件就能找到高薪职位的时代了。这只能说明 Android 中级以下的岗位饱和了,现在高级工程师还是比较缺少的,很多高级职位给的薪资真的特别高(钱多也不一定能找到合适的),所以努力让自己成为高级工程师才是最重要的。

这里附上上述的面试题相关的几十套字节跳动,京东,小米,腾讯、头条、阿里、美团等公司19年的面试题。把技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节。

由于篇幅有限,这里以图片的形式给大家展示一小部分。

网上学习 Android的资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。希望这份系统化的技术体系对大家有一个方向参考。

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

  • 26
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值