Google在今年的I/O大会上宣布,Kotlin编程语言现在是Android应用程序开发者的首选语言(Google宣布Kotlin为Android开发的首选语言)。另一个好消息是,Kotlin1.3.30正式发布,支持苹果。距离上次发布1.3已经半年了。该版本主要包括1.3版本的bug修复和工具改进。版本更新的主要范围是Kotlin/Native、KAPT的性能优化,以及对IntelliJIDEA的支持优化。回顾一下1.3StablecoroutineKotlin/NativeBetaMulti-platformprojectsandtools的新特性Ktor1.0BetatoolsforKotlin/Nativeandmulti-platform这个版本带来的牛逼特性主要针对1.3进行了改进,做了工具支持。KAPT支持注解处理器的增量编译KAPT已经支持注解处理器的增量编译,该特性还在灰度实验阶段,可以在gradle.properties中添加如下配置开启:kapt.incremental.apt=truerequired注意在现有版本中引入任何非增量编译的注释处理器或依赖项更改(到目前为止,包括对内部声明的更改)将导致模块的注释处理退回到非增量模式。KAPT:其他改进引入了两个配置来提高编译性能。一种是使用Gradleworkers:这个版本也对其进行了优化。另一种是1.3.20引入的,启用CompileAvoidance,即如果只是方法体发生变化,注解处理会被跳过。只有在注释处理类路径上显式声明所有注释处理器时,编译避免才会生效。无符号数组的扩展方法从1.3开始,我们可以在开发模式下使用无符号数字类型。在这个版本中,我们对无符号类型及其数组有了更多的支持:需要注意的是,我们之前可以对无符号数组使用filter、map等函数式操作,因为无符号类型的数组实际上实现了Collection接口,例如,UIntArray实现了Collection接口。但这涉及到性能问题,因为将UIntArray用作Collection的实例时会创建一个额外的对象。那么现在,所有新的扩展函数都使用无符号数组类型作为接收器来消除额外的对象创建开销。所以不用担心,现在无符号数组在使用上和普通数值类型的数组没什么区别,不会有额外的开销。Kotlin/NativeKotlin/Native支持的目标平台是:Windows32位(mingw_x86)。此外,Windows和macOS用户还可以将Kotlin/Native程序混合编译到Linuxx86-64、arm32以及Android和RaspberryPI环境中。Kotlin/Native对Apple平台的支持也得到了改进。iOS上未处理的异常信息会输出到iOS崩溃日志中,iOS和macOS上的异常堆栈(调试模式)也会包含符号信息。现在也可以使用命令行参数-Xstatic-framework或者下面的Gradle脚本来构建静态库:需要注意的是,现阶段官方说拉取编译这些依赖还是需要一个Xcode工程。Kotlin/NativeIDE支持接下来我们同步一下我们IDE对Kotlin/Native的支持进度。除了IntelliJIDEA,我们还将发布Kotlin/Native插件以支持CLion2019.1和AppCode2019.1。C互操作描述文件(.def)未来会被所有IDE支持,虽然代码补全功能还没有上线。对于CLion和AppCode,我们也支持异常栈跳转源码支持。IntelliJIDEA支持改进的调试功能。在调试协程代码的时候,可以看到有一个单独的异步栈“Asyncstacktrace”显示了暂停时的变量。当程序在挂起函数或Lambda的断点处停止时(示例的第13行),“异步堆栈跟踪”显示上次挂起时变量的状态(第12行)。你可以在当前协程中从上一个挂起点开始浏览suspend函数的整个栈(第12行和第4行),并确认变量的值:这将有助于你更方便地了解当前协程的运行状态。在调试Kotlin代码时,可以选择“Kotlin”模式查看变量。EclipseIDEPlugin更新EclipsePlugin0.8.14主要包括以下更新:Kotlin1.3.30编译器支持、大量错误修复和整体稳定性改进。此版本还添加了对Gradle项目的实验性支持。你可以用EclipseBuildship导入项目,你会发现Kotlin会正常配置。指定JVM版本如果你的程序运行在JVM9、10、11或12上,你可以将jvmTarget设置为对应的版本。此设置会影响已编译类文件的字节码版本,但它们不向后兼容。相比之下,新的目标版本不会有任何字节码优化,也不会有任何新特性,期待Kotlin未来的持续更新。写在***不管谷歌对Kotlin有什么期待,总而言之,谷歌的新系统和跨平台解决方案意味着Andorid生态已经在不同领域发力。近期微软的反击也预示着谷歌的跨终端计划已经对微软形成了火力压制,静待安卓大咖腾飞,移动发展的下一个春天也不远了。与此同时,微软也在大力发展自己的跨平台.net语言,同时也在为Python开发语言配套各种工具,这其实是对Flutter和Kotlin的挑战。您如何看待Kotlin的未来?欢迎聊天。
