写在前面:
在不久前Google io开发者大会上面,Google突然发出大招–Kotlin成为Android开发的官方语言。一夜间,大多数全球的Android开发者们一脸懵逼,绝大多数人之前压根不知道Kotlin是个什么东西。而这就意味着,在之后的Android项目开发中将逐步从Java语言转变为Kotlin语言,而在以后新增的代码文件将不再以Java代码的形式出现,而是以 Kotlin 代码格式出现,与此同时,之前老的 Java 代码也将会陆陆续续被翻译成 Kotlin 代码。使用Kotlin语言开发Android项目的时代已经到来,本文就将从以下几个方面浅析一下这异军突起的Android官方新语言:
- 什么是Kotlin
- Kotlin与Java的一些比较
- 为什么要学习Kotlin——Kotlin语言的一些特性
- 如何在Android Studio编译器下配置Kotlin开发环境
什么是Kotlin
Kotlin是由一家位于捷克布拉格的软件开发公司JetBrains开发的基于JVM的一种语言。众所周知,该公司研发了IntelliJ IDEA这款相对于Eclipse有较大改善的大名鼎鼎IDE产品而闻名,之前有使用Java语言开发的程序猿对此应该是比较了解的。Kotlin最开始是使用Java开发者的思维被创建的,而Intellij则是作为它最主要的开发IDE。
而对于当前所有的Android开发者而言,有两个福音:
- 对于之前使用Java语言的Android开发者而言,Kotlin是一个非常容易学习的具有直觉化的语言,其中很大一部分和我们已知的内容是非常相似的,而一些不一样的地方,拥有着Java基础的程序猿们也可以经过短期的学习迅速掌握。
- Kotlin语言与我们平时所用的IDE无需配置就可以完全整合,并且我们目前来说使用最多的Android Studio能够非常完美的理解并编译运行Kotlin代码,这对于我们来说是一个非常值得开心的一件事情。
Kotlin与Java的一些比较
在Kotlin被列为Android官方语言后,很多之前一直使用Java语言开发项目的程序猿开始担心自己没有办法迅速的学习新的一门语言,并且快速的投入到实战中去。事实上,并不需要有这样的担心。尽管是已经习惯了使用Java来开发Android应用程序的开发者也不用担心,因为Java和Kotlin之间代码是可以共存的,而且更为便利的是他们之间可以相互调用,除此以外Google官方还提供了如何将Java代码转换为Kotlin代码的功能,是不是很贴心呢。
Kotlin是一种兼容Java的语言,相比于Java语言,Kotlin主要在一下几个方面具有优势:
- 更加安全 Kotlin是空安全的,可以通过引用空指针来达到静态检测常见陷进的目的。它可以在我们编译时期就处理各种null的情况,避免了执行时异常。如果一个对象可以是null,则我们需要明确地指定它,然后在使用它之前检查它是否是null。这样就可以节约很多调试空指针异常的时间,很大程度上避免出现NullPointException。
- 更加简洁 Kotlin在代码中很少需要在代码中指定类型,因为编译器可以在绝大多数情况下推断出变量或是函数返回值的类型。另外一个特别方便的地方是,不用写分号。对于写过脚本语言的程序猿来说,不用写分号真的是节约了很多很多时间。而Kotlin比Java更简洁的来源主要是通过支持variable type inference,higher-order functions (closures),extension functions,mixins and first-class delegation等实现的。
- 更加具有高度互操作性 这意味着你可以继续使用你之前所有用Java写的代码和库,因为两个语言之间的互操作性是完美的,不仅可以在Kotlin代码中使用任何已有的Java库,同样地,Kotlin代码也可以为Java代码所用,即在同一个项目中可以使用Kotlin和Java两种语言混合编程。
总而言之,相比于Java有的功能,Kotlin基本上都有,而且两者之间的性能理论上是一样的,而Kotlin在一些方面则要优于Java。
为什么要学习Kotlin——Kotlin语言的一些特性
易表现(简洁性)
使用Kotlin对我们来说可以更轻易地避免模版式代码,因为大部分的典型情况都在语言中默认覆盖实现了。
举个最简单的例子,在Java中,get/set方法自动转换成属性,对应到Kotlin属性的调用。
在Java中,我们输入下段代码:
public class User {
private int id;
private String name;
public void setId(int id) {
this. id = id;
}
public void setName(String name) {
this. name=name;
}
public int getId() {
return id;
}
public String getName() {
return name;
}
}
说白了,上述代码就只有两个字段,一个是id,一个是name,如果我们用Kotlin来写如下:
data class User(var name: String, var id: String)
十来行变一行,有木有!!!
不仅如此,Kotlin还会自动生成所有属性和它们的访问器,以及一些方法,例如toString方法及equals方法。
var user = User("lcjingsi","0823")
空安全性
如果我们不需要参数或者只需要一个参数时
class User {
var name: String? = null
var id: String? = null
constructor(name: String) {
this.name = name
}
constructor(name: String, id: