更多阿里P7架构进阶学习视频:阿里P7Android架构进阶学习视频回放
近些年来,编程语言流行度的变化其实不大,在 TIOBE 编程语言排行榜上,Java、C、C++ 固若金山,也就只有 Python 会攻城略地成为第四。在这 TOP3 之中,Java 以其非常优秀的普适性,可以用于前后端开发,再加上非常成熟的 JVM 虚拟机以及整个 Java 生态,让 Java 这个老大哥常年雄踞 TOP1,在 CSDN 的 Java 相关的文章之中,常有用户留言调侃“Java:你们随便争,反正我 Java 是第一”也可窥见一二。

而从两年前 Google 正式宣布 Kotlin 成为 Android 官方支持的语言开始,对于“Kotlin 即将取代 Java”的讨论便甚嚣尘上从未停歇。彼时,Kotlin 这个诞生于 2011 年的小伙子让已经使用了 Java 多年的 Android 开发者们有了点不可言说的滋味。同时,在过去的数年之间,伴随着 Oracle 与 Google 纷争不止,业界“Oracle 要玩死 Java”之声亦是不绝于耳。

Java 8 更新,Oracle 将“删除”按钮设置成了高亮

2017 年,面对着 Kotlin 这个 Android 开发新贵,Realm 直接给出了一个预测,就是“到 2018 年底,在 Android 开发领域,Kotlin 将超越 Java,成为开发 Android 应用的第一语言”。

如今,时间上虽然稍晚了几个月,但这份预测却成为了现实。

那么,当今天 Google I/O 大会上,Kotlin 取代 Java 成为 Android App 开发的首选语言之时,对于我们移动开发者而言,究竟意味着什么?同时,当 Flutter 带着一统 App、Web、桌面及嵌入式开发之势而来之时,移动开发者该怎么办?对此,CSDN 特别邀请在国内 Android 圈子中较早研究 Kotlin 的段建华(@技术小黑屋)来解答目前开发者们最为关心的问题:为什么 Google 会越过 Java 让 Kotlin First?

采用 Kotlin 与 Oracle 版权有关系么?

其实可能没有关系。

这场起自 2010 年的诉讼案,几经反转,曾一度惊动美国最高法院,从最初的专利和版权侵权到最后聚焦在 Google 是否合理使用了 Java 的 API。但是 Oracle 自始至终都不是在控告 Google 允许开发者使用 Java 来开发应用程序。

而真正让 Kotlin 被 Google 采用的原因其实是 Kotlin 自身的优点,譬如安全、简洁、实用,以及与 Java 可交互良好等特点。除此之外,Kotlin 在相对很早的时候就在国外的知名公司用来开发 Android App,有着不错的氛围和环境,这也为其裂变发展贡献了不小的功劳。

Kotlin First 对于 Android 开发者究竟意味着什么?

首先对于 Google 来说,应该意味着更进一步地放弃 Java。这会导致更多的 Android 库出现对应的 Kotlin 实现,甚至可能是只有 Kotlin 版本,Android Studio IDE 也会出现更多的倾向于 Kotlin 的特性和支持等。结果可能会是 App 开发者进一步向 Kotlin 靠拢,而 Java 则相应地被进一步孤立。

其次,对于 Android 开发者来说,当本届 I/O 大会 Google 宣布 Kotlin 作为 Android 首选开发语言那一刻,再次证明我们使用 Kotlin 是正确的。内心都是无比 Exciting,充盈着一种满满的被认可感,而这势必会让更多的 Android 开发者投向 Kotlin 的怀抱。

同时,至关重要的是体现在业务上,对于管理者来说,会有更大的信心和更强的动力去推动团队完成从 Java 到 Kotlin 的转变。

事实上,当前在 Android 研发的招聘中,大部分招聘 JD 都会包含希望求职者具备 Kotlin 编码能力的描述,而面试者的简历也会提到自己学习或者项目应用 Kotlin 等内容。

并且,目前笔者从各种渠道了解到,大部分的公司都已经使用 Kotlin 作为首选开发语言,而且积极效果反馈明显。

看完移动端,我们再看服务端,不同于 Java 在后端的良好表现。尽管就 Kotlin 来说,除了前文所述的优点之外,协程是一大吸引,但 Kotlin 在中后台开发人员中的流行度可能并不会像在 Android 上这么顺利,究其原因,主要还是:

