Android开发者是时候转向Kotlin了

概述

作为一个目前主要从事Android开发的开发者,最早大概是在2017年3月第一次听说了Kotlin这门开发语言,但是真正去了解还是在 Google 2017年的Google IO上宣布采纳Kotlin为Android官方开发语言的时候。众所周知,Java当年借着Android的春风换发了第二春,这么多年过去了,OracleGoogle的官司一直纠缠不清,这就给了Google足够的理由寻找Java的替代品。虽然在17年5月份中,Google 官方宣称,Kotlin不是要取代Java,会长期共存。但是到目前为止,看到的都是Google在Android开发上正在向Kotlin倾斜。

例如你打开Android开发者官方网站,映入眼帘的是这样的
这里写图片描述

Kotlin简介

关于Kotlin 官方网站如是说:

Statically typed programming language for modern multiplatform applications
一门可用于跨平台开发的静态类型的编程语言。

Kotlin是由JetBrains团队开发,就是那个做IDE超牛逼的公司,例如 IntelliJ and ReSharper.

Kotlin 致力于跨平台开发,Kotlin 可以编译成字节码运行在JVM上,可以编译成针对Android平台的字节码运行在Android虚拟机中(DalvikART)上,可以编译成JavaScript运行在浏览器上,也可以编译成原生库运行在没有虚拟机的系统上,例如IOS设备或者其他嵌入式设备。

听起来真牛逼啊,那我们接下来看看它对其他开发语言,特别是Java,有什么优势。Java即将受到一万点伤害,因为我们主要和Java7比较,谁让我们这个专栏是有关于Android开发的呢,而AndroidJava新版本的支持又是如此的缓慢,到目前为止只能使用Java8的部分功能。

与Java的互操作性

Kotlin号称与Java可以100%互操作,即可以互相调用,其实主要是Kotlin调用java了,因为Java作为传奇前辈,有许多优秀的类库和框架,以及遗留代码。为了使Kotlin能更大程度的被开发者接受,Java这颗大树一定的傍。

语法简洁

这可能是Kotlin与Java比起来让人一眼就能发现的优点,摒弃了Java冗长的语法。

让我们直观感受一下,下面的代码创建了一个POJO(Plain Ordinary Java Object),其自动实现了 getters, setters, equals(), hashCode(), toString()copy() ,这要是用Java写估计的上百行代码。

data class Customer(val name: String, val email: String, val company: String)

避免了臭名昭著的空引用(NullPointerExceptions)

这个相信有过Java编程经验的同学都深有体会,不知道什么时候程序就闪崩了(crash),英文世界经常说它是一个十亿美金的错误(Billion Dollar Mistake)。

而在Kotlin中,如下代码,如果定义output为非空字符串的话,赋空值是编译不过去的。

var output: String
output = null   // 编译报错,无法通过编译

工具友好

就像MicrosoftVisual Studio之于C#JetBraintsIntelij Idea对自己的Kotlin的支持绝对是全方位的。相信用过Intelij的你再也不想碰Eclipse了。

上面四点也是官方宣称的优势,其实Kotlin语言的很多特性,在C#上很多年前就有了,只能说不是Kotlin做的太好,只怪Java走的太慢。

Kotlin之于Android

Google官方已于2017年接纳KotlinAndroid官方开发语言了,Android Studio 也从3.0开始也原生支持了Kotlin。到目前为止,Google有主推Kotlin来做Android开发的趋势。

Kotlin从兼容性,执行效率,与java互操作性,编译时间上与Java相比都没有劣势,但是会稍微增加apk的尺寸,大概100K,还有几百个函数。而这些和以上描述的优点相比都不是事儿,毕竟我们在APP中加个广告SDK都要好几百K,你们觉得呢?

下篇我们将会正式进入使用Kotlin做Android的探索。

猜你喜欢

转载自blog.csdn.net/shusheng0007/article/details/79914664