当前位置: 首页 > news >正文

JetBrains发布Kotlin 1.2.30

\

看新闻很累?看技术新闻更累?试试下载InfoQ手机客户端,每天上下班路上听新闻,有趣还有料!

\
\\

最近,JetBrains发布了Kotlin 1.2.30。该版本是在1.2.20版本发布一个半月之后,作为bug修复和工具更新而发布的。新特性包括:

\\
  • 增加新的协程函数suspend。\\t
  • 支持Gradle的构建缓存。\\t
  • 在IDE方面支持最新的Kotlin风格指南。\\t
  • 新的检查器、性能改进以及IntelliJ插件的bug修复。\\t
  • kotlin.test包支持TestNG。\

IntelliJ IDEA 2017.1、2017.3、2018.1 EAP以及Android Studio 3.0均支持这些新特性。下面列出了一些主要的特性。

\\

多平台项目

\\

Kotlin的多平台项目特性是在2017年11月份的1.2版本中引入的,可以将原始代码编译成多个平台的目标代码,目前支持JVM和JavaScript。

\\

正如官网所述:

\\
\

借助多平台项目特性,开发者可以基于代码基库构建应用程序的各个层,包括后端、前端和Android应用。一个项目同时包含了公共模块和平台相关的模块,公共模块包含了跨平台的代码,而平台相关模块包含平台特定的代码(如JVM或JS)。如果要在公共模块中调用平台模块的代码,可以先声明,然后在平台模块中实现这些声明。

\
\\

d79cc9b9f39ca89884dd199ff6cd9b4f.png

\\

常规的Kotlin项目可以使用Gradle和Maven构建,但多平台项目只能使用Gradle构建。下面是用来构建基本公共模块的build.gradle文件:

