今天我们正式发布Kotlin1.2。这是一个意义重大的版本,也是将Kotlin推广到现代化应用的各部件开发的关键一步。

在Kotlin1.1版本,我们正式将JavaScript纳入支持,你可以将你的Kotlin代码编译成JS并在浏览器运行。而在Kotlin1.2,你的代码可以在JavaScript和JVM中复用。现在只需要编写一次业务逻辑,代码就能在后端、浏览器前端、Android移动app中复用。我们也正努力开发能让你复用更多代码的库,例如跨平台序列化的库。

Kotlin1.2将集成在本周发布的IntelliJ IDEA 2017.3。如果你正在使用Android Studio或旧版本的IntelliJ IDEA,你可以在Tools | Kotlin | Configure Kotlin Plugin Updates中安装新版本。

本次更新包含了许多外部贡献者的成果,我们也感谢你们反馈和报告的问题,尤其是提交了PR的贡献者。

跨平台项目

一个跨平台的项目允许你使用相同的代码库去构建多个层面的应用程序 —— 后端、前端和Android app。这样的项目不仅拥有包含跨平台代码的通用模块,还拥有包含特定平台(JVM或JS)代码与能调用依赖于平台的库的特定平台模块。 要从通用模块中调用特定平台代码,可以使用预定义 - 所有特定平台模块都需要提供实际实现的声明。

此特性的更多的说明,请查看此文档

正如同前面所说的,我们正致力于开发更多的库,供你将业务逻辑迁移到通用模块:

  • kotlin.test能直接在Kotlin1.2中使用,只需写一次测试便可在JVM和JS中运行
  • kotlinx.html支持-同构渲染——使同样的代码在前后端渲染HTML
  • kotlinx.serialization允许你使用JSON或者ProtoBuf在应用程序的不同层之间序列化Kotlin对象

请注意跨平台项目现在只是一个实验性的特性;这意味着虽然可以正常使用,但我们可能会在后续版本中更改设计(到时我们会提供工具迁移代码的)。

编译的性能优化

在1.2版本的开发过程中,我们费尽心思去提升编译的速度。相比于1.1版本,我们达到了接近25%的提升,并且我们看到了能进一步优化的潜力,这将在1.2.x的更新版本中发布。

下图展示了两个使用Kotlin构建的大型JetBrains项目在编译时的时间差异:

其他在语言和标准库方面的改进

我们还对语言和标准库进行了一些小改进:

  • 在注解(常量数组)传递多个参数时一个更简洁的语法
  • lateinit现在支持全局或局部变量了,同时检查lateinit变量是否已经初始化;
  • 智能转换类型推断在某些情况的改善;
  • 标准库现在可以兼容Java9中引入的拆分包限制
  • 标准库引入了新的kotlin.math
  • 标准库新增了用于处理队列和集合的函数,其中有一组函数可以将集合或队列分解为可重复固定尺寸的组

更多信息及示例代码,请查看What’s New in Kotlin 1.2文档页面。

走向世界的Kotlin

随着今年3月份发布了Kotlin1.1,Kotlin在全世界范围内受到了巨大的关注,这在KotlinConf上达到最高峰,这次会议于11月2、3号在旧金山举行,总共有12000名与会者。本次会议我们作了全程记录,视频在这里

Kotlin现在已经受到了Android开发的官方支持,并且集成到Android Studio3.0中,同时Google也提供了示例设计规范。据统计,已有超过17%的Android Studio 3.0项目在使用Kotlin了,其中包括来自热门初创公司和500强公司的许多应用程序。

在服务器端,Spring Framework 5.0已经支持许多Kotlin的特性了,Vert.x也从3.4.0版本开始支持Kotlin。此外,Gradle现在也开始支持Kotlin DSL,Gradle Kotlin DSL项目正以可观的速度迈向1.0版本。

GitHub上开源项目的Kotlin代码行数已经超过了2500万。 在Stack Overflow上,Kotlin是增长最快,也是最少被讨厌的语言之一

Kotlin社区的发展速度也快得让人惊叹。现已有100多个用户群体遍布世界各地,除开我们无法追踪到的讨论,就我们所知而绘成的讨论分布图能让你了解到世界哪些地方正在使用Kotlin。

同时也有越来越多的书籍(包括我们的”Kotlin in Action”已被译成英语俄语日语中文葡萄牙语)、在线课堂、教程和其他资料供初学者学习。

与开发团队交流:网络研讨会和Reddit AMA

为了分享更多新版本信息,我们计划于12月7日晚上6点举办Kotlin1.2跨平台项目的网络研讨会。名额有限,请及时注册!

Kotlin团队也会在12月5日在Kotlin Reddit上进行AMA(问答会),讨论将于中午开始,与你度过接下来的24小时。

如何升级

与往常一样,你可以在try.kotlinlang.org尝试新版本

  • 在Maven,Gradle和npm:请更新编译版本及标准库版本号到1.2.0,详细请查看文档
  • 在Intellij IDEA:2017.3已集成了1.2版本,旧版本可以通过安装或更新Kotlin插件来获取最新版本。
  • 在Android Studio:请通过Plugin Manager安装或更新你的插件。
  • 在Eclipse:通过Marketplace安装插件。
  • Github发布页可下载最新命令行编译器。

关于兼容性:Kotlin1.2版本及其标准库是向前兼容的,在1.0或1.1版本下成功编译并运行的代码也能运行在1.2上。考虑到一些大型团队需要逐渐推进更新,我们提供了一些编译器开关以便禁用部分新特性。如果遇到问题,请参考这里

请尽情享受Kotlin!