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

作者 | 段建华

责编 | 唐小引

写在前面

【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 等新的技术。

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

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

夯实基础;学好英语;提升学习能力;坚持总结归纳问题的习惯;增强分析问题,解决问题的能力。一个技术人员能够走多远,靠的不是会某种技术,而是完善以上高质量的素养。

喜欢 就关注吧,欢迎投稿!

HI,周末在家学习吗?相关推荐

  1. 周末在家学习echarts

    周末在家没事,做了两个数据可视化的echarts图表,学到了很多有关echarts的知识点.现在总结一下,供各位同学一起学习,成长. 虽然工作中很少遇到那么炫酷的图表效果,但我们作为一名前端还是要不断 ...

  2. 周末时间学习Linux

    周末时间学习Linux 大家都是如何度过周末时光的呢?好多人都认为一周的工作后要好好休息下,于是在家疯狂的补觉,刷剧,打游戏,自我觉得很是正常,工作几天了,休息下不是当然嘛.是的,休息下很正常,但是把 ...

  3. 【个人成长】在家学习的这两个月

    反省 第一份工作,在湖南长沙,只维持了7个月,第二份工作,在深圳,只维持了10个月,我的前端职业生涯中的两份工作时间都很短.今年7月,上完最后一天的班,我没有马上找工作,马上入职下一家公司,因为,我觉 ...

  4. 在家学习的核心就是专注

    在学校有一个工作的flow 在家里 只能专注 一旦分心 在家学习就不行了

  5. 周末ROS学习沙龙第五期——IMU应用、红外应用、语音应用

    非博主原创,出于方便学习的目的,将周末ROS学习沙龙www.corvin.cn的课堂讲义PPT整理在这(老师讲得超棒!),无任何盈利目的,若有侵权则删除. Ros小课堂链接:https://space ...

  6. 周末ROS学习沙龙第四期——动作编程、dynamic_reconfigure动态参数更新、控制机器人移动、传感器数据处理

    非博主原创,出于方便学习的目的,将周末ROS学习沙龙www.corvin.cn的课堂讲义PPT整理在这(老师讲得超棒!),无任何盈利目的,若有侵权则删除. Ros小课堂链接:https://space ...

  7. 周末ROS学习沙龙第三期——launch文件、自定义服务通信、控制机器人移动、传感器数据处理

    非博主原创,出于方便学习的目的,将周末ROS学习沙龙www.corvin.cn的课堂讲义PPT整理在这(老师讲得超棒!),无任何盈利目的,若有侵权则删除. Ros小课堂链接:https://space ...

  8. 周末ROS学习沙龙第二期——自定义消息通信、视频传输、人脸检测、小车动手编程

    非博主原创,出于方便学习的目的,将周末ROS学习沙龙www.corvin.cn的课堂讲义PPT整理在这(老师讲得超棒!),无任何盈利目的,若有侵权则删除. Ros小课堂链接:https://space ...

  9. 周末ROS学习沙龙第一期——ROS历史、安装、消息话题节点服务等概念、SLAM导航框架及参数、小车上运行SLAM

    非博主原创,出于方便学习的目的,将周末ROS学习沙龙www.corvin.cn的课堂讲义PPT整理在这(老师讲得超棒!),无任何盈利目的,若有侵权则删除. Ros小课堂链接:https://space ...

最新文章

  1. UE:增强现实AR可视化基本概念
  2. 软件缺陷预测的两种定义
  3. Linux系统基础-管理之用户、权限管理
  4. 漫画:5分钟弄懂分治算法!它和递归算法的关系!
  5. CentOS 上安装MYSQL+Apache+PHP
  6. 深度学习核心技术精讲100篇(六十三)-【CNN】一文详细讲解前因后果
  7. JEPaas代码((列表,表单)确认入库按钮
  8. HadoopSourceAnalyse --- Nodemanager Container request handler
  9. Docker 精通之微服务
  10. Java面向对象部分小结
  11. poi doc转docx_编写简历及Python转Word文档为Pdf(续)
  12. 那些实用的Nginx规则
  13. Spring - 理解BeanDefinition
  14. 大数据处理应遵循的四大原则
  15. 手机用html电视,4种方法教你手机如何连接智能电视
  16. 上海十大最美婚纱摄影外景地推荐
  17. CentOS命令行模式下设置屏幕常亮----没有达到预期效果
  18. 热搜!中科大一博士生打印学位论文,分量堪比书籍!可“惨”的是...
  19. 对你影响最深的计算机书籍是哪一本?
  20. Spring Boot之@Transactional无法生效的问题分析

热门文章

  1. 离职退群也需要技巧,快来明白这3点
  2. android 如何混淆以及排查混淆后不明Bug
  3. 兵装开关电源,替代明纬电源的最佳选择
  4. [转载]机器学习深度学习经典资料汇总,全到让人震惊
  5. Flutter仿今日头条TabBar
  6. 华为android9手机短信不提醒设置,华为Mate 9微信消息不提醒怎么办?华为Mate9微信不提醒的解决方法...
  7. 普通人解决问题,高手解决提出问题的人
  8. 用Python写了一个网页版的美图秀秀,惊呆了
  9. FPGA 视频 拼接器传输 4k(3840x2160)@30hz的架构
  10. linux定时重启tomcat的脚本,linux定时重启tomcat服务的脚本学习