Kotlin 1.4及以后 - 我们可以期待什么?

Kotlin 1.4及以后 - 我们可以期待什么?

在KotlinConf 2019上,JetBrains的CTO Andrey Breslav讨论了Kotlin的发展方向。Kotlin 1.4版本将在2020年春天到来。Kotlin 1.4及以后的版本会给我们带来什么不一样的变化呢?

01

专注质量和性能

Kotlin 1.4将专注于质量和性能提升。Kotlin 1.4不再添加新的重大功能,而是侧重于稳定性和性能提升。

Kotlin团队已经在性能提升方面投入了很大的精力。Kotlin 1.3.60提升了IDE中代码自动完成提示的性能。Android Studio中的导入Gradle项目的性能提升了2.5倍。Kotlin将继续投入精力来提升构建速度。

02

新的编译器

Kotlin新的编译器一直在开发中。新编译器的功能将逐步替换已有的编译器。有些功能在Kotlin 1.3就已经存在,更多的功能会在1.4到来。新旧两个编译器会同时存在,直到新的编译器稳定下来。

Kotlin的编译器分成前端(front-end)和后端(back-end)两个部分。编译器前端负责分析代码、解析名称和检查类型等工作。IDE用编译器前端来高亮显示语法错误、在不同的定义之间跳转和搜索源代码符号等。新的编译器前端的性能会得到极大的提升。虽然这部分功能不会在Kotlin 1.4到来,JetBrains内部的性能测试表明新的编译器前端相对于已有实现有高达4.5倍的性能提升。

编译器后端负责生成可执行代码。目前Kotlin有3种后端,分别是Kotlin/JVM、Kotlin/JS和Kotlin/Native。前两种后端的实现是独立的,没有代码共享。Kotlin/Native的编译器后端基于一种内部表示(internal representation,IR)。前两种后端实现正在迁到到与Kotlin/Native同样的内部表示。这样不同的后端实现可以共享代码。有了通用的编译器后端之后,编译器插件可以对内部表现进行处理和转换。Kotlin 1.4不会发布编译器插件API。不过JetBrains的合作伙伴,如Google的JetPack Compose,已经在开发编译器插件。

KLib是Kotlin的库分发格式,包含序列化之后的Kotlin内部表示。当在代码中添加对KLib的依赖后,编译器后端可以生成特定平台上的可执行代码。KLib可以像JVM字节代码一样进行分析和转换。Kotlin/Native已经使用KLib作为分发形式,今后其他平台也会提供同样的支持。

03

多平台支持

在Kotlin多平台支持上,有更多的改进。

JetBrains正在开发一个Android Studio插件,可以在iOS设备和模拟器上运行、测试和调试Kotlin代码。

除了Linux、Windows、macOS和iOS之外,Kotlin/Native新增了对watchOS和tvOS的支持。几乎所有的设备都可以运行Kotlin 。

Kotlin核心库可以在全部平台上工作。核心库包括kotlin-stdlib、kotlinx.coroutines、kotlinx.serialization和kotlinx.io。新的日期时间库正在开发中。值得一提的是,Kotlin提供了基于coroutine的反应式流实现Flow。在某些性能测试中,Flow的性能比流行的反应式流实现要快2倍。

对Kotlin库的作者来说,Kotlin创建库的体验得到了提升。即将发布的Dokka 1.0可以生成全部平台的文档。

在浏览器平台方面,Kotlin/JS的性能得到了提升。在修改了Kotlin代码之后,浏览器会自动刷新,也就是熟悉的live-reload功能。可以在Kotlin项目中添加NPM依赖。TypeScript的类型定义文件(.d.ts文件)会被自动识别并转换。

在Kotlin/JS使用了新的通用的编译器后端之后,生成的JavaScript代码的尺寸也缩减到了原来的一半。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值