Java 和 C++ 之后,Google 在 I/O 2017 上宣布 Android 加入了对 Kotlin 编程语言的支持。Kotlin 由 Java 集成开发环境 IntelliJ IDEA 的开发商 JetBrains 开发,2012 年开源,采用 Apache 2.0 许可证,它是一个运行在 Java 虚拟机上的静态类型编程语言。Kotlin 虽然与 Java 的语法不兼容,但设计成可以与 Java 代码互操作,可复用现有的 Java 类库。Google 的 Android 团队称赞 Kotlin 拥有出色的设计,是一种成熟的语言,能让 Android 应用的开发更快更有趣。Android Studio 3.0 已经整合了对 Kotlin 的支持,不再需要额外安装插件。JetBrains 表示,他们会继续支持其它平台。如果你还记得的话,去年曾有报道称 Google Android 考虑采用苹果的 Swift 语言,而 Swift 就被称为是苹果的 Kotlin。

1、Kotlin介绍

 [Kotlin](https://kotlinlang.org/) Kotlin是一门基于JVM的编程语言,它正成长为Android开发中用于替代Java语言的继承者。Java是世界上使用最多的编程语言之一,当其他编程语言为更加便于开发者使用而不断进化时,Java并没有像预期那样及时跟进。

  Java缺失的很多特性在最新的修订版中逐渐覆盖到了,但Android开发者暂时还没能够使用它们。这就使得类似Kotlin这样的语言有了用武之地了:在旧的开发环境中使用现代语言的特性。

  Kotlin是什么?

  Kotlin是由JetBrains创建的基于JVM的编程语言,IntelliJ正是JetBrains的杰作,而Android Studio是基于IntelliJ修改而来的。Kotlin是一门包含很多函数式编程思想的面向对象编程语言。

  Kotlin生来就是为了弥补Java缺失的现代语言的特性,并极大的简化了代码,使得开发者可以编写尽量少的样板代码。

2、配置工程

新建一个Project “MyKotlin” 
在项目的build.gradle上添加kotlin版本号

// Top-level build file where you can add configuration options common to all sub-projects/modules.buildscript {    ext.kotlin_version = "1.1.2"    repositories {        jcenter()    }    dependencies {        classpath 'com.android.tools.build:gradle:2.3.1'        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"        classpath "org.jetbrains.kotlin:kotlin-android-extensions:$kotlin_version"        // NOTE: Do not place your application dependencies here; they belong        // in the individual module build.gradle files    }}allprojects {    repositories {        jcenter()    }}task clean(type: Delete) {    delete rootProject.buildDir}

在module中的build.gradle添加kotlin的依赖,添加对android的支持和添加java的编译路径,在main下创建kotlin目录 并在gradle文件写上后的完整的build.gradle如下:

apply plugin: 'com.android.application'apply plugin: 'kotlin-android'apply plugin: 'kotlin-android-extensions'buildscript {    repositories {        jcenter()    }}android {    compileSdkVersion 24    buildToolsVersion "25.0.2"    defaultConfig {        applicationId "com.example.xuboyu.mykotlin"        minSdkVersion 15        targetSdkVersion 24        versionCode 1        versionName "1.0"        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"    }    buildTypes {        release {            minifyEnabled false            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'        }    }    //记录在main下创建kotlin目录    sourceSets {        main.java.srcDirs += 'src/main/kotlin'    }}dependencies {    compile fileTree(dir: 'libs', include: ['*.jar'])    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {        exclude group: 'com.android.support', module: 'support-annotations'    })    compile 'com.android.support:appcompat-v7:24.2.1'    compile 'com.android.support.constraint:constraint-layout:1.0.2'    testCompile 'junit:junit:4.12'    //compile kotlin    compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"}


点击Sync Now重新加载一下项目


3、代码转换

可以选择MainActivity 然后选择code–>>Convert  Java  File to Kotlin File … 
然后将生成的文件kt 剪切到kotlin目录下。 


注意:

如果按照上面的步骤执行后没有在code中仍然没有Convert Java File to Kotlin File … 这个选项的话,就按照下面的步骤走

  • 使用Android Studio下载Kotlin相关插件

执行 Settings -> plugins -> BrowseRepositories中搜索“Kotlin”



Kotlin在语法上整体比起原先的java要比较简洁,简单,语法简单不罗嗦,使用var表示变量,使用val表示常量,连方法(function)都缩写成fun,而类的继承和实现则更加简单,使用:即可,而且每个句子都不用加分号(;)。在控件的初始化在之前的常规写法中,在定义了一个控件之后,必须使用FindViewById来获取到该layout中的控件,然后才可以进行setonclicklistener进行监听等等的操作,对比一下两者在调用一个TextView的setText的过程就可以看出来Kotlin在使用时可以减少一定的代码量。

一个如下的textview:


按照之前的写法如下:

package com.example.xuboyu.mykotlin;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.widget.TextView;public class MainActivity extends AppCompatActivity {    private TextView textView;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        textView = (TextView) findViewById(R.id.text);        textView.setText("XuBoYu");    }}
使用Kotlin的写法如下:

package com.example.xuboyu.mykotlinimport android.support.v7.app.AppCompatActivityimport android.os.Bundleimport kotlinx.android.synthetic.main.activity_main.*class MainActivity : AppCompatActivity() {    override fun onCreate(savedInstanceState: Bundle?) {        super.onCreate(savedInstanceState)        setContentView(R.layout.activity_main)        text.setText("XuBoYu")        text.setTextSize(20.0f)    }}

运行结果如下:


另外一个值得注意的地方是Kotlin对于原本java中的空指针即NullPointerException或者NPE自带了空指针安全保护,原本我们在java中需要写防御性的代码来判断对象是不是null的情况,Kotlin中空指针异常得到了很好的解决。在类型上的处理,即在类型后面加上?,即表示这个变量或者参数以及返回值可以为null,否则不允许这个变量参数为null或者返回null!也就是说,对于一个可能是null的变量或者参数,在调用对象方法或者属性之前,需要加上?,否则编译无法通过!(Kotlin不允许声明变量但不初始化)

    //赋非空值    var str1 :String = "xuboyu"    //设为null    var str2 :String? = null    //强制设为null    var str3 :String = null!!

对于其他更多的有关Kotlin本人也刚刚接触学习,这算是记录一下这次学习,IT世界的新老更替永远比我们学习的速度要快,学无止境!

更多具体的信息可以在Kotlin的网址上详细查阅: http://kotlinlang.org/docs/tutorials/android-plugin.html

  • Kotlin相关网址

Kotlin官网 
http://kotlinlang.org

l Kotlin-github地址 
https://github.com/JetBrains/kotlin


更多相关文章

  1. C语言函数的递归(上)
  2. Android(安卓)基于Zxing扫码实现(三)、从相册选取二维码
  3. java与VC通信-socket
  4. Android/Java每日积累[2/27-3/3]
  5. Android下关于Dialog的学习
  6. Android系统深度游
  7. phoneGap插件
  8. Android(安卓)NDK笔记
  9. Android(安卓)OpenGL ES 开发入门

随机推荐

  1. Android自定义实现圆形播放进度条
  2. Android框架模式之-MVP简单使用
  3. Android深入浅出之Audio第三部分Audio Po
  4. Android中gravity和weight參數的用法
  5. android R 文件生成不了
  6. 2014-11-6Android学习------Android 仿真
  7. Android Studio 使用AIDL
  8. 转载:Android进程的内存管理分析
  9. Android(安卓)重写ViewGroup 分析onMeasu
  10. Android Studio下jni应用