「実験的な」Kotlinコルーチンを本番環境で使用できますか?


回答:


112

更新:Kotlinコルーチンは、Kotlin1.3以降実験的ではなくなりました。

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

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

実験的なコルーチンは別のkotlin.coroutines.experimentalパッケージ名を使用するため、コルーチンの設計が完了してkotlin.coroutinesパッケージに移動しても、古いコンパイル済みコードは壊れませんが、別のサポートライブラリを介して引き続き機能します。

それらが「実験的」である理由とこれが何を意味するかについてのさらなる議論(長い間)は、AndreyBreslavによるこのフォーラム投稿で見つけることができます。

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

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


5
使用する関数で強調表示された警告が表示されると、それでも心配になります。たとえば、launch、stateingThe feature "coroutines" is experimental (see more here)kotlinlang.org
docs / diagnostics /experimental-coroutines.html

4
ちょっとキャッチ22ですね。誰も試していない場合、どのようにバトルテストが行​​われますか:)一方、JetBrainsの「実験的」機能に関する私の経験は、他の多くのベンダーからの「本番品質」リリースの経験をはるかに上回っています。具体的には、コルーチンの実装に関する問題はまったくありませんでした。私が見た唯一の「グリッチ」は、静的型システムによる処理の詳細に関するものであり、実行時に影響はありません。彼らはヘーゼルキャストジェットで非常に深刻なストレステストとベンチマークに合格し、色が飛んでいました。
Marko Topolnik 2018

この答えの一部は明らかに間違っています。パッケージ全体は実験的ではなく、それのいくつかの部分です。
Jean de Klerk 2018
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.