JetBrains は、Android 開発用の Google 推奨言語の重要なアップデートである Kotlin 1.4 をリリースしました。
Kotlin は Java 仮想マシン (JVM) をターゲットとした言語として始まりましたが、主な用途は Android 開発ですが、ネイティブ コードを含む他のプラットフォームをターゲットにすることもできます。
Kotlin/NativeはLLVMを使用し、iOS、macOS、Android、Windows、Linux、WebAssembly向けにコンパイルできます。Kotlin/JSはJavaScriptにクロスコンパイルされ、ブラウザまたはNode.jsを搭載したサーバー上で実行できます。
Redmonkの言語ランキングではKotlinは19位にランクされています。アナリストのStephen O'Grady氏は、「今四半期はRustより1つ順位を上げたKotlinが、5年前は20も下の68位だった」という点が印象的だと指摘し、Kotlinの上昇傾向は今や停滞していると付け加えています。JetBrainsは、過去1年間でKotlin開発者が580万人を超えたと主張しています。
バージョン 1.4 は、おそらく 2018 年 10 月の 1.3 以来最も重要なアップデートです。この言語では、これまで Java メソッドおよびインターフェースを使用する場合にのみサポートされていた SAM (単一抽象メソッド) 変換がサポートされるようになり、ラムダ式をより簡潔かつ効率的に使用できるようになりました。
もう一つの変更点は、名前付き引数と位置引数を混在させることができるようになったことです。他にも細かい調整が加えられています。型推論が改善され、より多くのケースに適用できるようになり、var
キーワードの幅広い利用が可能になりました。
Kotlin Multiplatform を使用すると、開発者は共通のコアに対して共有コードを作成し、必要に応じてプラットフォーム固有のコードを作成できます。
より興味深い変更点は、コンパイラとツールへの変更です。新しいKotlinコンパイラが導入され、JetBrainsは「サポート対象の全プラットフォームを統合する」と約束しています。これは現在開発中ですが、1.4では新しいJVMおよびJavaScriptバックエンドコンパイラがアルファ版として導入され、「安定稼働が完了次第、デフォルトとなる」と約束しています。
ここで重要なのは、JVM、JavaScript、ネイティブターゲットで同じIR(中間表現)を使用していることです。これにより、コンパイラの機能とバグ修正は、現在3つの異なるコンパイラが存在するのに対し、一度実装するだけで済みます。また、AppleプラットフォームにおけるObjective-CおよびSwiftとの相互運用性も向上しています。
Kotlin Multiplatformは、現在アルファ版のプロジェクトです。複数のプラットフォーム間でコードを共有するために、Common Kotlinと呼ばれるコア言語とライブラリを定義し、すべてのターゲット向けにコンパイルし、プラットフォーム固有のコードを個別に記述します。1.4の新機能は階層構造サポートと呼ばれ、異なるiOSバージョン間など、プラットフォームのサブセット間でコードを共有できるようになります。
Kotlin 標準ライブラリには、配列とコレクションの新しい関数、ビット演算の新しい関数(「実験的」な と を含むrotateLeft()
)など、多数の新機能が追加されましrotateRight()
た。また、Kotlin JSON シリアル化 API の最初の安定バージョンもあります。
Kotlin が人気の理由は、Java 開発者にとって移行が容易であるだけでなく、ほとんどの null 参照例外を排除する型システムと、拡張関数、プロパティ、演算子オーバーロードなどの多くの追加機能を備えていることです。
この言語は好評を博しており、StackOVerflow の調査によると「最も愛されている」言語の 4 位となっているが、最近、その市場シェアを侵食する可能性のある展開がある。
Kotlin フォーラムでの議論で、「Kotlin を学ぶべきか、それとも Flutter を使うべきか」という質問がありました。Flutterは言語ではなく、Dart を言語とするクロスプラットフォーム フレームワークです。
「私はKotlinとFlutterの両方の大ファンです。マルチプラットフォーム開発に関しては、勝負はありません。Flutterが圧倒的に勝っています。最初のリリースがリリースされたら、私たちのKMP(Kotlin Multiplatform)プロジェクトをFlutterに切り替えるよう働きかけるつもりです」と、ある開発者は語った。
これは Android 開発ではなくクロスプラットフォームの文脈ですが、Google が Flutter に多額の投資をしていることを考えると、Android のみの開発者もその方向に向かっているのが不思議ではありません。
とはいえ、Kotlinの利点は、Javaが使える場所ならどこでも使えることです。Spring、Micronaut、JetBrains独自のWebアプリケーションフレームワークであるKtorを使ったサーバーアプリケーションにも使えます。KotlinがDartやFlutterにモバイル開発者を奪われたとしても、他の分野ではJavaよりも優れたJavaであるという点で、Kotlinは利益を得る可能性があります。®