搜索关键字:
1.kotlin优势
2.安装kotlin插件
3.工程中配置kotlin
00000.1Kotlin介绍
00000.1.1为什么Kotlin突然成为热门?
Kotlin可以开发Android App,而且被Google公司选为开发Android App的一级语言,即在Android Studio 3.0及以上版本中会支持利用Kotlin语言开发Android App。这也就意味着,到目前为止,开发Android 本地App可以使用Java和Kotlin两种编程语言。这就很像开发iOS App的场景了,可以使用Objective-C和Swift两种语言开发iOS App。因此,很多人把Kotlin比作Android世界的Swift。而且Kotlin和Swift的确都是很棒的编程语言,都加入了很多“语法糖”,可以大幅提高程序开发的效率。
00000.1.2Kotlin相对于Java有哪些优势?
•更容易学习:Kotlin是一门包含很多函数式编程思想的面向对象编程语言,而且相比Scala语言更容易学习
• 轻量级:相比其他编程语言,Kotlin函数库更小。由于Android存在65K方法数限制,使得这一点显得更为重要。虽然使用ProGuard或者打包成多个dex能够解决这个问题,但是所有这些解决方案都会提高复杂性,并增加调试的时间。Kotlin函数库方法数小于7000个,相当于support-v4(Android 1.6)的大小。
• 高度可互操作性:Kotlin可以和其他Java类库友好且简单地进行互操作。Kotlin团队在开发这门新语言时正是秉承了这个中心思想。可以使用Kotlin继续开发现有的使用Java语言编写的工程,而不是重写所有代码。
• 非常好地集成Android Studio及Gradle:Kotlin有一个专门用于Android Studio的插件,以及另一个专门用于Gradle的插件。而且即将推出的Android Studio 3.0已经集成了Kotlin,因此在Android工程中开始使用Kotlin并不困难。
00000.1.3Kotlin与java对比之简洁性
1.数据类定义
Java: 属性+设置+获取+toString(),一个数据类的基本功能就有了,三个属性的类写了三十几行代码。
Kotlin:
2.创建对象
Java:
Kotlin:Kotlin对象创建不用加new关键字,而且语句后面不用加分号";"(即使加上也会被忽略)。
3.toString()
类名前的data关键字,是显示声明该类是作为数据类使用,通过toString()打印的结果可以看出区别,打印语句:
不加data关键字的结果:
Artist@61bbe9ba
加data关键字的结果:
Artist(id=1, name=Dylan, blog=http://www.cnblogs.com/tgyf/)
可以看到toString()是Kotlin自动生成的,如果类声明不加data,只会打印出一串数字(应该是类的内存地址),而不是当前对象的属性信息。
4.变量空安全
Java: 对于Java代码,编译器不会强制每次使用引用变量之前进行null判断,即异常往往会在运行时报出,但这正是危险所在。
Kotlin:
结合代码中的注释,我们来看这四行代码想表达的意思。
第1行,编译错误,kotlin规定如果显式指明了str1的类型,这里是String,声明时必须同时指定是否允许为空值(null),不加问号"?"表示不允许为null;
第2行,编译通过,作第一行代码的另一种情况,加了问号,并赋值为null;
第3行,编译通过,隐式赋值为"testNull",Kotlin会自动推断出str3类型为String,之后便不可再更改了,即不可再赋值为1这种整形数据;
第4行,编译通过,隐式赋值为null,那么str4就一直为null了;
第5-6行,编译通过,前者只是指定类型,没有赋值;后者赋予str5 String类型值"testNull"同样不能赋值为其他类型值;
第7行,编译错误,既没有指定类型,也没有隐式地进行初始化,错误的原因应该是编译器不知道str6类型是什么,不能对其分配空间;
第8行,不需多解释,str7可为null,同时赋值为"testNull";
对于声明为String?的变量,访问属性时会涉及到问号和双感叹号两个操作符("?"和"!!"),前者表示执行后面代码前先检查变量赋值情况,后者表示不检查而直接访问属性(危险)。
举例如下:
第2行,编译错误,因为之前只是将str2声明为可以是null同时赋值为null,所以紧接着访问其length属性是不允许的;
第3行,输出"null",加了问号就会先检查str2的赋值情况,如果是null,就不继续执行后半部分(.length),直接返回null;
第4行,运行异常,不检查的后果就是通过null引用去访问length属性;
第5-7行,不会执行到if代码块中,这里用了类似Java中的做法;
第9行,输出"8",到这里,相比能体会到Kotlin的智能之处了,在第八行对str2赋值之后,就不会再像第二行那样报编译错误了;
第10-14行,不需多解释,不为null的str2,通过三种方式均可访问length属性;
5.类方法扩展
这个特性支持在现有类的基础上扩展方法,特别是系统库中的类,因为如果是我们自定义的类,那么扩展和添加方法没有什么差别。
1)方法定义
Kotlin中是以fun关键字声明方法,没有返回值时不需要在方法名后面写任何类型,默认是Unit类型(可写可不写,但其和null不是一回事,所以不写返回值类型或者写了Unit后不能够返回null)。
2)扩展
上面代码为类String扩展了一个printStr(),这在Java中是不可能的。因为Java中如果既不能改变原有类,又想在其基础上添加方法,就得通过新建类来继承的方式。而现实是Java中只能是单继承,这个机会太珍贵了,更残酷的是有些类还是不能继承的。
代码第5-6行执行结果为:
printStr: testExtend
可见,通过this关键字即可获取到对象(调用者)的值。
6.lambda表达式
下面以绑定控件,设置按钮点击事件监听,点击后改变文本显示为例。
Java:
Kotlin:
如果遇到多个Button需要共享一个onClick()怎么办呢?Java代码就不给出了,来看Kotlin代码:
第1-3行,除了不需要调用findViewById()来获取控件,设置事件监听和Java是类似的;
第5-13行,重写关键字override,前面不必写"@"符号,用when、->及else组合来替代原先的switch、case及default,再也不用为每种case的结尾写上break。
00000.1.4Kotlin能做什么?
Kotlin除了可以用来开发Android App,还能做如下内容:
7.服务端开发
既然Kotlin是基于JVM的编程语言,那么自然而然就可以使用所有基于JVM的服务端框架。下面是几个Kotlin官方文档推荐的框架。
• Spring:一种开源框架,是为了解决企业应用程序开发复杂性问题而创建的。从Spring 5开始,Spring就已经支持Kotlin的新特性了,并可以使用Spring在线生成器(https://start.spring.io)生成基于Kotlin的工程。
• Vert.x:用于建立基于JVM的响应式Web应用的框架。
• Ktor:由JetBrains发布的一款基于Kotlin的本地Web框架
• kotlinx.html:是一种DSL(领域专用语言),用于在Web应用中生成HTML。Kotlin服务端框架和kotlinx.html的关系就像JSP和FreeMarker的关系一样,FreeMarker是基于Java的模板引擎。使用FreeMarker,可以不依赖于HTML或其他技术,可以根据需要生成HTML或其他东西,也就是一种与具体渲染技术无关的技术。
8.以JavaScript方式运行
Kotlin提供了生成JavaScript源代码的能力,也就是将Kotlin代码直接转换为JavaScript代码。目前,支持ECMAScript 5.1标准,未来会支持ECMAScript 6。
注意,如果将Kotlin代码转换为JavaScript代码,在Kotlin代码中只能包含Kotlin标准库,不能包含任何JDK API以及任何第三方的Java Library API,任何不属于Kotlin本身(Kotlin语句和标准库)的部分在转换的过程中将被忽略。
9.开发Android App
Kotlin和Java一样,都可以开发Android App,而且Kotlin和Java源代码文件可以在同一个工程中,可以联合进行调试。
00000.2Kotlin入门
00000.2.1安装kotlin插件
Android Studio 从 3.0(preview)版本开始将内置安装 Kotlin 插件。如果你正在使用的是早期版本, 需要通过File | Settings | Plugins | Install JetBrains plugin… 搜索并安装 Kotlin 插件。 在 Android Studio 欢迎界面中,可以通过 Configure | Plugins | Install JetBrains plugin… 。 安装完成后需要重新启动 Android Studio。
00000.2.2将java代码转换为kotlin
打开Weight.java文件,使用Convert Java File to Kotlin File 命令。
转化完,即可看到使用Kotlin编写的activity
00000.2.3工程中配置kotlin
点击开始编辑此文件,Android Studio会提示当前工程还未配置Kotlin,根据提示完成操作即可;
选择配置时有如下对话框,选择已安装的最新版本即可。
Kotlin配置完成后,应用程序的build.gradle文件会更新。
同步工程,在提示框中点击“立即同步(Sync Now)”或者使用Sync Project with Gradle Files命令。
网友评论