返回 登录
0

Kotlin 教程(一):走进 Kotlin 的世界

阅读16658

今年 Google I/O 大会上,官方扶正 Kotlin 的举动火遍整个 Android 开发圈。不过,有些开发者似乎过度解读 Google 的意图,认为 Kotlin 要取代 Java 成为 Android 开发的标配,大会上说的是 official support kotlin,并非 replace java with kotlin。以至于后来回公司上班,后台童鞋打招呼的时候还问,听说你们 Android 以后不用 Java 要用 Kotlin 写(那位后台童鞋之前用 Kotlin 写过服务器代码)。好吧,我本人是不支持官方一支持 Kotlin 后,就说 Java 辣鸡,Kotlin 才是王道这类说法。毕竟,语言终究有自己的优缺点,既然官方开始支持了,我们不妨利用一些空余时间学习一下 Kotlin 好了。

Kotlin 简介

Kotlin 是 JetBrains 推出项目,是一种在 Java 虚拟机上运行的静态类型编程语言,也可以被编译成为 JavaScript 源代码。在 2011 年 7 月推出之前,它已被开发一年之久。直到 2016 年 2 月 15 日,官方发布了第一个稳定的 release 版本 —— Kotlin v1.0。从 Kotlin 官网介绍来看,这近乎是一门野心勃勃的语言。

  • 基于 JVM 编程,这意味着 Kotlin 可以写服务器代码;
  • 基于 Android 和 Browser 编程,这意味着不仅可以写客户端编程,连前端开发都可以;
  • 基于 Native 编程,直接绕过 JVM 与底层代码打交道,好彪悍;

不过 Kotlin-Native 项目还在开发阶段,不知道最终推出的项目如何,还是蛮期待的,感兴趣的朋友可以关注它的 Github 更新:

https://github.com/JetBrains/kotlin-native

Kotlin 与 Android

我在 2015 年的时候就开始留意到 Kotlin 这门语言(当然仅仅是留意,并未深入了解过),因为偶尔逛 Github 的时候会看到一些 Kotlin 编写的 Android 开源项目,直到 2016 年 12 月底的时候,又发现了 Github 的 Trending 榜上居然有 Kotlin 一项。

感到惊讶之余,也说明了越来越多的开发者在 Github 上提交 Kotlin 项目代码。这也意味着如果我们想要用 Kotlin 开发 Android 项目,可以从 Github 上获取到很多开源项目支持,如:

环境搭建

开发环境上,需要先安装 Apache Ant(1.9.4 或更高版本)和 JDK(1.6, 1.7 and 1.8)。然后再安装开发的 IDE,关于 Kotlin 开发的 IDE 有很多,如:

  • Android Studio:2.x 版本需要安装 Kotlin 插件支持,3.0 开始默认支持编写 Kotlin 代码,无需插件。

  • Eclipse:通过 Help -> Eclipse Marketplace 搜索 Kotlin 插件安装。

小到记事本同样可以编写 Kotlin 代码(这句简直是废话)。

Kotlin 语法特点

  • Kotlin 与 Java 语法并不兼容,但可以和 Java 代码相互运作(混合编译)。跑一个最简单的混编 Demo,用 Java 代码创建一个 MainActivity,再用 Kotlin 编写一个 Lesson0Activity,从 MainActivity 调用 startActivity 进入 Lesson0Activity。

  • 代码精简,相同的功能,比 Java 实现的代码量少。如你要创建一个 Entity 类,除了声明属性外你还要创建对应的 get、set 方法,分别来看看 Java 和 Kotlin 是怎么做,Kotlin 代码就一行搞定。

获取 Entity 中的属性值,这里不要认为跟 Java 中把属性声明成为 public 一样(后面的文章再详细说明)。

关于代码精简的特点还有很多例子,不一一赘述。

  • 代码语句不需要;作为结束,这点和 Python 一致。(加了分号也不会报错)
  • 使用 var 声明变量,用 val 声明常量,用 fun 声明函数。

  • 继承父类和接口无需 extends、implements,只需:。

  • 支持 lambda 表达式。在 Java8 前,我们要传入一个接口是这样的。

Java8 有了 Lambda 表达式后是下面这样的。

而 Kotlin 支持 Lambda 可以写成这样,对比 Java 版的 setOnClickListener 大家可以看得出区别。

  • 空指针检测。NullPointerException(也称 NPE)是开发过程中最常遇到的 Exception 之一了,为此我们不得不写很多防御性代码去判断一个对象是否为 null。而 Kotlin 默认是不需要变量为 null 的,否则在编译的时候就会报错。

要想程序正常运行,你就需要改成下面这样的代码。

关于 Kotlin 的 NPE 处理,还有很多有意思的地方,同样以后再细说。

  • 数据类型自动推断,创建对象无需 new。

关于 Kotlin 的特点暂时写到这里,我也是一边学习一边写文章记录,后面说不定还得看到更多亮点。

运行 Kotlin 代码

简单了解完 Kotlin 后,最后从 IDE 上跑一下代码来结束本文,下面分别从 IntelliJ IDEA 和 Android Studio 环境下分别运行一下代码。

安装 IntelliJ IDEA 后,创建一个基于 JVM 开发的 Kotlin Project。

然后再 src 目录下创建一个 Kotlin Class

写一段最简单的入门代码,点击运行即可看到控制台有输出结果,以及生成相应的字节码文件。

在 Android Studio 2.x 的环境下运行 Kotlin 代码需要先安装前面提到的 Kotlin 插件,安装完后重启 AS,你就可以在对应的包下创建 Kotlin 的类文件以及 Activity 等。

创建完 Kotlin 类后,会弹出下面的弹窗配置相应的 Kotlin 依赖。

这样就会在你的 AS Project 以及对应的 Module 下出现如下配置。

这样你就可以在 AS 愉快的跑起 Kotlin 代码了。

本文所涉及到的代码,都放在:https://github.com/D-clock/KotlinSample,需要的同学可以自取。Kotlin 官方也给了很多学习示例代码,可以从这里获取学习:https://try.kotlinlang.org

总结

好了,关于 Kotlin 教程的第一篇就到这里,文章也是自己的学习笔记,如果有错误疏漏,欢迎留言指点。

参考文献

作者: 纪喜才(@D_clock爱吃葱花),YY Android开发工程师,热爱开源并学习开源,热衷于技术分享。个人博客:http://blog.coderclock.com/,Github 地址:https://github.com/D-clock
责编: 唐小引(@唐门教主),欢迎技术投稿、约稿、给文章纠错,请发送邮件至tangxy@csdn.net
感谢作者的辛苦撰文分享,技术之路,共同进步。

评论