说到 Android 开发,我大胆猜测你会下意识想到一种编程语言:Java。
不可否认大部分的 Android app 都是基于 Java 编写的,但是对于Android 开发,Java 并不是唯一选择。
其实,任何一种能在 Java 虚拟机(JVM)上运行的语言来编写 Android app。这段时间,有一种兼容 JVM 的编程语言在 Android 社区十分抢眼,它就是 JetBrains 出品的静态编程语言——Kotlin。
如果你已经对听到许多人对 Kotlin 赞不绝口并且跃跃欲试,那么时机正好。下面我将分为三个部分,循序渐进地介绍和分享如何使用 Kotlin 开发 Android app。
首先,我建议你先想一想,为什么想要从 Java 换到 Kotlin,然后我会对你的选择给出意见。
怎么就要换了?
Java 是使用最广泛的编程语言之一,而且也算是 Android 开发的官方语言(译者:其实 Google 好像没有明确表示过吧)。但是,Java 并不是最佳选择,原因有很多。
最大的原因是,Java 已经不是一种现代化语言了。尽管 Java8 加入了许多开发者翘首以盼的新特性(包括 lambda 表达式),但是在 Android 平台上只能使用一部分 Java8 的新特性,而且短时间内这种情况并不会改善。所以如果你还是用 Java 来开发 Android 的话,那估计只能跟 Java7 慢慢玩了。
并且,Java 还有许多“记录在案”的语法黑点,比如多层 try-catch
,扩展性极差,危险的空变量(还有饱受诟病的 NullPointerException
),就跟别说不支持函数式编程什么的了。虽然 Java 已经很积极地在添加一些函数式编程的功能,比如 lambda 表达式和函数式接口,但无济于事,因为 Java 的本来就是过程化语言。
Kotlin 的优势
说到这里,可能有人就想换一种更加年轻的 JVM 编程语言了。刚好,Kotlin 可以无缝编译成 Java 字节码,而且自身还带有几种特质在众多 JVM 语言中脱颖而出。
与 Java 可互操
Kotlin 其中一项牛批的技能就是与 Java 100% 可互操(cào)。意思就是说,你可以在一个项目中一遍撸 Java,一遍撸 Kotlin,毫不违和。下面一张图,可以看到有分别用 Java 和 Kotlin 写的 Activity
,而且用户察觉不了哪个是 Java 写的,哪个是 Kotlin 写的。
既然 Kotlin 和 Java 在同一项目中可以互存,那么就不用大动手脚去把整个项目迁移到 Kotlin 上或者重开一个 Kotlin 项目,你可以直接在现有的 Java 项目上操作。
正是有了这种互操性,我们可以直接在手头的项目中用 Kotlin 尝试开发一部分的代码,而不需要担心会影响到项目的其他部分。我们可以在保有已有 Java 代码的情况下使用 Kotlin 来开发现有项目中新的模块,或者直接一次性把整个项目迁移到 Kotlin 上。
更加爽的是,Kotlin 可以使用几乎所有的 Java 库,甚至是基于注解处理的高级框架。
平缓的学习曲线
更大程度上,Kotlin 是来增强改善 Java 的,而非把其推倒。所以,很多在 Java 中学习到的知识其实都可以应用到 Kotlin 上。
同时,Kotlin 的设计初衷是为 Java 开发者提供平缓的学习曲线。Java 开发者其实会发现很多 Kotlin 的语法是跟 Java 很相像的,比如 Kotlin 对于一个类的声明:
class MainActivity : AppCompatActivity() {
Kotlin 也设计得比较灵性和易读,所以即使碰到一些差异很大的代码,我们还是能揣摩出代码的意思。
各取所长
目前有许多编程范式,但是对于哪种是最好的,没有人能下定论。每种编程范式有利有弊,有人说函数式编程爽炸了,但也有人说过程式编程效率更高。
所以何必孤注一掷呢?Kotlin 结合了函数式编程和过程式编程的优点,带给你丝滑般柔顺体验。
绝佳支持
Kotlin 是 JetBrains 开发的,对,Android Studio 就是基于他家的 IntelliJ 开发出来的,所以,Android Studio 平台对于 Koltin 也是有着绝佳的支持。安装完 Kotlin 插件后,点一下按钮什么的就能在项目中配置 Kotlin 了。
在此之后,Android Studio 就绝逼会识别出 Kotlin 代码,然后编译运行。Android Studio 还为 Kotlin 提供调试,自动补全,代码搜寻,单元测试和全方位的重构支持呢。
然后,鼠标点点点,就能把 Java 文件转成 Kotlin 文件了。
写到这里,下面的写太多简书就一直显示在保存中,全文请跳转到 Github 。