जावा में बंद होने से जावा समुदाय पर क्या प्रभाव पड़ेगा?


11

यह जावा के लिए नियोजित सुविधाओं में से एक है: क्लोजर। हम में से कई लोग उनके लिए तरस रहे हैं। हममें से कुछ (जिनमें मैं भी शामिल है) थोड़ा अधीर हो गया है और शून्य को भरने के लिए स्क्रिप्टिंग भाषाओं की ओर रुख किया है।

लेकिन, एक बार बंद होने के बाद अंत में जावा आ गया है: वे जावा समुदाय को कैसे प्रभावित करेंगे? क्या वीएम-लक्षित स्क्रिप्टिंग भाषाओं की उन्नति धीमी गति से क्रॉल होने के समान होगी, या समान रहेगी? क्या लोग नए क्लोजर सिंटैक्स के लिए झुंड करेंगे, इस प्रकार जावा कोड-बेस को सभी कार्यात्मक रूप से संरचित कार्यान्वयन में बदल देंगे? क्या हम केवल जावा में बंद स्प्रिंकल देखेंगे? टूल / आईडीई समर्थन पर क्या प्रभाव पड़ेगा? प्रदर्शन के बारे में कैसे? और अंत में, जावा की निरंतर गोद लेने का क्या मतलब होगा, एक भाषा के रूप में, अन्य भाषाओं की तुलना में जो लोकप्रियता में बढ़ रही हैं?

नवीनतम प्रस्तावित जावा क्लोजर सिंटैक्स स्पेक्स में से एक का उदाहरण प्रदान करने के लिए:

public interface StringOperation {
   String invoke(String s);
}

// ...

(new StringOperation() {
   public invoke(String s) {
       new StringBuilder(s).reverse().toString();    
   }
}).invoke("abcd");    

बन जाएगा ...

String reversed = { 
    String s => 
    new StringBuilder(s).reverse().toString()
  }.invoke("abcd");

