BT

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

| 作者: Sergio De Simone フォローする 12 人のフォロワー , 翻訳者 阪田 浩一 フォローする 1 人のフォロワー 投稿日 2017年12月12日. 推定読書時間: 3 分 |

原文(投稿日: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

この記事に星をつける

おすすめ度
スタイル

こんにちは

コメントするには InfoQアカウントの登録 または が必要です。InfoQ に登録するとさまざまなことができます。

アカウント登録をしてInfoQをお楽しみください。

あなたの意見をお聞かせください。

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする
コミュニティコメント

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

ディスカッション

InfoQにログインし新機能を利用する


パスワードを忘れた方はこちらへ

Follow

お気に入りのトピックや著者をフォローする

業界やサイト内で一番重要な見出しを閲覧する

Like

より多いシグナル、より少ないノイズ

お気に入りのトピックと著者を選択して自分のフィードを作る

Notifications

最新情報をすぐ手に入れるようにしよう

通知設定をして、お気に入りコンテンツを見逃さないようにしよう!

BT