उत्पादन में "प्रायोगिक" कोटलिन कोरटाइन का उपयोग किया जा सकता है?


जवाबों:


112

अद्यतन : Kotlin coroutines अब Kotlin 1.3 के रूप में प्रयोगात्मक नहीं हैं।

कोटलिन कोरटाइन उत्पादन में इस्तेमाल किया जा सकता है। कोटलिन 1.1 में आधिकारिक तौर पर उन्हें रिहा करने का मुख्य कारण था। उन्हें रिहा करने के बाद, JetBrains टीम ने किसी भी बदलाव के संबंध में पश्चगामी अनुकूलता बनाए रखने के लिए प्रतिबद्ध किया था, जो कि उनके द्वारा जारी किए गए छोटे-मोटे बदलावों के रूप में पेश किए जाते हैं, जबकि लोग उन्हें जटिल उत्पादन अनुप्रयोगों में सुरक्षित रूप से प्रयास करने की अनुमति देते हैं।

संक्षेप में, "प्रयोगात्मक" और "सामान्य" सुविधाओं के बीच का अंतर यह है कि सामान्य कोटलिन सुविधाओं के लिए नए सामान को मामूली अपडेट में नहीं जोड़ा जा सकता है, क्योंकि "पूर्ण संगतता" गारंटी है, जबकि प्रयोगात्मक सुविधाओं के लिए नया सामान जोड़ा जा सकता है, लेकिन कुछ भी नहीं हटाया जा सकता (पीछे की संगतता की गारंटी के कारण)।

प्रायोगिक कोरआउट एक अलग kotlin.coroutines.experimentalपैकेज नाम का उपयोग करते हैं , ताकि जब कॉरटाइन्स डिज़ाइन को अंतिम रूप दिया जाए और वे kotlin.coroutinesपैकेज में स्थानांतरित हो जाएं , तो पुराना संकलित कोड टूट नहीं जाएगा, लेकिन एक अलग समर्थन पुस्तकालय के माध्यम से काम करना जारी रखेगा।

आगे की चर्चा (लंबे समय तक) के बारे में कि वे "प्रयोगात्मक" क्यों हैं और इसका क्या मतलब है, इस मंच पोस्ट में एंड्री ब्रेस्लेट द्वारा पाया जा सकता है ।

यही सवाल कॉरआउट समर्थन पुस्तकालयों पर भी लागू होता है।

का वर्तमान संस्करण kotlinx.coroutinesउत्पादन उपयोग के लिए डिज़ाइन किया गया है। यह बहुत अच्छी तरह से परीक्षण के साथ कवर किया गया है, बहुत सारी चीजें पहले से ही अनुकूलित हैं, सभी परिवर्तन पहले संकलित कोड के साथ पीछे की संगतता के मुद्दों पर विचार कर रहे हैं। यह निश्चित रूप से विभिन्न कोरटाइन-आधारित चीजों के लिए एक परीक्षण-बिस्तर के रूप में काम करता है, इसलिए कुछ हिस्से ऐसे हैं जिन्हें स्पष्ट रूप से "कार्य में प्रगति" या संबंधित कार्यों और कक्षाओं के प्रलेखन में "अस्थिर" के रूप में चिह्नित किया गया है। हालाँकि, डिफ़ॉल्ट रूप से, सभी सार्वजनिक APIs kotlinx.coroutinesको स्थिर माना जाता है और उपयुक्त प्रवासन सहायता के साथ, यदि आवश्यक हो, विकसित किया जा रहा है।


5
यह तब भी मुझे चिंतित करता है जब मैं उस फ़ंक्शन पर हाइलाइट की गई चेतावनी को देखता हूं जिसका उपयोग हम करते हैं जैसे कि लॉन्च, स्टिंगThe feature "coroutines" is experimental (see more here) और kotlinlang.org/docs/diagnostics/experimental-coroutines.html पर
Elye

4
यह कैच -22 का एक सा है, है ना? अगर किसी ने उन्हें आज़माया नहीं तो वे युद्ध-परीक्षण कैसे करेंगे :) दूसरी तरफ, जेटब्रेन के "प्रयोगात्मक" सुविधाओं के साथ मेरा अनुभव कई अन्य विक्रेताओं से "उत्पादन गुणवत्ता" रिलीज के साथ अनुभव से मीलों ऊपर है। विशेष रूप से, मेरे पास कोराउटाइन के कार्यान्वयन के साथ बिल्कुल शून्य मुद्दे हैं; एकमात्र "ग्लिच" मैंने देखा कि उनके उपचार में स्थैतिक प्रकार प्रणाली द्वारा कुछ विवरण थे, जिनके रनटाइम पर कोई नतीजा नहीं है। उन्होंने फ्लाइंग रंगों के साथ, हेज़ेलकास्ट जेट में काफी गंभीर तनाव परीक्षण और बेंचमार्क पारित किए।
मार्को टोपोलनिक

इस जवाब के कुछ हिस्से गलत हैं। पूरे पैकेज प्रयोगात्मक, यह के कुछ भागों नहीं है।
जीन डी क्लार्क
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.