如何看待 Google 将 Kotlin 作为 Android 开发首选语言?

如果你觉得天气热不舒服,那一定是享受过凉爽之后才会有的感觉。你没有意识到 Java 的问题,那正说明你应该试试 Kotlin。

相比两年前第一次大范围的出现在公众面前,Kotlin 这一次其实有点儿顺其自然了,成为首选是情理之中的事儿,没什么大惊小怪的。

Kotlin 从 2016.2.19 发了 1.0 以来,基本上一年一个大版本的速度在发展,短短数年时间在行业内立足,并且向全平台推进,雄心可见一斑。不过观察来观察去,以前 Java 服务端的同学也许也开始慢慢尝试,但它的使用者仍然是 Android 开发者为主,这与 Google 的大力推荐有很大的关系,用群里一个小伙伴的说法就是:都是你们这些人闹得,整这么多技术学都学不过来——虽然这话有点儿小牢骚,但至少说明大家最开始都是被逼上梁山的。

我从16年就在公司项目的线上代码中各种尝试 Kotlin 的特性了,目前我自己基本上除非必须很少写 Java 代码,但这么长时间下来同组其他同学大多并没有表现出对 Kotlin 的热情,为什么?因为 Java 够用啊,能实现我的需求就可以了啊。我本也是想推动一下大家去使用的,但我偏偏又不爱干强人所难的事儿,因为如果我刻意去推大家转 Kotlin,会让 Kotlin 的切入变成是对现状的屈从、充满了来自行业的压迫感,这样会往往让大家忽略掉来自体验语言本身优秀特性的幸福感。所以我觉得没必要让语言的切换变成某种“政治”意义上的东西,它不应该是一种自上而下的做法,而应该是一种自下而上的革命。

我已经从事了好几年的 Kotlin 布道,Kotlin 对于我而言已经超出了工具的范畴,我会像追星一样关注它的发展,关注 Slack 上面的聊天,关注 GitHub 仓库的提交,这一切都来自曾经的不情愿和后来的“真香”。Kotlin 第一次进入我的视野源自一次 IntelliJ Community 源码的构建,当时看到后缀为 kt 的文件,我就崩溃了,Groovy 和 Scala 我还没学明白,怎么又来一门新语言——相信大家最初的想法都跟我一样,我当年不知道是有多么喜欢 Java——然而逼着自己学了几天 Kotlin 之后,就收到了“真香”警告,网上流传很久的一篇来自 Bugly 公众号的文章 Android开发必备知识:为什么说Kotlin值得一试 就是之后没过多久我在公司内部发表的一篇文章,后面又被 Bugly 公众号转载了出来。

Kotlin 究竟有多香呢?

讲个故事:我大学四年在重庆读书宿舍没有空调,而重庆的夏天有多热呢?据说在石头上打一颗鸡蛋都可以熟,上午下暴雨下午太阳出来半个小时就看不出任何暴雨痕迹,每年夏天总有那么几天不用上课是因为高温。。。十年前校内还是很流行的,一张全城热死的海报被疯狂转载。。。

解放碑 50° 么,我的天!

后来毕业后,终于可以自己装空调了,发现原来夏天还可以这么爽。现在倒好,出门热一会儿我都觉得难受。

那这跟 Kotlin 有什么关系呢?这就是用 Java 与用 Kotlin 的对比,也许你觉得用 Java 写代码感觉良好,那都是错觉,就好比你从小生活在炎热的天气从来不开空调,就根本不知道开空调有多舒服。

大家往往在推动别人使用 Kotlin 的时候,只会提到它的开发效率,安全性之类的,其实还要一个更重要的就是,它的很多语法特性与最新的编程思维接轨,你可以只学一门语言就可以领略众多编程方法、思路,所谓窥一斑而知全豹,一门语言让你既可以面向对象,也可以面向函数,既可以线程,也可以协程,既可以 Android 又可以 iOS。开阔眼界,提升思维能力是从码农到可以秀的码农的重要一环。

说到这里再引用别人的一个观点:当你掌握两门以上外语的时候才能够真正领略到外语的对你思考方式的影响。大意如此吧,说这话的人我估计是要算上英语之外要大家再掌握一门语言的,我不想过分纠结外语的问题,只是想告诉大家,编程语言也是如此。如果你只掌握了一门语言比如 Java,实际上你甚至相当于连一门语言都没有掌握,我在学习 Kotlin 的过程中与 Java 做了大量的对比,这个过程不仅没有让我的 Java 水平受任何负面影响,还实实在在的促进了对 Java 语言体系的认识和理解。

所谓身在其中自然不得其全貌,多学几门语言,你才能够解锁上帝视角。如果你想要在技术这条路上走得更远,那么请多多接触,作为 Java 开发者,不只是 Kotlin,我也还建议大家认真了解下 Python、JavaScript 还有 Go(如果。。算了,要学 Haskell 的人应该不需要看这篇文章) ,他们背后的生态差异会让你打开一扇又一扇新世界的大门。

共勉吧。


想要找到好 Offer、想要实现技术进阶的迷茫中的 Android 工程师们,推荐大家关注下我的新课《破解Android高级面试》,这门课已经更新完毕,涉及内容均非浅尝辄止,目前已经有300+同学在学习,你还在等什么(*≧∪≦):

扫描二维码或者点击链接《破解Android高级面试》即可进入课程啦!