Skip to content

Kotlinコンポーネントの安定性

Kotlin言語とツールセットは、JVM、JS、Nativeターゲット向けのコンパイラ、標準ライブラリ(Standard Library)、さまざまな付随ツールなど、多くのコンポーネントに分かれています。 これらのコンポーネントの多くはStable(安定版)として公式にリリースされています。これは、「スムーズなアップデート(Comfortable Updates)」と「言語を最新の状態に保つ(Keeping the Language Modern)」の原則に従い、後方互換性を保ちながら進化してきたことを意味します。

「フィードバックループ(Feedback Loop)」の原則に従い、コミュニティが試用できるように多くの機能を早期にリリースしているため、一部のコンポーネントはまだStableとしてリリースされていません。 それらの中には、非常に初期段階のものもあれば、成熟が進んでいるものもあります。 各コンポーネントの進化の速さと、採用する際にユーザーが負うリスクのレベルに応じて、それらを Experimental(実験的)Alpha(アルファ)、または Beta(ベータ) としてマークしています。

安定性レベルの解説

各安定性レベルとその意味についてのクイックガイドは以下の通りです。

Experimental は「おもちゃのプロジェクト(toy projects)でのみ試してください」を意味します:

  • 私たちはアイデアとその実現可能性をテストしている段階です。一部のユーザーに実際に試してもらい、フィードバックを共有してほしいと考えています。スコープは最小限であり、機能はいつでも変更または削除される可能性があります。安定性や互換性は保証されません。

Alpha は「製品化の準備が整うかどうかをテストしている」ことを意味します:

  • 私たちはこれを製品にする意向があり、最終的な形を決定するためにユーザー価値とマーケットフィット(市場適合性)を検証しています。機能セットはまだ不完全であり、破壊的な変更が予想されます。もし仮説が正しくないことが判明した場合、機能を大幅に変更したり、中止したりする可能性があります。

Beta は「使用可能です。移行に伴う問題が最小限になるよう最善を尽くします」を意味します:

  • ほぼ完成しており、ユーザーからのフィードバックが特に重要な時期です。
  • ただし、100%完成しているわけではないため、(ユーザーからのフィードバックに基づくものを含め)変更の可能性があります。
  • 最高のアップデート体験を得るために、事前に出される非推奨(deprecation)警告に注意してください。

私たちは、ExperimentalAlphaBeta を総称して pre-stable(安定前) レベルと呼んでいます。

Stable は「最も保守的なシナリオでも使用してください」を意味します:

安定性レベルは、そのコンポーネントがどれくらい早く Stable としてリリースされるかについては何も示していません。同様に、リリースまでにコンポーネントがどれほど変更されるかを示すものでもありません。それらは単に、コンポーネントがどれほど速く変化しているか、そしてユーザーがアップデートに関する問題のリスクをどれほど負っているかを示すものです。

KotlinコンポーネントのGitHubバッジ

Kotlin GitHub organization には、さまざまなKotlin関連プロジェクトがあります。 私たちがフルタイムで開発しているものもあれば、サイドプロジェクトとして開発しているものもあります。

各Kotlinプロジェクトには、その安定性とサポート状況を示す2つのGitHubバッジがあります:

  • Stability(安定性) ステータス。これは、各プロジェクトがどれほど速く進化しているか、およびユーザーがそれを採用する際にどれほどのリスクを負っているかを示します。 この安定性ステータスは、Kotlin言語機能およびそのコンポーネントの安定性レベルと完全に一致します:

    • Experimental stability levelExperimental を表します。
    • Alpha stability levelAlpha を表します。
    • Beta stability levelBeta を表します。
    • Stable stability levelStable を表します。
  • Support(サポート) ステータス。これは、プロジェクトの保守とユーザーの問題解決に対する私たちのコミットメントを示します。 サポートのレベルは、すべてのJetBrains製品で統一されています。
    詳細は JetBrains Open Source ドキュメントを参照してください

サブコンポーネントの安定性

安定した(Stable)コンポーネントが、実験的な(Experimental)サブコンポーネントを持つ場合があります。例:

  • 安定したコンパイラが実験的な機能を持っている。
  • 安定したAPIに実験的なクラスや関数が含まれている。
  • 安定したコマンドラインツールに実験的なオプションがある。

私たちは、どのサブコンポーネントが Stable ではないかを正確にドキュメント化するようにしています。 また、可能な限りユーザーに警告し、明示的なオプトインを求めることで、安定版としてリリースされていない機能を誤って使用してしまうことを避けるよう最善を尽くしています。

Kotlinコンポーネントの現在の安定性

デフォルトでは、すべての新しいコンポーネントは Experimental ステータスを持ちます。

Kotlinコンパイラ

コンポーネントステータスバージョン以降のステータスコメント
Kotlin/JVMStable1.0.0
Kotlin/NativeStable1.9.0
Kotlin/JSStable1.3.0
Kotlin/WasmBeta2.2.20
Analysis APIStable

主要なコンパイラプラグイン

コンポーネントステータスバージョン以降のステータスコメント
All-openStable1.3.0
No-argStable1.3.0
SAM-with-receiverStable1.3.0
kaptStable1.3.0
LombokAlpha2.3.20
Power-assertExperimental2.0.0

Kotlinライブラリ

コンポーネントステータスバージョン以降のステータスコメント
kotlin-stdlib (JVM)Stable1.0.0
kotlinx-coroutinesStable1.3.0
kotlinx-serializationStable1.0.0
kotlin-metadata-jvmStable2.0.0
kotlin-reflect (JVM)Beta1.0.0
kotlinx-datetimeAlpha0.2.0
kotlinx-ioAlpha0.2.0

Kotlinマルチプラットフォーム

コンポーネントステータスバージョン以降のステータスコメント
Kotlin MultiplatformStable1.9.20
Kotlin Multiplatform plugin for Android StudioBeta0.8.0言語とは別にバージョン管理されています

Kotlin/Native

コンポーネントステータスバージョン以降のステータスコメント
Kotlin/Native RuntimeStable1.9.20
Kotlin/Native interop with C and Objective-CBeta1.3.0CおよびObjective-Cライブラリのインポートの安定性
klibバイナリStable1.9.20cinterop klibは含まれません。以下を参照してください。
cinterop klibバイナリBeta1.3.0CおよびObjective-Cライブラリのインポートの安定性
CocoaPodsインテグレーションStable1.9.20

さまざまなターゲットのサポートレベルの詳細については、 を参照してください。

言語ツール

コンポーネントステータスバージョン以降のステータスコメント
スクリプティングの構文とセマンティクスAlpha1.2.0
スクリプティングの埋め込みおよび拡張APIBeta1.5.0
スクリプティングのIDEサポートBetaIntelliJ IDEA 2023.1 以降で使用可能
CLI スクリプティングAlpha1.2.0

言語機能と設計提案

言語機能と新しい設計提案については、 を参照してください。