क्या अंतर है, और क्यों एक स्काला डेवलपर जावा 8 CompletableFuture से अधिक स्काला फ्यूचर्स को प्राथमिकता देनी चाहिए?
टिप्पणियों में उल्लिखित @ dk14 ने बताया कि CompletableFuture
में idiomatic Scala api नहीं है।
स्केला डेवलपर के लिए निहितार्थ हैं:
- तथ्य यह है कि यह monadic प्रकार
- जावा-स्केला इंटरॉप भूमि के ऊपर जब के बड़े भाग का उपयोग कर की जरूरत के लिए स्काला विधि परंपराओं का पालन नहीं करता है आम की वजह से comprehensions के लिए की कमी यह तरीकों
है यह भी ध्यान देने योग्य बात है कि जावा CompletableFuture
स्केला Future
के बिल्कुल बराबर नहीं है लायक है। यह स्केल Future
और Promise
का एक फ्यूज है।
ऊपर सूचीबद्ध विपक्ष को ध्यान में रखते हुए स्केल में CompletableFuture
का उपयोग करने में बहुत अधिक समझ नहीं है जब तक कि आप सार्वजनिक एपीआई डिज़ाइन नहीं कर रहे हैं जो जावा के साथ सहजता से अंतःक्रियात्मक होना चाहिए।
क्या अभी भी scala.concurrent का उपयोग करने के अच्छे कारण हैं। जावा में भविष्य akka.dispatch पुल के माध्यम से?
मैं विशेष रूप से, कारणों जावा में akka.dispatch उपयोग करने के लिए देख रहा हूँ वहाँ अभी भी कर रहे हैं किसी भी
अक्का स्केला के शीर्ष पर निर्माण है और यह कभी कभी स्केला का उपयोग करता Future
रों है। इसका मतलब यह है कि जब आपके पास जावा में लिखे गए कोड का कुछ हिस्सा होता है तो इसे स्कैला एपीआई (akka.dispatch
जावा एपीआई के साथ) में लपेटने के लायक है ताकि इसे आसानी से अक्का के साथ उपयोग किया जा सके।
उदाहरण के लिए, आप जावा में अक्का अभिनेता को कार्यान्वित कर रहे हैं। संदेश संसाधित करते समय आप कुछ गैर-अवरुद्ध पढ़ने को करना चाहते हैं, जब किया जाता है, तो परिणाम को किसी अन्य अभिनेता को संदेश के रूप में प्रस्तुत करना चाहिए।
क्या तुम कर सकते हो जावा Callable में अपने आई/ओ डाल करने के लिए, तो akka.dispatch.Futures#future का उपयोग इससे बाहर स्केला Future
प्राप्त करने के लिए है, और फिर आप भविष्य के परिणाम कुछ के लिए एक संदेश के रूप में वितरित किया बनाने के लिए अक्का pipe का लाभ उठाने सकता है अभिनेता।
स्रोत
2015-02-25 19:21:41
इमो, क्योंकि CompletableFuture पर मोनैडिक ऑपरेशंस को मॉनिडिक परिचालनों के साथ सुसंगत रूप से परिभाषित नहीं किया गया है न तो जावा 8 में और न ही स्कैला संग्रह में - इसलिए अर्थपूर्ण संगत नहीं है। और मेरे लिए भी इस तरह के अर्थपूर्ण बहुत अनावश्यक लगता है। + आपको जावा-स्काला इंटरऑपरेबिलिटी से किसी भी लाभ के बिना निपटना होगा। – dk14
क्या आप उत्तर के साथ अपनी टिप्पणी का विस्तार कर सकते हैं? जावा में स्कैला वायदा का उपयोग करने के लिए akka.dispatch पुल के बारे में क्या? – Edmondo1984
1) मेरा मतलब यह है कि CompletableFuture पर कोई 'स्ट्रीम' विधि नहीं है, इसलिए आप सामान्य रूप से मानचित्र-कमी (और फ़िल्टर जैसे परिणाम जैसे) को कॉल नहीं कर सकते हैं - कुछ बदसूरत विधियों का उपयोग करना होगा। पाठ्यक्रम के परिसर भविष्य के लिए भी कोई समझ नहीं है। मैंने अभ्यास में पूर्ण भविष्य का उपयोग नहीं किया (यह बहुत बदसूरत है) - इसलिए आपके प्रश्न का पूरी तरह से जवाब नहीं दे सकता 2) जैसा कि मैं समझता हूं कि विषय स्कैला में जावा के वायदा के बारे में है। – dk14