जहां तक मैं समझता हूं, स्काला और क्लोजर दोनों को नई भाषाओं के रूप में डिजाइन किया गया है
- जेवीएम पर निर्भर करते हैं, और
- आसानी से जावा कोड के साथ एकीकृत, इस अर्थ में कि वे स्काला और क्लोजर कोड के अंदर जावा कक्षाओं का उपयोग करने की अनुमति देते हैं।
जावा 8 के साथ शुरू (और शायद जावा के बाद के संस्करणों के साथ और भी मजबूती से), जावा भाषा के शब्दार्थ में बदलाव होंगे।
मैं यह पूछना चाहता था कि ये परिवर्तन जावा और स्काला / क्लोजर के बीच अंतर को कैसे प्रभावित करेंगे और इसके परिणाम क्या होंगे। उदाहरण के लिए, चूंकि जावा 8 में लैम्ब्डा ऑब्जेक्ट्स नहीं हैं (उदाहरण के लिए यहां देखें ), स्काला और क्लॉजुर को जावा मूल्यों से निपटना पड़ सकता है जो ऑब्जेक्ट नहीं हैं। क्या यह एक समस्या होगी?
मैं निम्नलिखित परिदृश्यों के बारे में सोच सकता हूं:
- स्काला या क्लोजर भाषा को नए जावा शब्दार्थ (नए गैर-वस्तु मानों को संभालने के लिए) और जावा के साथ इंटरऑपरेबिलिटी का समर्थन करने के लिए अनुकूलित किया जाएगा।
- स्काला या क्लोजर भाषा का विस्तार नहीं किया जाएगा। यह केवल तभी संभव होगा जब फ़ंक्शन मूल्यों जैसे नए जावा को मौजूदा अवधारणाओं पर मैप किया जा सकता है। उदाहरण के लिए, स्काला में भी एक फ़ंक्शन एक ऑब्जेक्ट है, इसलिए मुझे लगता है कि जावा फ़ंक्शंस फिर से स्कैला के दृश्य में आने पर कुछ प्रकार की वस्तुओं में लिपटे होंगे।
- नवीनतम जावा के विकास का पालन किए बिना, स्केल या क्लोजर भाषा जावा 6 या 7 तक इंटरऑपरेबिलिटी का समर्थन करना जारी रखेगी। इसके लिए आवश्यक है कि जावा के पुराने संस्करणों का अभी भी समर्थन किया जाए (कम से कम OpenJDK या किसी अन्य परियोजना द्वारा), ताकि ये भाषाएँ जावा की अधिक रूढ़िवादी / स्थिर शाखा पर आधारित हो सकें।
सारांश: क्या हम उम्मीद कर सकते हैं कि जावा के भविष्य के विकास का जावा के साथ अंतर-संचालन बनाए रखने के लिए स्काला और क्लोजर जैसी भाषाओं पर प्रभाव पड़ेगा? क्या इस विषय पर कुछ चर्चा (लिंक) पहले से चल रही है?
ध्यान दें
मैं कल्पना कर सकता हूं कि स्काला, क्लोजर, और अन्य जेवीएम-आधारित भाषाओं को जेवीएम के नए संस्करणों के लिए उनके कार्यान्वयन को अद्यतन करने में कोई बड़ी समस्या नहीं होगी (और यह कि जेवीएम की नई सुविधाएँ इस कार्यान्वयन को और भी आसान बना देंगी)। मेरा प्रश्न जावा की सुविधाओं पर एक भाषा के रूप में केंद्रित है और क्या / कैसे अन्य JVM- भाषा इन नई विशेषताओं का "देखने" / उपयोग करने में सक्षम होगी, न कि इस पर कि क्या JVM- आधारित भाषाएं नवीनतम JVM पर चलेंगी।
Stringएक जावा है String। इसलिए स्काला कुछ जावा लाइब्रेरी कक्षाओं का उपयोग करता है। लेकिन अगर आपको लगता है कि यह बहुत मजबूत है, तो मैं सूत्रीकरण को बदल सकता हूं।