क्या जावा C # के साथ पकड़ लेगा? [बन्द है]


17

आज मैंने एक सवाल पोस्ट किया जिसमें पूछा गया कि मेरे लिए कौन सी भाषा # या जावा बेहतर होगी। मेरे पास कुछ बेहतरीन जवाब थे। एक बात जो सामने आई वह यह कि शायद जावा अब नई सुविधाओं के साथ सी # के पीछे है। मैंने कुछ वेब लिंक देखे और सबसे ज्यादा इशारा किया कि C # क्या था और क्या जावा नहीं था।

तो आप सभी से मेरा सवाल है कि क्या जावा सी # के साथ फिर से पकड़ लेगा? और अगर आप एक अनुमान लगाते हैं कि यह 5 साल के समय में कहां खड़ा होगा। क्या इसमें वे सारी चीजें होंगी जो शायद अब गायब हैं? जावा 7 के बारे में कैसे?


7
-1, प्रकल्पित और काल्पनिक। यदि शीर्षक बदलकर +1 हो जाता है, तो क्या "C # के पीछे जावा है, और यदि ऐसा है, तो यह कैसे पकड़ सकता है?"
निकोल

2
क्या जावा और C # स्कीम को पकड़ पाएंगे? मुझे बताएं कि आपको अनाम प्रथम श्रेणी के कार्य, क्लोजर और निरंतरता कब मिलती है।
डायटबुद्ध

5
@ दिदिबुद्ध: मैं अपने कोड के साथ अपनी पसंद नहीं करना चाहता ), बहुत-बहुत धन्यवाद।
जोश के

1
@ जोश आप इसे भरना चाहते हैं; और}, ठीक है? लगता है कि LISP बहुत सारे कोष्ठक का उपयोग करता है क्योंकि हर फ़ंक्शन उनका उपयोग करता है, और आप इसमें बहुत सारे कार्य करते हैं।
यूरीअल्बुकर्क

जवाबों:


32

भाषा की विशेषताएँ जावा और C # टिक बनाती हैं। अंततः ये बड़े J2EE और .NET इकोसिस्टम के हिस्से हैं।

दोनों की अपनी ताकत है और अगले 5 वर्षों में इसे और बड़ा करना चाहिए।


19
+1 के लिए "भाषा की विशेषताएँ जावा और सी # टिक बनाती हैं" का बहुत छोटा हिस्सा है
क्रेग

1
हां, एपीआई और लाइब्रेरी कई मायनों में अधिक महत्वपूर्ण हैं।
माइकल के

2
सहमत हैं, लेकिन सवाल भाषा और पारिस्थितिकी तंत्र के बारे में नहीं हैं;)
फिलिप

1
मैं वास्तव में बहुत कम उत्तरों पर +1 मतदान से नफरत करता हूं, लेकिन आप यहां कुछ करने के लिए हैं। आपको इस उत्तर का विस्तार करते हुए देखना अच्छा लगेगा।
निकोल

3
प्रश्न कहते हैं: "कौन सी भाषा सी # या जावा मेरे लिए अध्ययन करने के लिए बेहतर होगी" और "यह 5 वर्षों में कहां खड़ी होगी" ये दोनों पहलू पारिस्थितिकी तंत्र पर फिर भाषा पर अधिक निर्भर करते हैं।
शामत वर्मा

16

मैंने तब तक हाँ कहा होगा जब तक कि ओरेकल तस्वीर में नहीं आता। यह दुखद है, क्योंकि मुझे वास्तव में सुविधाओं में छलांग लगाने का आनंद मिला है जावा और सी # पिछले छह वर्षों से था।


2
आपको क्या लगता है कि Oracle जावा को तोड़फोड़ करेगा?

2
मुझे नहीं लगता कि कॉरपोरेट कल्चर में वही चपलता है जिसमें सूर्य की विशेषताएं शामिल थीं।
जेसी सी। स्लाइसर

8
@ ग्लेन, ओरेकल बनाम Google मुकदमा मुझे दिखाता है कि उन्हें "खुला" स्रोत नहीं मिलता है, और इसका मतलब है कि बड़ी कंपनियों को भविष्य के विकास के लिए जावा लेने की संभावना कम है। groklaw.net/staticpages/index.php?page=OracleGoogle
Tangurena

