简述kotlin
kotlin是由JeBrains开发,一个基于JVM新的编程语言
Kotlin可以编译成java字节码,也可以编译成JavaScript,方便在设备上运行。
谷歌I/O 2017宣布将支持Kotlin作为Android第一开发语言(语言很大提升空间)
Android Studio3.0预览版已自带Kotlin 插件,无需做任何的配置即可开始体验。但如果是之前版本,
则需要我们自行配置(通过 File->Settings->Plugins->Install JeBrains plugin...搜索并安装kotlin插件)。
Kotlin优点
1).提高团队的生产力
语言紧凑、清晰、高效、语言简单直观。
2).可维护性
由JetBerains构建并支持,Kotlin为许多IDE提供了良好环境。
3).更少的错误
空指针安全检测、属性访问等,而且kotlin允许在生产中减少错误,生成更稳定的代码。编译器在编译时检测所有可能的错误,
而不是运行时。这使得kotlin成为比java更安全的替代品。
kotlin缺点
1).编译速度慢
主要还是因为kotlin会自动生成更多的代码,比如为属性生成get/set,对比Java会存在更多的方法数量。
https://youtrack.jetbrains.com/issue/KT-6246,这篇博客有做分析
2).annotation processing的问题
3).没有命名空间
kotlin允许定义top_level的函数和属性
package foo
private fun foo(){} //只在example.kt文件内可访问
internal val baz = 6 //在同一个模块(module)内可以访问
fun testFun(){} //默认修饰符public,被其修饰的在任何位置都能访问
4).没有静态修饰语
public static final int VISIBLE = 0x00000000; //Java
companion object{ //kotlin
@JvmField
val VISIBLE:Int = 0x00000000
}
5).Java自动转换成kotlin带来的问题
Java自动转换成kotlin是个非常好的特效,但是也带来问题。Javadoc原来的结构会被破坏掉,静态field
和方法会转换成companion object中的普通声明,如果有Java代码调用这个类,就会出现点问题,除非
你后面手动给这个转换后的companion object添上@JvmField和@JvmStatic。
6).会增加方法数量
过多的方法数量会导致编译变慢。kotlin通过闭包,内联函数等可以显著减少代码总行数,但它可能
也会增加编译后的方法数量。对于Android项目来说这个肯定是一个不小的缺点。很多原因会导致方法
数量增加,但是最大的来源是kotlin实现属性
kotlin不像Java可以直接访问field,而是通过创建proterty的方式来访问。这是一个很好的特效,你可以自
定义实现proterty的set/get,对比Java的set/get方法有很大进步。
但是这个也是有代价的,对于val属性,kotlin自动生成backing field和getter函数来供Java调用。
public var属性会自动生成setter/getter函数。幸运的是private var属性已经有默认的setter/getter
不需要额外生成。所以后果带来很多方法导致编译变慢。
废话不多说,开始我kotlin之旅......
1.创建一个kotlin项目
第一步:Android studio 以往创建新项目没有任何区别,选择Start a new Android Studio Project 或者File | New Project.
第二步:Java代码自动转换成kotlin代码
打开选中activity文件,按快捷键 :Ctrl+Alt+Shift+k
第三步:配置kotlin环境(bundle.gradle)
打开之前activity文件,随意改动。发现在文件顶部会弹出提示框。

再按照提示 ,选择kotlin的最新版本即可。

app build.gradle文件主要发生如下变动,配置kotlin关联文件。

project build.gradle文件变动。

浙公网安备 33010602011771号