社区大神们对Kotlin的观点:
- 只是语法糖而已
- 这句话倒没有错,然而作为一个工程实践导向的语言,并非为了证明某项理论或者政治正确,为了工程中更好用是第一要素,泛泛而谈,各位写的各种方便使用的小工具、inline函数等,不也是语法糖么?
- 开发中遇到各种坑
- 这个可以理解,但是其根本上 Java 100% 兼容(虽然不在同一个文件),这就意味着遇到坑不会出现像其他语言一样不可挽回的,只能很丑陋的做 trick 的情况
- 支持Kotlin的原因是和Oracle撕逼
- 这个...我无力吐槽,换句话说,我们关注的应该只是语言本身的特性和优缺点,背后的逻辑我想我们可以不必过于关注
- Groovy 、Template Plugin 可以实现 Kotlin 的各种功能
- 这句话也没错,就好比 C++ 认为 Java 的所有功能自己都能实现,而且性能甩 Java 十条街,但是这真的有意义么?一个好的语言应该是让大家更乐于迁移,更乐于接受,我想 Kotlin 的微信指数暴增就说明了这一点,而相比起来,Go 的生态要从零构建,不在一个起点
正文:
-
赶时髦
最近 Kotlin 的讨论,在我的知乎时间线上成爆发趋势,大多数情况下我并不是一个赶时髦的人,然而 Kotlin 的火热超出想象,甚至微信指数一度超越 Java,好奇心驱使我一定要尝试了一下。在之前多年的职业生涯中,我编写了大量的 Java 代码,对 Java 语法的啰嗦是有深刻体会的,可以说要不是因为大量的项目维持在 Java 平台,肯定早就切换到其他语言了(比如 Python 现在是我的首选语言)。对于其他的一些 JVM 语言其实也都拿来在工程上时间过,比如 Scala(鉴于其巨难用的 SBT 果断放弃,不知道近况如何了),也有一些其他的小众 JVM 语言,我在工程上用了之后根本没有他们说的那种酷炫的效果,根本就是假的,都是特效。对于 Kotlin,我抱着试一试的态度试学了两个疗程,经过一周左右的熟悉和改造(特意找了一个较为复杂的旧全文检索项目进行了改造,代码量缩减为 1/3),和大部分人的谨慎态度不一样,我认为 Kotlin 有巨大的潜力全面替代 Java。
-
体验
以下这几点是我在实践中最喜欢的:- 代码的大幅度精简
- 100% 兼容 Java 代码
- 函数式编程
- 各种语法糖
感想
我认为 Kotlin 有望成为替代 Java 成为新的工业语言(当然对于新人来说入门门槛是提高了一些),目前 Google 宣布 Kotlin 成为Android 一级语言,我相信并非由于部分人说的和 Oracle 的专利之争,而是实实在在期望全面提升 Android 的开发效率和语言层面的特性支持(Java 8 才支持 stream 操作,而且语法依然很难看,可见当权派多么固执)。Google 和 Jetbrains 的深度合作也让人浮想联翩,下一步收购 Jetbrains,大力推广 Kotlin 语言也不是不可能(毕竟据说 Swift 在国外已经是主流了,咱码农灯塔也不能老守着古董级的 Java 不放),而 Jetbrains 推出的各种开发神器之成功也是有目共睹的。100% 兼容 Java 也并非噱头,而是实打实的支持,甚至 IDE 可以支持直接将 Java 代码转换成 Kotlin 代码(目前我自动转换了很多代码,仅遇到一例位操作转换失败)。总结起来,切换成本几乎没有(绝大多数情况可以依赖 Jetbrains 的神器自动转换 Java 代码),同时有巨头亲爹,未来的光明前途不可限量。-
学习和迁移
官方网站的文档和例子非常详实,一个成熟的 Java 开发者应该很容易快速按照官网的例子学会。如果您是编程初学者并且英文不是很好,不建议在现在这个阶段将这门语言作为第一语言(中文社区资源还不是特别丰富)。对了,Spring 5 专门为支持 Kotlin 做了大量的工作,就问你怕不怕:
预祝大家早日脱离 Java 苦海,拥抱 Kotlin,节省 50% 工作时间,来场说走就走的旅行。