ओरेकल शायद "स्क्रू जावा" नहीं है, लेकिन जेवीएम। अभी उनके पास दो जेवीएम कार्यान्वयन को संयोजित करने की परियोजना है, जो उन्होंने बीआरए से जेआरकिट और सन के लिए हॉटस्पॉट का अधिग्रहण किया है। जबकि वे इस पर हैं, वे पूरी तरह से दा विंची मशीन परियोजना छोड़ दिया है।
वार्तेक

2
मैं ओरेकल पर मिला हुआ हूं। एंड्रॉइड सूट एक तरह से बंद है, लेकिन वे लिनक्स कर्नेल में योगदान करते हैं और वे Btrfs फाइल सिस्टम के प्राथमिक डेवलपर्स हैं। ओरेकल माइक्रोसॉफ्ट की तुलना में खुले स्रोत को "प्राप्त" करने के लिए लगता है, लेकिन यह बहुत कुछ नहीं कह रहा है।
जॉन्सकेब

6

एक भाषा के रूप में, मैं एक महत्वपूर्ण दर पर नवाचार को जोड़ने के लिए जावा का विस्तार नहीं करता हूं, मुख्य रूप से क्योंकि खुले स्रोत वाले समुदाय जो कि काटने के किनारे पर हैं, वे नए JVM भाषाओं, जैसे स्काला, क्लोजर, पर ध्यान केंद्रित करने की अधिक संभावना रखते हैं। ग्रूवी, जेरी, और जेपीथॉन।

इसके अलावा, पिछड़े-अनुकूलता के लिए जावा की प्रतिबद्धता का मतलब है कि भाषा की विशेषताओं को जोड़ना भाषा के पहले के दिनों की तुलना में स्वाभाविक रूप से कठिन है।


5

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

शायद वे इसे कुछ बड़ी राशि के लिए Google को बेच देंगे और हर कोई खुश होगा। यह इंजीनियरों और सॉफ्टवेयर डिजाइनरों के बजाय बोर्डरूम और वकीलों के हाथों में है।

चीजों के अच्छे पक्ष में, यहां तक ​​कि सुधार के बिना, जावा एक अच्छी भाषा है और इसके चारों ओर एक अच्छा पारिस्थितिकी तंत्र है। जबकि मैं व्यक्तिगत रूप से C # और .net दुनिया को पसंद करता हूं, जावा अभी भी एक बढ़िया विकल्प है। आगे जाकर, समय बताएगा लेकिन अभी तक, जावा बिल्कुल भी बुरा नहीं है। (तिथि और समय पुस्तकालय को बाहर रखा गया ... वाह, क्या वे कभी बदसूरत और गंदे हैं)


1
कर रहे हैं तीसरे पक्ष के पुस्तकालयों अब दिनांक / समय मुद्दों पर काबू पाने के।
माइकल के

1
ओरेकल पीएल / एसक्यूएल के साथ जावा का उपयोग उन कार्यक्रमों के लिए भाषा के रूप में कर रहा था जो डेटाबेस के अंदर रहते थे, कम से कम 10 जी के रूप में। ओरेकल जावा का भारी उपयोग करता है। क्या इसका मतलब यह है कि वे जावा को एक ऐसी दिशा में ले जाएंगे जो मुझे पसंद है, संदिग्ध है, लेकिन वे इसे मारने नहीं जा रहे हैं।
डेविड थॉर्नले

4

वहाँ पकड़ने के लिए कुछ भी नहीं है, इसलिए सवाल कोई मतलब नहीं है।

सिर्फ इसलिए कि जावा वास्तव में सी # की नकल नहीं करता है, इसका मतलब यह नहीं है कि यह किसी तरह से "हीन" है, यह सिर्फ अलग है। कोबोल के साथ C # "कैच" करने पर भी पूछ सकते हैं।


