最新版本的Kotlin通過多平臺項目支持JVM和JavaScript平臺的代碼共享。除此之外,它還帶來了語言和類庫方面的大量改進,以及更好的編譯器性能。
Kotlin在1.1版本中就已引入了對JavaScript的支持,而最新版本的Kotlin讓開發(fā)者可以很方便地管理在JVM和JavaScript平臺上運行的項目。因為有了Kotlin Native,在未來還將支持本地二進制包。
多平臺項目(multi-platform project)的基本原理是按照一定的方式來組織項目模塊,如一系列公共模塊和平臺特定模塊。平臺特定模塊所包含的代碼要么是運行在JVM上,要么是運行在JavaScript平臺上,可以自由訪問相應(yīng)平臺的包。每一個平臺特定模塊都需要一個公共模塊,這些公共模塊提供了所謂的“預(yù)期聲明(expected declaration)”,平臺特定模塊必須實現(xiàn)這些聲明。因為有了這種機制,平臺獨立代碼可以調(diào)用平臺特定代碼。公共模塊只能包含Kotlin代碼,也只能使用Kotlin的包,而平臺特定模塊可以包含Java或JavaScript代碼,它們可以被編譯成特定的格式。
下面是如何定義公共模塊和相應(yīng)平臺模塊的例子:
// Common modulepackage org.jetbrains.fooexpect class Foo(bar: String) { fun frob()}fun main(args: Array一些跨平臺庫為Kotlin在公共模塊方面帶來了更強大的能力,包括一個序列化庫、一個測試庫和一個HTML同構(gòu)庫。
在語言方面,Kotlin 1.2為某些場景提供了改進的智能類型轉(zhuǎn)換和類型推斷,標準庫中新增了kotlin.math包,序列和集合中也加入了新的標準庫函數(shù)。
Kotlin 1.2中的編譯器變得更快了,比1.1要快25%。在后續(xù)的次要版本中,編譯器性能將會有進一步的提升。
Kotlin 1.2已經(jīng)被綁定到IntelliJ IDEA 2017.3當(dāng)中,可以從官方的發(fā)布說明中看到更多相關(guān)信息。
查看英文原文:Kotlin 1.2 Introduces Multi-Platform Projects