写点什么

Kotlin 1.2 引入多平台项目特性

2017 年 12 月 04 日

最新版本的Kotlin 通过多平台项目支持JVM 和JavaScript 平台的代码共享。除此之外,它还带来了语言和类库方面的大量改进,以及更好的编译器性能。

Kotlin 在 1.1 版本中就已引入了对 JavaScript 的支持,而最新版本的 Kotlin 让开发者可以很方便地管理在 JVM 和 JavaScript 平台上运行的项目。因为有了 Kotlin Native ,在未来还将支持本地二进制包。

多平台项目( multi-platform project )的基本原理是按照一定的方式来组织项目模块,如一系列公共模块和平台特定模块。平台特定模块所包含的代码要么是运行在 JVM 上,要么是运行在 JavaScript 平台上,可以自由访问相应平台的包。每一个平台特定模块都需要一个公共模块,这些公共模块提供了所谓的“预期声明(expected declaration)”,平台特定模块必须实现这些声明。因为有了这种机制,平台独立代码可以调用平台特定代码。公共模块只能包含 Kotlin 代码,也只能使用 Kotlin 的包,而平台特定模块可以包含 Java 或 JavaScript 代码,它们可以被编译成特定的格式。

下面是如何定义公共模块和相应平台模块的例子:

复制代码
// Common module
package org.jetbrains.foo
expect class Foo(bar: String) {
fun frob()
}
fun main(args: Array<String>) {
Foo("Hello").frob()
}
// JVM module
package org.jetbrains.foo
actual class Foo actual constructor(val bar: String) {
actual fun frob() {
println("Frobbing the $bar")
}
}

一些跨平台库为 Kotlin 在公共模块方面带来了更强大的能力,包括一个序列化库、一个测试库和一个 HTML 同构库

在语言方面,Kotlin 1.2 为某些场景提供了改进的智能类型转换和类型推断,标准库中新增了 kotlin.math 包,序列和集合中也加入了新的标准库函数。

Kotlin 1.2 中的编译器变得更快了,比 1.1 要快 25%。在后续的次要版本中,编译器性能将会有进一步的提升。

Kotlin 1.2 已经被绑定到 IntelliJ IDEA 2017.3 当中,可以从官方的发布说明中看到更多相关信息。

查看英文原文 Kotlin 1.2 Introduces Multi-Platform Projects

2017 年 12 月 04 日 18:001730
用户头像

发布了 321 篇内容, 共 108.1 次阅读, 收获喜欢 101 次。

关注

评论

发布
暂无评论
发现更多内容

面经手册 · 第7篇《ArrayList也这么多知识?一个指定位置插入就把谢飞机面晕了!》

小傅哥

Java 数据结构 小傅哥 面试题 ArrayList

炒股不要看K线图(分享最近学习投资的一点心得)

Nick

投资 理财

Redis系列(二):Redis的5种数据结构及其常用命令

简爱W

Flink-键值分区状态-10

小知识点

scala 大数据 flink

我也没想到 Springboot + Flowable 开发工作流会这么简单

程序员内点事

java 14

GrowingIO AWS 成本优化之路

GrowingIO技术专栏

AWS 成本优化

硬核科技:莱克立式吸尘器,引领家居清洁“新态度”

InfoQ_967a83c6d0d7

柔性电子拥有改变地球的能力吗?

脑极体

温故知新——Spring AOP(二)

牛初九

spring aop ioc

usdt承兑跑分系统开发,区块链支付跑分系统搭建

WX13823153201

usdt承兑跑分系统开发

MySQL redo与undo日志解析

Simon

MySQL Redo MySQL日志

华为云会议的前世今生

华为云开发者社区

直播 云服务 华为云 视频编码 视频会议

oeasy教您玩转linux010106这儿都有啥 ls

o

GitMaster 更新v1.9.0,支持Gitea,Gist拥抱黑暗模式

neo

gitlab tree gitee GitHub、

性能相关,内存

Linuxer

性能

从6大应用场景,看边缘计算落地生根

博云技术社区

边缘计算 PaaS 容器云 云平台 博云

全民加速节:动态加速在在线教育应用上的最佳实践

巨侠说

在线教育 CDN

软件开发丨关于软件重构的灵魂四问

华为云开发者社区

软件 开发者 软件开发 代码 软件重构

Luajit字节码分析之KSTR

whosemario

lua

Docker 镜像构建之 Dockerfile

哈喽沃德先生

Docker 容器 微服务 容器技术 容器化

难以遏制的人因差错-Go的日志工具之痛

田晓亮

go 微服务

CRM企业到底该不该做PaaS?

ToB行业头条

PaaS SaaS CRM

不得不了解系列之限流

梦朝思夕

限流

莱卡、宾利都在用,英特尔oneAPI渲染工具带来高质量视觉体验

intel001

新金融分布式架构之SOFAStack解决方案

阿里云金融线TAM SRE专家服务团队

零代码简史

明道云

SaaS

币期权DAPP 8月28日全球同步耀世上线,掀起币圈追捧热潮

InfoQ_967a83c6d0d7

第11周总结+作业

林毋梦

Redis系列(一):Redis简介及环境安装

简爱W

“全球+”浪潮下,企业出海选择合适的“技术船舶”成关键

华为云开发者社区

网络 华为云 企业出海 网络加速 宽带

云原生技术采用增加,全球60%后端开发人员都在使用容器 | 趋势分享

博云技术社区

云计算 容器 云原生 PaaS 博云

InfoQ 极客传媒开发者生态共创计划线上发布会

InfoQ 极客传媒开发者生态共创计划线上发布会

Kotlin 1.2引入多平台项目特性-InfoQ