23
मैं सहमत नहीं हूँ। C # और Java कई तरह से समान हैं, C # और COBOL की तुलना में बहुत अधिक हैं। मुझे याद है कि एक दिन यह पढ़कर कि "C # वही है जो जावा को होना चाहिए था"। संक्षेप में, मेरा मानना ​​है कि सी # और जावा सीधे प्रतिस्पर्धा कर रहे हैं, और दोनों के साथ काम करने के बाद मुझे यह कहना होगा कि मैं जावा में बहुत सी सी # सुविधाएँ रखता हूं, लेकिन अन्य तरीके से नहीं ...
फिलिप

क्या आपको ऐसी परिस्थितियाँ मिलीं जहाँ आप C # या Java का उपयोग कर सकते थे? डेवलपर की पसंद बना सकते हैं, जहां स्थितियों। आमतौर पर एक दुकान में पहले से ही वरीयताएँ / पूर्वाग्रह / पूर्वाग्रह होते हैं और चुनाव एक ही पारिस्थितिकी तंत्र पर भाषाओं के बीच होता है। जैसे जावा और स्काला के बीच या C # और F # के बीच
शमिता वर्मा

2
मैं सभी डिज़ाइन निर्णय C # के साथ सहमत नहीं हूं, लेकिन Java की तरह, वे जानबूझकर C ++ प्रतिस्थापन करने के बारे में सेट करते हैं, और उनके सामने जावा के उदाहरण के साथ, उन्होंने जानबूझकर कुछ महत्वपूर्ण विशेषताएं जोड़ी हैं जिन्हें Java ने छोड़ दिया है। इसलिए यदि आपको लगता है कि वे विशेषताएं अच्छी हैं, तो जावा को C # के साथ "विशेष रूप से" पकड़ना होगा, विशेष रूप से इनलाइन ऑब्जेक्ट बनाने की क्षमता ताकि सब कुछ उन्मुख हो, फूला न हो, और मुझे लगता है कि कास्ट। डेलिगेट्स एक नई सुविधा है जिसे उन्होंने बनाया है, ऐसा नहीं है कि उन्हें लाइब्रेरी डेटा संरचना के रूप में नहीं बनाया जा सकता है। मैं कहूंगा कि उन दोनों को C ++ के साथ पकड़ना होगा!
डोव

@Philippe, अपने काउंटर उदाहरण पर पकड़ में नहीं आता। वह आसानी से कह सकता है "जावा के साथ C # कब पकड़ेंगे?"। उनकी बात अब भी कायम है कि जावा के पीछे C # होने का कोई वस्तुनिष्ठ कारण नहीं है; यह सब व्यक्तिगत पसंद है।
जॉन्सकेब

कोई भी प्रतिकृति के बारे में बात नहीं कर रहा है, लेकिन सी # में कुछ आवश्यक विशेषताएं हैं जो कि जावा अब लागू करने पर विचार कर रहा है (जैसे लैम्ब्डा, जो एक बदसूरत वस्तु कार्यान्वयन के साथ अनुकरण किया जाता है)।
यूरीअल्बुकर्क

4

यह सवाल कि क्या सी # या जावा बहस के लिए आगे है, लेकिन एक या दूसरे की भाषा सुविधाओं पर ध्यान केंद्रित करने के बजाय मैं इस बात पर ध्यान केंद्रित करूंगा कि किसी भाषा को विकसित करने में क्या शामिल है । एक तथ्य यह है कि मुझे नहीं लगता कि कोई भी इसके साथ बहस करेगा: जावा सी # से पुराना है।