[स्रोत: http://tronicek.blogspot.com/2007/12/closures-closure-is-form-of-anonymous_28.html]


आपके द्वारा पोस्ट किया गया उदाहरण कई साल पहले से है - क्या आप सुनिश्चित हैं कि यह वर्तमान प्रस्तावों का प्रतिनिधि है?
डैनियल ईयरविकर

यह नहीं हो सकता है: मेरे उदाहरण को संशोधित करने के लिए स्वतंत्र महसूस करें

3
मैंने हाल ही में जावा का उपयोग करना कम या ज्यादा बंद कर दिया है। मैं अभी भी बंद होने के लिए तत्पर हूं।
Anto

@ डैनियल - यह वर्तमान प्रस्ताव नहीं है, एक अधिक वर्तमान (और बहुत अलग) प्रतीत होता है यहां एक: baptiste-wicht.com/2010/05//
निकोल

क्या यह C # लैम्ब्डा अभिव्यक्ति की तरह है?
लुईस

जवाबों:


4

मुझे लगता है कि बहुत सारे 'साधारण' जावा डेवलपर्स के लिए इस अवधारणा के आसपास अपना सिर लाने में कुछ समय लगेगा यदि वे पहले से ही परिचित नहीं हैं, लेकिन धीरे-धीरे यह हमारे सभी लाभ के लिए नियमित रूप से जावा उपयोग में आसानी करेगा। यह बहुत अच्छा होगा अगर इसे जावा 5 के आने पर जेनरिक के रूप में जल्दी से जल्दी गले लगा लिया जाए।

मुझे लगता है कि यह वीएम लक्षित स्क्रिप्टिंग भाषाओं को प्रभावित नहीं करेगा, क्योंकि यह उन लोगों के उपयोग का केवल एक लाभ है जो इसके पास हैं।


3

एक सामान्य चक्र है जो किसी चमकदार नए उपकरण के साथ जाता है:

  • बड़े पैमाने पर उत्साह, नए उपयोगकर्ताओं की हड़बड़ाहट के साथ। यह सामान्य और स्वस्थ है, क्योंकि यह हमें नए टूल की सीमाओं को समझने में मदद करता है और इसका उपयोग कैसे किया जा सकता है।
  • अधिक आरक्षित लोग संघर्ष करेंगे और मूर्खतापूर्ण होने के कारण शुरुआती दत्तक ग्रहण करेंगे
  • आखिरकार, उत्तेजना दूर हो जाती है और शुरुआती अपनाने वाले नए उपकरण का उपयोग करने के लिए स्वस्थ तरीके से बस जाते हैं
  • अधिक आरक्षित लोग नए टूल का उपयोग करके लोगों की उत्पादकता से ईर्ष्या करना शुरू कर देंगे, और इसे अपनाना शुरू कर देंगे - अब स्वस्थ पैटर्न का उपयोग करके।

यह सब एक दो साल लगते हैं। यह एनोटेशन और जेनरिक का सच था, और यह क्लोजर के लिए भी सही होगा।

स्क्रिप्टिंग भाषा के लोगों पर प्रभाव:

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

1

जो लोग बहु-थ्रेडेड प्रोग्रामिंग करते हैं, वे जावा में अपरिवर्तनीय डेटा संरचनाओं को एम्बेड करने में सक्षम होंगे और जावा और लिस्प के बीच भाषा प्रतिबाधा बेमेल के कारण गैर-सीक्वेटर्स का सहारा लेने की आवश्यकता के बिना उन्हें अधिक लिस्प-प्रकार तरीके से संभाल सकेंगे।

जो लोग उपरोक्त में से किसी का भी उपयोग नहीं करते (या समझते हैं) वे पहले की तरह ही काम कर पाएंगे।


1
इसका कोई अर्थ नहीं निकलता। क्लोजर का थ्रेडिंग या म्यूटेबिलिटी से कोई लेना-देना नहीं है।
davidk01

वे करते हैं। मस्तिष्क के विस्फोटों के बिना काम करने के लिए उचित क्लोजर को अपरिवर्तनीयता की आवश्यकता होती है।
परमकेरा

नहीं, वे नहीं। एक बंद कोड एक टुकड़ा है जो उस वातावरण के बारे में जानता है जो इसे बनाया गया था।
davidk01

1
@ davidk01 की परिभाषा ठीक है, लेकिन जब बंद करने योग्य परिवर्तनशील चर से लिंक होता है, तो इसका परिणाम परिवर्तनशील चर के साथ बदल जाता है। आमतौर पर, यह वह नहीं है जो कोई चाहता है, लेकिन यदि कंपाइलर आपत्ति नहीं करता है, तो त्रुटि लगभग undetectable है।
परमकेरा

1
@ davidk01 नहीं, मैं नहीं। मेरा कहना है कि क्लोजर / लैम्ब्डा अच्छी तरह से काम करते हैं यदि वे कैच किए गए चर की अपरिहार्यता से बंधे हों। अन्यथा आप त्जेन्तेन्च की दया में हैं, और केवल समर्पित उपासकों के यहाँ संभावना है।
परमकेरा

1

मुझे संदेह है कि जो लोग क्लोजर से परिचित हैं, उन्हें एप्लिकेशन कोड में उपयोग करना शुरू हो जाएगा। वे जावा के पुराने संस्करणों के साथ पश्चगामी संगतता बनाए रखने के लिए कुछ समय के लिए पुस्तकालयों में उनसे बचेंगे।

प्रोग्रामर जो अन्य भाषाओं से क्लोजर से परिचित नहीं हैं, उन्हें जावा में अपनाना धीमा होगा।

जब वे अपग्रेड किए गए सभी चेतावनियों के कारण आंशिक रूप से जावा में पेश किए गए थे, जब आपने अपग्रेड किया था और एसडीके में शामिल होने के कारण जेनरिक को जल्दी से अपनाया गया था। यह क्लोजर के साथ सही नहीं होगा। उनके अस्तित्व के प्रमाण खोजना कठिन होगा, इसलिए केवल वे जो उनका उपयोग करना चाहते हैं, उनका उपयोग करेंगे।

मुझे नहीं लगता कि अन्य JVM स्क्रिप्टिंग भाषाओं का विकास रुक जाएगा। उन भाषाओं में संवेगों और बहुत सी विशेषताओं के अलावा क्लोजर भी हैं। हालाँकि हम कम नई JVM भाषाएं देख सकते हैं क्योंकि नई JVM भाषाएँ बनाने के लिए क्लोज़र मुख्य प्रोत्साहन था।


आपको mseifed.blogspot.se/2012/09// पर एक नज़र डालनी चाहिए। मुझे लगता है कि यह बहुत बढ़िया है!
mmm
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.