相信Android 开发者都会或多或少听说过 Kotlin,有人说Kotlin就是IOS的Swift语言,那Kotlin是什么东东,有什么用?
虽然Java曾经是Android的官方语言,也曾得到Google的大力推广,但一直苦于版权问题,2017年,Google把kotlin定义为Android的官方语言,2018.04Google与Oracle更是涉及88亿美金的Java版权案,这让一向以自主创新的Google加快推广新语言。
Kotlin出处
Kotlin由JetBrains负责维护, 在2011年宣布发布, 2012年正式发布第一个版本, 2016年发布1.0版本. 目前最新的版本是3.1.2;JetBrains是IntelliJ IDE的开发商, Android Studio是基于IntelliJ的;JetBrains真的是一家伟大的科技公司,在IDE领域有了丰厚的积累,创建了一系列跨平台开发环境: IntelliJ IDEA, PyCharm(Python开发工具)…,这些IDE覆盖了主流编程语言C/C++, Java, Php, Web, Python, Ruby, Scala。
我也奇怪,Kotlin也不是Google,为什么会被列为官方语言呢?而不用自已亲儿子Go语言?Google与JetBrains之前是什么关系?不怕以后也涉及版权争议?为什么主流的IDE都是国外的,而国内没有呢?
Kotlin定义
Kotlin,如前面所说,它是JetBrains开发的基于JVM的语言。JetBrains因为创造了一个强大的Java开发IDE被大家所熟知。Android Studio,官方的Android IDE,就是基于Intellij,作为一个该平台的插件。
Kotlin是使用Java开发者的思维被创建的,Intellij作为它主要的开发IDE。对于Android开发者,有两个有趣的特点:
- 对Java开发者来说,Kotlin是非常直觉化的,并且非常容易学习。语言的大部分内容都是与我们知道的非常相似,不同的地方,它的基础概念也能迅速地掌握它。
- 它与我们日常生活使用的IDE无需配置就能完全整合。Android Studio能够非常完美地理解、编译运行Kotlin代码。而且对这门语言的支持来正是自于开发了这个IDE的公司本身,所以我们Android开发者是一等公民。
但是这仅仅是开发语言和开发工具之间的整合。相比Java 7的优势到底是什么呢?
- 它更加易表现:这是它最重要的优点之一,可以编写少得多的代码。
- 它更加安全:Kotlin是空安全的,也就是说在我们编译时期就处理了各种null的情况,避免了执行时异常。如果一个对象可以是null,则我们需要明确地指定它,然后在使用它之前检查它是否是null。你可以节约很多调试空指针异常的时间,解决掉null引发的bug。
- 它是函数式的:Kotlin是基于面向对象的语言。但是就如其他很多现代的语言那样,它使用了很多函数式编程的概念,比如,使用lambda表达式来更方便地解决问题。其中一个很棒的特性就是Collections的处理方式。
- 它可以扩展函数:这意味着我们可以扩展类的更多的特性,甚至我们没有权限去访问这个类中的代码。
- 它是高度互操作性的:你可以继续使用所有的你用Java写的代码和库,因为两个语言之间的互操作性是完美的。甚至可以在一个项目中使用Kotlin和Java两种语言混合编程。
Kotlin生来就是为了弥补Java缺失的现代语言的特性,并极大的简化了代码,使得开发者可以编写尽量少的样板代码。Kotlin是一门包含很多函数式编程思想的面向对象编程语言。
Kotlin选择
我是在14年接触Android Studio,刚使用AS还是比较犹豫的,因为AS非常占用PC内存,且早期的版本也不稳定,虽然AS有很多优越性,但我也拖到16年初才把工程切到AS,那时AS的版本已经很稳定了。那现在是不是选择了Kotlin就意味着放弃Java呢,冷静下来想一想,其实并不是那么回事,因为Kotlin与Java语法太相近,以及在Kotlin中无时无刻不在和Java相关的东西打交道,所以这点顾虑不是问题的。
对于个人的项目来转向 Kotlin,通常不是很难的选择,毕竟 Kotlin 是那么优秀的语言,相信很多人还是愿意尝试并使用这个事半功倍的语言的。
而比较难抉择的情况是如果如何让团队转用Kotlin,个人认为团队难以转用的原因有很多,比如学习成本,历史包袱等等,但其实根本原因还是思维方式的问题。
老外喜欢用工具来提升开发效率,因为人力成本很高。而国内团队提高效率的办法通常是增加成员。