简述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文件变动。