文章原文地址如下:https://antonioleiva.com/reasons-kotlin-android/
本文结合自己的感受,做一下简单的翻译。原文作者也是《Kotlin for Android developer》的作者。此译文供大家学习参考之用。
这12个你应该从现在开始使用Kotlin开发Android的理由
即使是现在Kotlin已经成为官方支持的,用于开发Android 应用的程序语言,你可能还是觉得这个理由不足以让我们做出改变。这么多年Java已经被证明是满足开发的需要的,为什么我们要来改变?
开发语言切换至Kotlin,这样做非但不是冒险的赌博,可能是你做的最好的事情,下面是我为什么这样认为理由。
1. 语言和环境是成熟的
不像其他语言,和Swift类似,在最终1.0Release版本前,Kotlin经历了许多阶段。这意味着,你在工作中使用Kotlin时碰到的任何问题,都可能被预见到了。相关IDE插件使用比较顺畅,使用Java及多种你喜欢的特性,会让你觉得用Kotlin工作是很舒服的。有意思的是,在你知道的最终Release1.0版本前,开发团队花了几年时间在alpha和beta版本上面。
2. Kotlin让Android开发工作更容易
如果你读了那些关于Kotlin的系列文章,你或许能逐步清晰明确自己的想法。如果你们是来自Java开发领域的,就知道Kotlin使用强大且简洁的混合风格,但又不是你想象的翻天覆地的变化。我真的认为,在开发Android应用的语言中,它是仅有的可以替代Java的。其他替代方案,如Scala太重,而且编译时间和相应工具链也不是特别完整。(了解过ruboto和go的一些方案,都无法和Kotlin比,ruboto是Ruby解决方案)。现在Kotlin编译时间已经相当接近Java(在某些测试中,它甚至还更快点),而且用Kotlin写的APP应用,使用必要的底层库也是很小的,因此不会增加太多方法数。
3. Android Studio 无缝集成
这个听起来很傻,但是从第一分钟开始所有的东西工作起来都很好。你可以试着,即使你对kotlin一无所知,不到10分钟,用Kotlin创建项目和准备开工,那没有任何问题。AndroidStudio2.3你需要安装Kotlin相应的插件,而在3.0上,已经平顺集成了整个开发环境(2017年10月底,Android Studio 3.0 Release正式发出)。整个工作感觉和你使用Java是一样的:你能用IDE跑程序、使用断点来的debug问题、重构代码、 使用启动...,每个你能想象的都可以工作。
4. Kotlin发展演进背后是有很好支持的
Jetbrains是Kotlin背后的公司(也就是AndroidStudio的母公司),他们在自己的许多项目中使用它,因此会投入更多,更有兴趣来发展它。当然,特别关于Android,现在Google来声明支持,我们有2个超级大公司一起支持,使它成为我们开发环境中最好的语言和工具。像来自Kotlin AndroidExtensions特性,像anko的库大小和编译时间的优化,可以让我们看到Jetbrains投入大量的精力到Android上面(补充一下,特别像JakeWason这样的大牛使用Kotlin编写相应的框架,也是对Kotlin的发展的支持。)
5. 如果你是Android开发者,你需要不断学习
让我们首先要面对的是:用Java6来工作,使我们成为过时的程序员。直到我学习了Kotlin,才意识到。只有当你使用了一种更现代编程语言,才开始一种不同的思维方式。如果你不改变语言,这些新知识不会在你的代码中展现。即使现在使用Java的过程中,我也是用不同的方式。这是得益于,在学习新语言的时候,由新语言中支持的一些概念和原理得到的启发。还有你会变得更加多面手,之后你可能会关注(甚至使用)一些新的语言,比如Swift、Groovy、Ruby... 而且由于他们使用的一些类似的语法糖,你可能会更容易理解。比如Lambda表达式、扩展函数、集合的函数操作、密封类、数据类等等...。可能有不同的名称,但是你可以在大部分现代语言中找到。所以你只要在脑袋中从一个语言映射到另外一种语言,那样就很容易转换过来。虽然我们喜爱Android,作为开发者从一个语言和平台跳到其他语言和平台,会给你们带来巨大的价值。
6. Kotlin比Java更安全
你可能无法想象,我被Java中的NullPointerException搞的有多累。事实上我每次看到这个异常都是很受挫的,因为其实是程序语言设计问题。我不能否认,现在我们可以通过一些工具,例如注解或者设计模式,可以帮助我们规避部分NPE风险。但实际上需要花费额外的时间和金钱来做一些工作。我们不能只讨论Null。下面这些就是通过使用Kotlin来实现的:
较少的错误(编码量的减少理论上降低错误率,使程序更稳健)
通过把Java的运行时错误,变成Kotlin的编译时错误,帮我们更早发现问题。
代码的可读性更强,较难引入错误
代码做了什么和没有做什么更清晰,为我们规避了一些模板文件(克服语法缺失的部分功能)。
可以肯定,花更少的时间完成转换工作,更好的稳定性,更少的时间花在修改bug。
7. 在生产环境已经有知名公司在使用Kotlin了
比如:Pinterest(国内的话饿了么20多个App,有3个纯kotlin和一个混合App、沪江等)在他们的Android应用中使用Kotlin及其新特性。你可以听一下ChristinaLee讨论的关于他们开始使用Kotlin时候的经验。另外的一个较好的例子是Basecamp,他们的Android App 已经100%使用kotlin重写了。在Kotlin网站,你能看到没有特别大的争论,有一个不断增长的,正在生产环境使用Kotlin的公司列表。
8. 很多企业已经在他们的JD中把Kotlin作为要求的一部分(在国内不多)
这些公司不仅在使用Kotlin,并且其他有部分企业开始对Kotlin感兴趣。在西班牙我开始帮助大公司来培训Kotlin,而且感兴趣的公司也在变多。有一些比较好的现象就是很多商业公司开始花费钱来培训他们的雇员使用Kotlin。
9. Kotlin是多平台
你们学习Kotlin不只是用来写Android应用。Kotlin首先是用JVM来构建的,因此它可以在任何能跑JVM的任何机器和设备中使用。而且在Kotlin1.1,Kotlin JS 也迎来了第一个Release版本,因此你们也能在前端使用Kotlin。而且还不止与此,这得感谢gradle的支持,你可以使用Kotlin编写gradle文件,还要感谢Kotlin Native,未来在其他平台可以作为基础库开放出来。编写Android App只是Kotlin的冰山一角。
10. 小环境是有益处的
即使现在Kotlin还不适合大部分公司,但还是有公司开始使用它。而且使用它的公司列表也在增长,他们需要Kotlin专家。他们是一些冷僻程序员语言专家,正是由于他们有这些语言经验,使他们获取较多的薪资。在Google公告之后,Kotlin也不会再是小环境,但是使用Kotlin还是会让你更突出。
11. Kotlin很容易学习
Kotlin很棒的优势是作为Java开发者在没有写过任何Kotlin代码的情况下理解大部分Kotlin代码。这是因为Jetbrain的人,很关心从Java转换要简单,这个语言是否接近或者和你已经知道的是否相似。感谢语言的简易性,IDE和编译器帮助,你们能很快掌握语言的基础。Kotlin自身语法,只是在理解Java缺乏的概念上有相对复杂的部分。我认为大部分人(使用Java的程序员)能在2个星期内开始舒服的编写Kotlin代码。
12. 使用它有乐趣
可以断定,也是非常主观的、我感觉Kotlin使用起来真的很有意思。由于Java一些语法特性(大量模板代码和错误处理上的语法设计)上面的限制让我越来越厌烦。然而Kotlin给我们带来一个去创造新世界的可能,用不同的方式去解决一些问题。作为Android开发者,我发现我在计算机前的时间,日常任务被简化,并且开始享受其中。
结论
我的观点:Kotlin是一个友好的的语言、很有趣、启发你的思维、有不同的思考、(以上所有)让它可以生产环境中使用。我计划为Android开发者介绍Kotlin,至少提供30个主题。我持续发布7个月。Kotlin1.1和Google通告后,很多东西在改变,我希望人们开始学习Kotlin并且使其成为我们很好的工具,推进学习曲线。如果你要学习例子和快速切换到kotlin,我推荐你使用这边书《Kotlin for Android develop》,在你学习Kotlin的过程中你们能学习到如何创建完整的应用。当然,我会持续编写关于Android和Kotlin的主题文章。
我的观点
A 目前Google和Jetbrains 2大公司的支持,加上JakeWason等大牛支持,从语言特性,工具链再到成熟的第三方库,已经是相当完善的支持了,虽然国内的大厂商使用不多。但是我觉得函数式编程语言走向广泛的应用,这个是大趋势。而且Android平台借此可以规避JDK API 知识产权问题的风险。
B Kotlin的函数式编程语言特性加上一些语法糖,对于Android或者Java开发者有少许学习成本,还是比较容易转换过来的。切换过来之后确实能有一些效率上面的提升,更重要的是对函数式编程会有更好的理解。学习新的东西,对程序员个人来说也是一个良性的刺激吧。
C 具体的到正式的生产环境,现有的项目,可以慢慢引入Kotlin,混合使用。做一些相对独立的功能模块。如果是新的项目而且时间不紧张的情况下面可以直接从零开始完全使用Kotlin。
最后加上线上Kotlin for Android 教程
https://kotliner.cn/post/6292540246044377088