Kotlin 和 Flutter 对于开发者究竟意味着什么?

                                                                                                                                  作者 | 段建华

                                                                                                                                  责编 | 唐小引

                                                                                                                                  出品 | CSDN(ID:CSDNnews)

                                                                                                                                  ?

                                                                                                                                  写在前面

                                                                                                                                  【CSDN 编者按】近些年来,编程语言流行度的变化其实不大,在?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 等新的技术。

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

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

                                                                                                                                  • 夯实基础;

                                                                                                                                  • 学好英语;

                                                                                                                                  • 提升学习能力;

                                                                                                                                  • 坚持总结归纳问题的习惯;

                                                                                                                                  • 增强分析问题,解决问题的能力。

                                                                                                                                  一个技术人员能够走多远,靠的不是会某种技术,而是完善以上高质量的素养。

                                                                                                                                  ?

                                                                                                                                  Kotlin 相关文章延伸阅读

                                                                                                                                  ?

                                                                                                                                  展开阅读全文

                                                                                                                                  没有更多推荐了,返回首页