web-dev-qa-db-ja.com

「実験的」コトリンコルーチンは実稼働環境で使用できますか?

Kotlinコルーチンは実稼働環境で使用できますか?また、それらの実験ステータスはどういう意味ですか?

73
Roman Elizarov

[〜#〜] update [〜#〜]:KotlinコルーチンはKotlin 1.3以降、実験的ではなくなりました。

Kotlinコルーチンは、本番環境で使用できます。それがKotlin 1.1で公式にリリースする主な理由でした。それらをリリースしたJetBrainsチームは、マイナーリリースで導入された変更に関して、複雑な実稼働アプリケーションで安全に試すことができるようにするとともに、それらの変更に関して下位互換性を維持することを約束しました。

つまり、「実験」機能と「通常」機能の違いは、通常のKotlin機能ではマイナーアップデートで新しいものを追加できないことです。「完全な互換性」の保証があるためです。しかし、何も削除することはできません(下位互換性の保証のため)。

実験的なコルーチンは個別のkotlin.coroutines.experimentalパッケージ名を使用するため、コルーチンのデザインが確定してkotlin.coroutinesパッケージに移行しても、古いコンパイル済みコードは破損しませんが、個別のサポートライブラリを介して動作し続けます。

それらが「実験的」である理由と、これが何を意味するかについてのさらなる議論(長い読み)は、Andrey Breslavによる forum post にあります。

同じ問題は、コルーチンルーチンをサポートするライブラリにも当てはまります。

kotlinx.coroutinesの現在のバージョンは、本番用に設計されています。これはテストで十分にカバーされており、多くのものがすでに最適化されており、すべての変更は以前にコンパイルされたコードとの後方互換性の問題を考慮して行われます。確かにさまざまなコルーチンベースのもののテストベッドとして機能するため、対応する関数とクラスのドキュメントで「作業中」または「不安定」と明確にマークされている部分があります。ただし、デフォルトでは、kotlinx.coroutinesのすべてのパブリックAPIは安定していると見なされ、必要に応じて適切な移行支援により進化しています。

98
Roman Elizarov