内容简介:Kotlin教程(一):走进Kotlin的世界
今年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上获取到很多开源项目支持,如:
- JSON解析: https://github.com/cbeust/klaxon
- 响应式编程: https://github.com/ReactiveX/RxKotlin
- Jake大神的Kotlin版Knife: https://github.com/JakeWharton/kotterknife
- Anko: https://github.com/Kotlin/anko ,Kotlin官方出品用于Android开发的库,有了它可以忽略Android SDK对JDK的限制
- 更多关于Kotlin开源项目资源可以看看: https://github.com/KotlinBy/awesome-kotlin
环境搭建
开发环境上,需要先安装Apache Ant(1.9.4或更高版本)和JDK(1.6, 1.7 and 1.8)。然后再安装开发的IDE,关于Kotlin开发的IDE有很多,如:
- IntelliJ IDEA: https://www.jetbrains.com/idea/
- 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教程(一):走进Kotlin的世界》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Base64 编码/解码
Base64 编码/解码
XML、JSON 在线转换
在线XML、JSON转换工具