5月18日谷歌在今日举行的I/O开发者大会上宣布,将Kotlin语言作为安卓开发的一级编程语言。Kotlin由JetBrains公司开发,与Java 100%互通,并具备诸多Java尚不支持的新特性。
谷歌称还将与JetBrains公司合作,为Kotlin设立一个非盈利基金会。JetBrains在2010年首次推出Kotlin编程语言,并在次年将之开源。下一版的Android Studio(3.0)也将提供支持。
什么是Kotlin?
Kotlin是一门运行在JVM之上的语言。它由Jetbrains创建,而Jetbrains则是诸多强大的工具(如知名的Java IDE IntelliJ IDEA)背后的公司。Kotlin是一门非常简单的语言,其主要目标之一就是提供强大语言的同时又保持简单且精简的语法。其主要特性如下所示:
(1)轻量级:这一点对于Android来说非常重要。项目所需要的库应该尽可能的小。Android对于方法数量有严格的限制,Kotlin只额外增加了大约6000个方法。
(2)互操作:Kotlin可与Java语言无缝通信。这意味着我们可以在Kotlin代码中使用任何已有的Java库;因此,即便这门语言还很年轻,但却已经可以使用成百上千的库了。除此之外,Kotlin代码还可以为Java代码所用,这意味着我们可以使用这两种语言来构建软件。你可以使用 Kotlin开发新特性,同时使用Java实现代码的其他部分。
(3)强类型:我们很少需要在代码中指定类型,因为编译器可以在绝大多数情况下推断出变量或是函数返回值的类型。这样就能获得两个好处:简洁与安全。
(4)Null安全:Java最大的一个问题就是null。如果没有对变量或是参数进行null判断,那么程序当中就有可能抛出大量的 NullPointerException,然而在编码时这些又是难以检测到的。Kotlin使用了显式的null,这会强制我们在必要时进行null检查。
Kotlin官网地址:https://kotlinlang.org/
Kotlin github 地址:https://github.com/JetBrains/kotlin
低于Android Studio 3.0 Preview版本的Android Studio使用Kotlin编写程序:
(1)使用Android Studio下载Kotlin相关插件,执行 Settings -> plugins -> BrowseRepositories中搜索“Kotlin。
(2)安装Kotlin,如下图所示。
(3)重启Android Studio后,使用Kotlin创建Kotlin File/Class或者是Kotlin Activity
Kotlin插件安装成功后,执行new操作,会发现弹窗多出了两个Kotlin相关选项,如下图所示。
这样我们就可以编写Kotlin代码了。
新建完毕Kotlin Actiivty的代码样子如下图所示,初步印象:没有分号、继承用冒号表示、函数简写为fun。
class Main2Activity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main2)
}
}
ps:CSDN目前还没有把Kotlin语言排版支持纳入进来
第一行代码hello world
作为程序员的传统,当我们第一次接触某种语言时,都会先写出hello world,接下来我们便开始尝试实现这个最简单的kotlin APP。
首先,Module层的gradle中添加一行配置,然后再次通过Sync New进行同步
[plain]
view plain
copy
1. apply plugin: 'kotlin-android-extensions'
[html]
view plain
copy
1. <TextView
2. android:id="@+id/textview"
3. android:layout_width="wrap_content"
4. android:layout_height="wrap_content" />
[html]
view plain
copy
1. import kotlinx.android.synthetic.main.content_main.*
之后会发现,在onCreate里面可以直接对id进行操作(比ButterKnife绑定还方便有木有),我们设置textview的内容为Hello world,编译
[html]
view plain
copy
1. textview.text = "hello world";
兼容Java
前文说过,Kotlin和Java是能够互通的,这也给安卓开发者带来了极大的方便,我们可以直接在现有的工程中使用kotlin的代码,或者是根据它们的特性选用不同的语言,那么他们是如何互通的呢。
1)Kotlin调用Java
首先,我们创建一个名为Demo的Java类,里面只含有一个返回字符串的方法getType
[java]
view plain copy
1. package com.steveyg.hellokotlin.java;
2.
3. public class Demo {
4. public String getType(){
5. return "Java";
6. }
7.
8. }
然后在MainActivity.kt中使用对这个类型的对象进行操作
[plain] view plain copy
1. var demo = Demo();
2. textview.text = demo.type;
能够看到,kotlin能够直接使用java的内容,同时还对getset方法进行了处理,虽然在Demo对象中没有type这个属性,但是检测到了getType方法,就自动处理为type这个属性,其他的方法名(不含getset)能够正常使用不会处理。
对工程进行编译,可以看到内容如下图
我们看到textview的内容变成了Java.
2)Java调用kotlin
[java] view plain copy
1. package com.steveyg.hellokotlin.kotlin
2.
3. class KotlinDemo {
4. fun getType(): String{
5. return "Kotlin";
6. }
7. }
再在上文的Java类(Demo.java)中增加一个方法,用于调用kotlin
[java]
view plain copy
1. public String getKotlinType(){
2. return new KotlinDemo().getType();
3. }
然后再在MainActivity中进行调用
[plain] view plain copy
1. textview.text = demo.kotlinType;
再次编译,结果见下图
可以看到,内容变成了Kotlin,说明调用成功。
其他
相比于Java,Kotlin的语法确实简洁了不少,更像是一种脚本语言,对于那些习惯JavaScript和Python的开发者应该更容易上手。