भाषा कैसे काम करती है, इसे बदलने में समस्याएं:

  1. यदि आप पीछे की संगतता को तोड़ते हैं तो आप बहुत सारे डेवलपर्स को पेशाब करते हैं
  2. यदि आप अपने डेवलपर्स को पेशाब करते हैं, तो वे दूसरी भाषा की ओर बढ़ते हैं जो उनका बेहतर समर्थन करता है। इसलिए, भाषा के साथ काम करने का कोई कारण नहीं है।
  3. जावा ने भाषा को बाजार में लाने के दबाव के साथ कुछ डिजाइन निर्णय जल्दी किए। उम्मीद थी कि वापस जाऊंगा और कुछ खाली स्थानों को भर दूंगा। वे निर्णय अभी भी भाषा को प्लेग करते हैं क्योंकि अनुचर पहले बिंदु का उल्लंघन नहीं करना चाहते हैं।
  4. जावा ने बहुत सारे नए क्षेत्रों को उड़ा दिया, और एक बार और सभी के लिए साबित कर दिया कि एक कचरा एकत्र की गई भाषा को गंभीरता से लिया जा सकता है - और अधिकांश लोगों के लिए पर्याप्त रूप से अच्छा प्रदर्शन करता है।
  5. C # बाद में आया और बहुत सारे सबक सीखे जो जावा में ठोकर खाए - इसलिए वे कुछ तकनीकी सीमाओं से बचने में सक्षम थे जो कि जावा के बिंदु 3 के कारण है।
  6. नई भाषा सुविधाओं को एक वास्तविक समस्या को समझदारी से हल करना होगा। प्रत्येक भाषा सुविधा उस भाषा के संदर्भ में समझ में नहीं आती है जिसे आप इसे जोड़ने की कोशिश कर रहे हैं। यही कारण है कि, उनकी समानता के बावजूद, जावा और सी # अलग-अलग भाषाएं बनी रहेंगी।

तो, क्या C # में जावा की तुलना में अधिक भाषा विशेषताएँ हैं? मुझे ऐसा लगता है। क्या वे उपयोगी हैं? मुझे ऐसा लगता है। इसका मतलब यह है कि सी # जावा की तुलना में बेहतर या अधिक परिपक्व है? कि मैं इससे असहमत हूं। वे अलग, सादे और सरल हैं। Java में कभी भी C # के सभी फीचर्स नहीं होंगे क्योंकि C # में Java के सभी फीचर्स कभी नहीं होंगे।

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


यह क्यों मायने रखता है कि मोनो एमएस द्वारा नहीं चलाया जाता है? मोनो वास्तव में अच्छी तरह से काम करता है। इसे कम मत समझना।
कुगेल

यह मोनो पर खुदाई नहीं है, लेकिन सभी .NET एपीआई सीधे समर्थित नहीं हैं। जब वे हेडवे बना रहे हैं, और काफी लंबा रास्ता तय कर चुके हैं, तो सीमाएँ हैं - विशेष रूप से डेस्कटॉप अनुप्रयोगों में। यकीन नहीं होता कि मोनो कितना करीब आया है या अगर यह कानूनी तौर पर विनफॉर्म या डब्ल्यूपीएफ को लागू करने के लिए आ सकता है। हालांकि, कड़ाई से सर्वर साइड काम के लिए, मुझे पूरा यकीन है कि यह संगत है। हाल ही में इस पर ध्यान नहीं दिया गया।
बेरिन लोरिट्स्क

मुझे लगता है कि "विंडोज पर एक प्रोग्राम लिखने और यूनिक्स या मैक पर इसे तैनात करने की क्षमता, माइक्रोसॉफ्ट के समर्थन से कभी भी सीधे नहीं होगी" को अब अस्वीकृत कर दिया गया है
जोएलफैन

जिस समय मैंने उत्तर लिखा, यह नहीं था। तो C # में Microsoft ने रनटाइम और लाइब्रेरीज़ लिखी हैं जो मैक और यूनिक्स पर काम करते हैं? मोनो सीधे Microsoft से नहीं है, भले ही उस पर कुछ Microsoft डेवलपर्स काम कर रहे हों। मुझे अभी भी लिनक्स के लिए काम करने वाले WPF पर निर्मित एक डेस्कटॉप ऐप के बारे में संदेह है। सर्वर साइड केवल ओके हो सकता है।
बेरिन लोरिट्श

1

जावा को वास्तव में C या C ++ की तुलना में नए "फीचर्स" की आवश्यकता नहीं है। यह वस्तु उन्मुख विकास के लिए एक अच्छी तरह से डिजाइन की गई भाषा है। जो अतिरिक्त कार्य किए जा सकते हैं, वे विभिन्न प्रकार के कार्यों के लिए पुस्तकालय बनाने में हैं। C # के लिए समान है - भाषा को और अधिक बनाने के लिए अधिकांश सुविधाएँ जोड़ी जा रही हैं। व्यक्तिगत रूप से मुझे लगता है कि उन विशेषताओं में से अधिकांश आवश्यक नहीं हैं - जब तक कि आप हार्डवेयर स्तर पर काम नहीं कर रहे हैं (जब तक कि सी की तरह कुछ का उपयोग करना बेहतर होता है) तो OO में पॉइंटर्स वास्तव में बहुत अधिक फ़ुल होते हैं। इसके अलावा, वीएम में रनिंग को सीधे हार्डवेयर तक पहुंच बनाने के लिए माना जाता है, यदि असंभव नहीं है।