缺乏官方权威或大公司背书来提振威望;
相关的框架需要进一步丰富;
CSDN 编者注:对于这一点,在 CSDN《2018 – 2019 中国开发者调查报告》中,拥有十几年移动开发经验的轻芒联合创始人范怀宇对此表示:Java 的 Web 框架经过千锤百炼已经可以支撑足够大的并发,JVM 经过长年优化性能表现也非常出众,而 Java 的各类库、统一的编程模型、丰富的人才储备,可以满足各种场景的诉求。

相应的中文社区和氛围需要增强。

但无论如何,Kotlin 的确称得上是 Java 程序员近在咫尺的小确幸,你需要做的就是抓住它,不要错过。

Google 同推 Flutter 和 Kotlin,那么移动开发者该如何做选择?

我们再来看 Google 在移动端另一重推的框架,Flutter 自问世伊始便被寄予厚望,从开始的支持 Android 和 iOS 开发到现在的全平台(Mobile、Desktop、Web、Embedded),几近于真正地实现了数年来程序员梦寐以求的“Write once, run anywhere”的愿景。

因此相对而言,Flutter 显得更加有诱惑力,因为它是一个跨平台开发的解决方案,我想这也是大多数人给出的答案。

但是也有很多原因会导致你无法选用 Flutter,如下不完全列举:

Flutter 需要使用 Dart 语言,没有第二语言。Dart 令人诟病的方面也不少;
对现有技术投入较多导致沉默成本过大,甚至是难以负担;
保守主义,避免过早地对某项技术投入资源;
领域限制,Flutter 无法满足要求。
Kotlin 的被钦定可以解读为 Android 开始逐渐放弃 Java 语言这个开发依赖,而 Flutter 的推出可以被理解成 Google 开始放弃 Android,迎接新操作系统 Google Fuchsia 的准备。

出于综合考虑且必须二选一的情况下,建议你选择 Flutter,但是如果你有兴趣见识一种比 Java 更安全,更简洁,更实用,更优雅的语言的话,我也推荐你学一学 Kotlin。

Flutter 很有前途,但 Kotlin 也会让你欲罢不能,这确实是一件麻烦事。

基于同时,对于我们所有技术人来说,一个非常头疼且不由得恐慌的问题,那便是如何应对日新月异的技术?

这可能是越来越多的以工程为主的开发者面临的问题,因为今天有 Kotlin 和 Flutter,明天或许就会冒出来 Gotlin、Hlutter 等新的技术。

日新月异层出不穷,不断追求学习并不现实,反而有可能把自己搞的很累,甚至是产生负面效果。新技术固然可以学习,但是作为技术人,获得完善的素养显得更加意义深远。

笔者认为一个技术人员想要具备完善的素养,需要朝着这些方向努力:

夯实基础;
学好英语;
提升学习能力;
坚持总结归纳问题的习惯;
增强分析问题,解决问题的能力。
一个技术人员能够走多远,靠的不是会某种技术,而是完善以上高质量的素养。
原文链接https://droidyue.com/blog/2019/05/12/kotlin-vs-flutter/
更多阿里P7架构进阶学习视频:阿里P7Android架构进阶学习视频回放

