BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース Kotlin 1.2がマルチプラットフォームプロジェクトを導入

Kotlin 1.2がマルチプラットフォームプロジェクトを導入

原文(投稿日:2017/11/30)へのリンク

A note to our readers: As per your request we have developed a set of features that allow you to reduce the noise, while not losing sight of anything that is important. Get email and web notifications by choosing the topics you are interested in.

Kotlinの最新バージョンでマルチプラットフォームプロジェクトを使うとJVMとJavaScriptのプラットフォーム間でコードを共有できるようになった。加えて、言語やライブラリでの多くの改善、コンパイラのパフォーマンス向上が含まれる。

Kotlin 1.1でJavaScriptターゲットのサポートを導入後、KotlinはJVMとJavaScript両方のプラットフォーム上での動作を目的とするプロジェクトを開発者が簡単に管理できる可能性を切り開いている。将来、ネイティブバイナリへのサポートも含まれるだろう。Kotlin Nativeのおかげだ。

マルチプラットフォームプロジェクトの基本的なアイデアは、モジュールを共通モジュールとプラットフォーム固有のモジュールに整理することだ。プラットフォーム固有のモジュールはJVMまたはJavaScriptのどちらかで動作し、自由にプラットフォーム固有のライブラリにアクセスするコードを含む。各プラットフォーム固有のモジュールに対して、共通モジュールは“expected宣言”と呼ばれるものを提供する存在である。たとえばプラットフォーム固有のモジュールで実装しなければならない宣言だ。このメカニズムのおかげで、プラットフォームから独立したコードからプラットフォーム固有のコードを呼び出せる。共通モジュールは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でかなり速くなった。Kotlin 1.1より25%上回る。1.2のマイナーリリースでさらなる改善を計画している。

Kotlin 1.2、IntelliJ IDEA 2017.3にすでに同梱されているが、その新事項についてより詳細は公式リリースノートにある。

Rate this Article

Adoption Stage
Style

この記事に星をつける

おすすめ度
スタイル

BT