यूनिक्स ने मॉड्यूल बनाने की प्रवृत्ति शुरू की जो एक काम बहुत अच्छी तरह से करते हैं। मुझे लगता है कि Java और C # दोनों ही फीचर क्रीप पर थोड़ा बहुत हाथ से निकल रहे हैं। एक विशाल बहुउद्देशीय "भाषा" की तुलना में आसानी से एक्स्टेंसिबल कोर बनाने के लिए बेहतर है जो एक रूपरेखा की तरह है। करने के लिए मुझे , जावा इस आवश्यकता की तुलना में सी # बेहतर फिट बैठता है।


7
उचित लंबोदर के बिना भाषा एक प्रयोग करने योग्य भाषा नहीं है। यदि वह एक विशेषता जावा में जोड़ी जाती है, तो मैं आपके बाकी तर्कों से सहमत हूँ। इसके बिना, जावा बिल्कुल भी एक्स्टेंसिबल नहीं है, यह मुश्किल से उपयोग करने योग्य है।
एसके-लॉजिक

2
व्यक्तिगत रूप से @Craige (राय) मैं sytactical सुविधाओं की तरह नहीं है। मैं चाहता हूं कि भाषा मेरे रास्ते से हटे- बहुत कम हो।
माइकल के

1
@ मिचेल - मैं आत्मकेंद्रित विशेषताओं वाली भाषा और आपके रास्ते में आने वाली भाषा के बीच संबंध बनाने में विफल हूं। सिर्फ इसलिए कि किसी भाषा ने विशेषताएं बताई हैं, इसका मतलब यह नहीं है कि आपको उनका उपयोग करना होगा। उदाहरण के लिए C # के गेट्टर और सेटर विधियाँ लें। 90% समय, यह आपको निरर्थक कोड की सैकड़ों लाइनें लिखने से बचाएगा। यदि आप चाहें तो आप अभी भी अपना खुद का लिख ​​सकते हैं।
क्रेग

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

1
@ एसके, मुझे समझ नहीं आता कि आप यह कैसे कह सकते हैं कि लैम्ब्डा के साथ एक भाषा अनुपयोगी है। C में लैम्ब्डा नहीं है, और C ++ उन्हें C ++ 0x में मिलता है और लोग दशकों से इन भाषाओं का उपयोग कर रहे हैं। सिर्फ इसलिए कि आप कार्यात्मक प्रोग्रामिंग पसंद करते हैं जो अपूर्ण प्रोग्रामिंग को अमान्य नहीं करता है।
jonescb

1

सी # को जोड़ने वाली कई विशेषताओं में कुछ भी गलत नहीं है, लेकिन जिस दर से वे भाषा बदल रहे हैं, उसे देखते हुए, वे जानबूझकर मुश्किल बना रहे हैं यदि मोनो को बनाए रखना असंभव नहीं है। यदि हां, तो मैं कहता हूं कि हम सिस्टम की श्रेणी के अनुसार जावा को पकड़ने के लिए C # का इंतजार कर रहे हैं। यह केवल विंडोज पर चलने के लिए पर्याप्त नहीं है।


0

मैं एक चर्चा मंच शुरू नहीं करने जा रहा हूं, लेकिन मुझे लगता है कि जावा यहां C # से बहुत पहले था और उस मामले के लिए C # एक प्रतिकृति की तरह अधिक लगता है फिर जावा।

अपने प्रश्न को अनसुना करने के लिए: जावा और सी # अलग-अलग भाषाएं हैं इसलिए आप केवल उनकी विशेषताओं से उनकी तुलना नहीं कर सकते। आप जावा में क्या कर सकते हैं आप सी # और वाइका वर्सा में नहीं कर सकते हैं।

तो अंत में यह एक विंडोज बनाम लिनक्स विषय शुरू करने जैसा है।

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