\\
\buildscript {\  ext.kotlin_version = '1.2.30'\\  repositories {\    mavenCentral()\    }\  dependencies {\    classpath \"org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version\"\    }\  }\\apply plugin: 'kotlin-platform-common'\\repositories {\  mavenCentral()\  }\\dependencies {\  compile \"org.jetbrains.kotlin:kotlin-stdlib-common:$kotlin_version\"\  testCompile \"org.jetbrains.kotlin:kotlin-test-common:$kotlin_version\"\  }\
\\

多平台项目目前还只是个实验性的特性。JetBrains方面表示,该特性在未来版本的Kotlin中可能会发生变更,如果有必要,他们会提供迁移工具。

\\

标准库中新增的函数

\\

为了更好地使用协程,标准库中新加了一个函数:

\\
\public inline fun  suspend(\  noinline block: suspend () -\u0026gt; R\  ): suspend () -\u0026gt; R = block\
\\

新函数对另一个函数进行了包装,作为协程的挂起函数。例如:

\\
\suspend {\  val result = deferredResult.await()\  renderResult()\  }.startCoroutine(completion)\
\\

新函数为Kotlin在lambda表达式中使用suspend标识符奠定了基础。

\\

Kotlin风格指南

\\

IntelliJ IDEA支持Kotlin最新的风格指南,另外还为Android提供了一份相应的风格指南。风格指南提供了建议使用的编码约定,包括代码结构、命名规则、格式化、文档化注释和语言特性的使用方式。

\\

对于Kotlin和Java混合项目,风格指南建议将代码按照Gradle或Maven的结构目录进行区分。例如,kotlin-examples GitHub项目的部分目录结构是这样的:

\\

bae966dc7aa0483fe6a8bfe95963fba3.png

\\

编译性能改进

\\

第一项改进是支持Gradle的构建缓存。Gradle从4.3版本开始就支持重用构建输出:

\\
\

Gradle的构建缓存通过重用其他Gradle构建的输出结果来节省时间。构建缓存被保存在本地或远程服务器上,如果输入没有发生变化,那么其他构建就可以从缓存中拉取输出结果,而不需要重新生成这些内容。

\
\\

不过,在使用Kotlin的注解处理器kapt时,并不建议使用构建缓存,因为Gradle无法准确地追踪注解依赖。默认情况下这一功能是被禁用的,如果有必要,可以在Gradle构建脚本中启用它:

\\
\kapt {\  useBuildCache = true\  }\
\\

第二项改进是在Kotlin和Java混合项目中,可以更准确地检测出Java代码的改动,而不需要重新编译未改动过的Kotlin代码。不过这只是个实验性的特性,默认情况下也是被禁用的,可以通过在gradle.properties文件中添加一个属性来启用它:

\\
\kotlin.incremental.usePreciseJavaTracking=true
\\

其他资源

\\
  • How to Mix Java and Kotlin within One Spring Boot Application by Kevin Peters (September 13, 2017)\\t
  • Kotlin 1.2 Released: Sharing code between Platforms by Dmitry Jemerov (November 28, 2017)\\t
  • Kotlin 2017 Roundup and 2018 Outlook by InfoQ (January 23, 2018)\

查看英文原文:JetBrains Releases Kotlin 1.2.30

相关文章:

  • MySQL和Java数据类型对应
  • [NBIoT]NBIoT相关知识
  • 常用算法总结
  • 人工智能带动 嵌入式深度学习芯片激增
  • io、free、ps 命令
  • 微服务:Java EE的拯救者还是掘墓人?
  • java在开新的线程
  • 手游为什么要热更新,C#为什么不能热更新,LUA为什么可以
  • HDU 1232:畅通工程(并查集模板)
  • input按回车键,响应相关事件
  • 前端面试题:JS中的let和var的区别
  • CentOS 安装ActiveMQ
  • hdu1009 FatMouse' Trade---贪心
  • android-------Java 常问的基础面试题
  • 网络爬虫练习
  • [js高手之路]搞清楚面向对象,必须要理解对象在创建过程中的内存表示
  • 【前端学习】-粗谈选择器
  • 0基础学习移动端适配
  • avalon2.2的VM生成过程
  • CSS实用技巧
  • electron原来这么简单----打包你的react、VUE桌面应用程序
  • javascript数组去重/查找/插入/删除
  • Kibana配置logstash,报表一体化
  • python_bomb----数据类型总结
  • 百度小程序遇到的问题
  • 第十八天-企业应用架构模式-基本模式
  • 力扣(LeetCode)22
  • 力扣(LeetCode)357
  • 三分钟教你同步 Visual Studio Code 设置
  • 什么软件可以提取视频中的音频制作成手机铃声
  • 使用SAX解析XML
  • 算法-图和图算法
  • 学习HTTP相关知识笔记
  • 异步
  • 正则表达式小结
  • 2017年360最后一道编程题
  • ​LeetCode解法汇总2670. 找出不同元素数目差数组
  • ​如何防止网络攻击?
  • ​无人机石油管道巡检方案新亮点:灵活准确又高效
  • #etcd#安装时出错
  • #Linux(make工具和makefile文件以及makefile语法)
  • #免费 苹果M系芯片Macbook电脑MacOS使用Bash脚本写入(读写)NTFS硬盘教程
  • #我与Java虚拟机的故事#连载12:一本书带我深入Java领域
  • ${factoryList }后面有空格不影响
  • (附源码)ssm码农论坛 毕业设计 231126
  • (六)激光线扫描-三维重建
  • (十)c52学习之旅-定时器实验
  • (四)汇编语言——简单程序
  • (五)网络优化与超参数选择--九五小庞
  • (一)u-boot-nand.bin的下载
  • (一)基于IDEA的JAVA基础12
  • (转载)虚函数剖析
  • ****** 二十三 ******、软设笔记【数据库】-数据操作-常用关系操作、关系运算
  • .NET Core工程编译事件$(TargetDir)变量为空引发的思考
  • .NET Framework杂记