Kotlin来了,Google近日表示官方支持Kotlin作为 Android 的开发语言,引来了不少目光。我们在评估 Appetizer 质量监控对 Kotlin APP的支持情况的同时,和大家交流一下 Kotlin 对现有测试体系的影响。欢迎大家一起交流,如果有已经用上Kotlin开发的童鞋非常欢迎来拿Appetizer试试。

Kotlin历史

Kotlin并不年轻,JetBrains 公司早在2011年七月就宣布了 Kotlin 项目。JetBtrains是捷克一家出产IDE的公司,比较著名的产品有 IntelliJ, WebStorm, PyCharm, CLion等,Google在抛弃了Eclipse搞出的Android Studio,就是基于IntelliJ开发的。JetBrains的产品基本涵盖了市面上主要的编程语言,一般是免费版和收费增强版,对高校学生也是非常好的。有兴趣的可以去看一下他们的产品,Appetizer团队还是很喜欢他们的IDE的。

2012年2月,Kotlin开源。知道2016年2月,Kotlin 第一个稳定版本 1.0发布。

当然2017年 Google IO上宣布Kotlin 作为 Android 的一级开发语言

值得注意的还有,2013年的Google IO宣布了Android Studio,也就是说 Google和JetBrains有一定年头了。但是Kotlin还是比较年轻,下面是Github上用Kotlin写的项目的数量,和右边其他主流语言比比还是有非常漫长的路要走。

https://testerhome.com/uploads/photo/2017/733398eb-8143-4a2f-b315-8b83f86b2cc4.png!large

Kotlin 是什么

虽然官方有很多蓝图,虽然 Kotlin 的卫道士会来喷,但是从目前看来,Kotlin是Java(javascript)的一个语法糖,我们就不说Javascript混乱的es2015, es6, es7, jsx, es8了。何为 Java语法糖?就是给一些繁琐的Java代码用种方式简化,废话不多说,举几个例子:

// 我是注释:这是一个匿名函数的定义(lambda)
fun(x: Int, y: Int): Int = x + y
fun(x: Int, y: Int) = x + y // 返回值也不写了,会推导

恩,看代码就明白的意思我就不解释了。

// switch他哥
when (x) {
    in 1..10 -> print("x is in the range") // Python的影子
    in validNumbers -> print("x is valid") // -> 是 lambda
    !in 10..20 -> print("x is outside the range")
    else -> print("none of the above") // switch 条件
}

恩恩

data class User(val name: String, val age: Int)

这个要解释一下,这是一个class定义,两个成员 name, age,data class等于编程中超级常用的model class(数据库/Json),这么一句定义,Kotlin帮助完成了几个事情:

strings.filter { it.length == 5 }.sortBy { it }.map { it.toUpperCase() }