Kotlin 和 Flutter 对于开发者究竟意味着什么?的更多相关文章

  1. 宋宝华:swappiness=0究竟意味着什么?

    http://mp.weixin.qq.com/s/BixMISiPz3sR9FDNfVSJ6w 本文解释swappiness的作用,以及swappiness=0究竟意味着什么. 内存回收 我们都知道 ...

  2. iOS8 对开发者来说意味着什么?

    今天凌晨,Apple WWDC2014 iOS8 正式推出! 也许,对于广大iOS用户来说,iOS8的创新并不是特别多. 但对于开发者来说,影响却将会是无比巨大的! 正如Apple官网上的广告:Hug ...

  3. iOS开发者学习Flutter

    Flutter for iOS 开发者 本文档适用那些希望将现有 iOS 经验应用于 Flutter 的开发者.如果你拥有 iOS 开发基础,那么你可以使用这篇文档开始学习 Flutter 的开发. ...

  4. Kotlin 初窥门径[1]:基础概念

    Kotlin 是由 JetBrains 开发的基于JVM的语言.JetBrains 因为创造了一个强大的Java开发 IDE(Intellij) 而被大家所熟知.Android Studio 就是基于 ...

  5. 弃 Java 而使用 Kotlin 的你后悔了吗?| kotlin将会是最好的开发语言

    自从 2011 年发布以来,Kotlin 凭借强大的功能在开发者中的欢迎程度与日俱增.且在一年前,Google 宣布 Kotlin 正式成为 Android 官方开发语言,由此引发了从 Java 迁移 ...

  6. Flutter 一些常用第三方库、插件

    网络请求 http ^0.12.0+2 https://pub.dev/packages/http https://github.com/dart-lang/http 该软件包包含一组高级函数和类,可 ...

  7. 自绘引擎时代,为什么Flutter能突出重围?

    导语 | Flutter 框架是当下非常热门的跨端解决方案,能够帮助开发者通过一套代码库高效构建多平台精美应用,支持移动.Web.桌面等多端开发.但仍然有很多产品.设计.甚至开发同学并不了解 Flut ...

  8. 开源分享:谷歌大佬联合打造《高级Kotlin强化实战(附Demo)》

    Kotlin 以其简洁的特性而闻名,而在我们的实践中,更加简洁就意味着更加高效.事实上,在使用 Kotlin 的专业 Android 开发者中,有多达 67% 的人表示 Kotlin 已经帮助他们提升 ...

  9. 如何高效、快速学习Flutter?如何避坑?(文末送服福利)

    稳住,今天是周末,不过我今天要上班....啊..啊... 对于 Flutter 我没有太多的发言权,不过GSY是对 Flutter 充分理解并精深掌握的前辈了,所以转一篇他对 Flutter 的一些解 ...

随机推荐

  1. selenium报错TypeError: 'FirefoxWebElement' object is not iterable

    报错原因element少了s定位一组元素的方法与定位单个元素的方法类似,唯一的区别是在单词element后面多了一个s表示复数. 改为 返回结果为

  2. python网络爬虫实战之快速入门

    本系列从零开始阐述如何编写Python网络爬虫,以及网络爬虫中容易遇到的问题,比如具有反爬,加密的网站,还有爬虫拿不到数据,以及登录验证等问题,会伴随大量网站的爬虫实战来进行. 我们编写网络爬虫最主要 ...

  3. Shell脚本中判断输入变量或者参数是否为空的方法

    shell判断一个变量是否为空方法总结 https://www.jb51.net/article/154835.htm 1.判断变量 复制代码代码如下: read -p "input a w ...

  4. python 批量爬取四级成绩单

    使用本文爬取成绩大致有几个步骤:1.提取表格(或其他格式文件——含有姓名,身份证等信息)中的数据,为进行准考证爬取做准备.2.下载准考证文件并提取出准考证和姓名信息.3.根据得到信息进行数据分析和存储 ...

  5. 搭建 webpack、react 开发环境(三)

    配置 react-router-dom   我们开发一个 React 工程肯定不是一两个“页面”就可以满足需求的,所以我们需要一个在多个“页面”中跳转的功能,在使用 React 构建的单页面应用中,要 ...

  6. java虚拟机规范(se8)——class文件格式(二)

    4.4 常量池 java虚拟机指令并不依赖类.接口.类实例或者数组的运行时布局.相反,指令依靠常量池中的符号信息. 所有的常量池条目都有如下的通用结构: cp_info { u1 tag; u1 in ...

  7. 【目录】Identityserver 4 老张的哲学

    随笔分类 - .IdentityServer4 从壹开始 [ Ids4实战 ] 之四 ║ 用户数据管理 & 前后端授权联调 摘要: 前言 哈喽~~~ 大家周一好!夏天到了,大家舒服了没有,熟话 ...

  8. Spring学习笔记(10)——方法注入

    引用 在大部分情况下,容器中的bean都是singleton类型的.如果一个singleton bean要引用另外一个singleton bean,或者一个非singleton bean要引用另外一个 ...

  9. 搭建git服务器遇到的问题

    1.错误提示: remote: error: insufficient permission for adding an object to repository database ./objects ...

  10. 十、hibernate的延迟加载和抓取策略

    延迟加载:控制sql语句发送时机 抓取策略:控制sql语句格式,子查询.连接查询.普通sql 延迟加载 延迟加载(lazy),也叫做懒加载:执行到该行代码时,不发送sql进行查询,只有在真正使用到这个 ...