जावा बनाम सी # - उत्पादकता परिप्रेक्ष्य [बंद]


34

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

क्या आप हमें जावा और C # /। NET के बीच सॉफ्टवेयर विकास उत्पादकता अंतर का संकेत दे पाएंगे? मैं इस प्रकार एक उत्तर प्राप्त करना पसंद करूंगा:

मेरा अनुभव X साल के अनुभव पर आधारित है जो जावा के साथ काम कर रहा है और X साल का अनुभव C # /। NET के साथ काम कर रहा है। यदि आप निम्नलिखित को ध्यान में रखते हैं, तो जावा, X% अधिक उत्पादक है तो C # .NET या C # /। NET, जावा की तुलना में X% अधिक उत्पादक है।


24
मुझे लगता है कि यहां एक महत्वपूर्ण बात यह है कि आप क्या कर रहे हैं। .NET कुछ प्रकार की परियोजनाओं के लिए बेहतर हो सकता है, और अन्य के लिए जावा।
åyvind Knobloch-Bråthen

4
यह किस तरह का प्रोजेक्ट है? आप जो करने की कोशिश कर रहे हैं, उसके लिए उपलब्ध पुस्तकालयों पर बहुत कुछ निर्भर करता है। भाषा वार मैं दृढ़ता से सी # पसंद करता हूं, लेकिन मैं यह दावा नहीं कर रहा हूं कि सभी प्रकार की परियोजनाओं के लिए .net जावा से बेहतर है।
कोडइन्चोज

7
IMO एक बहुत ही महत्वपूर्ण रणनीतिक निर्णय है और यह बिल्कुल भी प्रोग्रामर उत्पादकता पर आधारित नहीं होना चाहिए। यदि आप एक पूरी तरह से अत्याधुनिक विंडोज GUI चाहते हैं, तो आप जावा का चयन नहीं कर सकते, भले ही आंकड़े दावा करें कि यह 7% अधिक उत्पादक था। यदि आपको मोनो के साथ आने वाले प्रतिबंधों के बिना एक सच्चे क्रॉस-प्लैटफॉर्म उत्पाद की आवश्यकता है, तो जावा आपका बच्चा है, भले ही सी # में श्लेष सिंटैक्स हो।
user281377

2
@ एडिन: "एंटरप्राइज एप्लीकेशन" यह किस प्रकार का अनुप्रयोग है, इसका बहुत विवरण नहीं है ... क्या यह केवल डेस्कटॉप, क्लाइंट / सर्वर कॉन्फ़िगरेशन, वेब सेवाओं, वेब साइटों, मोबाइल उपकरणों पर संभावित उपग्रह अनुप्रयोगों आदि है?
खौफ

3
यह "जावा" नहीं "जावा" है
महमूद होसाम

जवाबों:


17

मेरा अनुभव जावा के साथ काम करने के 10 साल के अनुभव और सी # /। NET के साथ काम करने के 3 साल के अनुभव पर आधारित है। जावा C # .NET की तुलना में 0% अधिक उत्पादक है। यह बैक-एंड सर्विस-आधारित एप्लिकेशन लिखने पर आधारित है।
उपयोगकर्ता अनुप्रयोगों को लिखने के लिए जावा की तुलना में C # /। NET शायद 5% अधिक उत्पादक है। लेकिन तब मैंने जावा में लगभग 5 साल तक ऐसा नहीं किया है और नए नेटबियंस यूआई संपादक अंतराल को बंद कर सकते हैं।

आप उत्पादकता बढ़ाना चाहते हैं? CI (आदर्श रूप से सतत वितरण) और स्वचालित परीक्षण। किसी भी प्रमुख भाषा / मंच / आईडीई पर भाषा / मंच / आईडीई पसंद द्वारा प्राप्त उत्पादकता काफी कम है।


क्या आप जावा के लिए 0% कहने का मतलब है? क्या आपका मतलब बैक-एंड सेवा-आधारित अनुप्रयोगों या कुल मिलाकर जावा के लिए 0% अधिक उत्पादक है? बस जाँच रहा हूँ।
जॉन ऑनस्टॉट

यदि आप मुझसे बैक एंड एप्लिकेशन लिखने के लिए कहते हैं (कुछ नियम, डीबी एक्सेस और आपके पास क्या है) तो अनुमान सी # और जावा दोनों के लिए समान होगा। यदि आपने विंडोज़ एंड यूज़र एप्लिकेशन के लिए कहा है तो मैं जावा के लिए C # (WPF / XAML) और इसके सपोर्ट MVVM के लिए बाइंडिंग के माध्यम से मेरा अनुमान थोड़ा बड़ा कर दूंगा, मुझे लगता है कि जावा में अधिक मैनुअल बाइंडिंग और UI बिल्डिंग की तुलना में थोड़ा अधिक उत्पादक है। 5 साल पहले))।
15

+1 के लिए "किसी भी प्रमुख भाषा / मंच / आईडीई पर भाषा / मंच / आईडीई पसंद द्वारा प्राप्त उत्पादकता काफी छोटी है।"
एडम जास्किविकेज़

3
-1 अंतिम वाक्य के लिए। प्रत्येक (वास्तविक दुनिया) समस्या वर्ग के लिए, आप दो सामान्य उद्देश्य उच्च स्तर की भाषाएं चुन सकते हैं, जहां उत्पादकता में वृद्धि एक से दूसरे में 100% से अधिक हो। यदि आप C # और Java के बीच चयन करते हैं, तो आपको थोड़ा अंतर मिलेगा (हालाँकि मैं तर्क दूंगा कि C # कार्यात्मक प्रोग्रामिंग के लिए उपयुक्त क्षेत्रों में काफी अधिक उत्पादक साबित होगा)। यदि चुनाव C और OCaml के बीच है, तो अंतर आप पर आ जाता है।
back2dos

42

मैंने अब 5 साल के लिए जावा और सी # का उपयोग करके कॉलेज और रियल वर्ल्ड ™ दोनों में परियोजनाओं पर काम किया है।

हाथ नीचे मैं सी # का उपयोग करने का आनंद क्योंकि यह रसीला और वाक्यविन्यास चीनी का उपयोग है। आपको Factory.GetFactory(OfFactory.GetFactory(Factory));C # में शायद ही कोई कोड मिलेगा । सिंटैक्स छोटा और अधिक रसीला होने के कारण इसे पढ़ना और अनुसरण करना आसान है।

आप किसके साथ अधिक उत्पादक होंगे? यह परियोजना के प्रकार पर निर्भर करता है।

क्या आप विंडोज के लिए डेस्कटॉप एप्लिकेशन डिजाइन कर रहे हैं? तब C # सबसे अच्छा विकल्प है क्योंकि यह शक्तिशाली IDE विज़ुअल स्टूडियो है और .NET फ्रेमवर्क GUI को बहुत सरल बनाता है।

सच कहूँ तो, मुझे खुशी है कि मैं अब जावा का उपयोग नहीं करता (अब एक साल से अधिक समय हो गया है) क्योंकि मुझे याद है कि कोड कितना भयानक था। एक त्वरित उदाहरण अपवाद हैंडलिंग है। यदि आपका कोड एक अपवाद फेंक सकता है तो आपको हर एक अपवाद के लिए संभव होना चाहिए । यह जल्दी से तुच्छ कोड को 20 लाइन + राक्षसीता में बदल देता है।

C # हाथ पकड़ने के रूप में नहीं है, यदि आप अपना कोड खुला छोड़ना चाहते हैं, तो यह निर्णय लेने के लिए एक डेवलपर के रूप में आप पर है।

सी # ने भी साल भर में बहुत सारे अतिरिक्त किए हैं जो इसे उपयोग करने के लिए एक खुशी बनाते हैं। लैम्ब्डा, डेलीगेट्स, अनाम फ़ंक्शन (एक ला रूबी), बहुत सी छोटी छोटी चीजें जो आपको मिलेंगी।


3
मुझे याद है कि जावा में यूनी से, एक बिंदु इम भूलकर खुशी हुई। मजबूरन अपवाद संभालना। हाँ, इसका एक उद्देश्य था, लेकिन कोड प्रलेखन आपको बता सकता है कि क्या विधियाँ अपवादों को फेंकती हैं और यह आपको क्या करने का विकल्प देता है।
जॉनविल्स

5
हाहा, मैं एक जावा प्रोग्रामर हूँ, लेकिन मुझे आपका उदाहरण कोड पसंद आया।
चक स्टेफंस्की

6
If your code can throw an exception you must account for every single exception possible.मैं इसका नकारात्मक पक्ष नहीं देखता, कम से कम यह समस्याओं के बारे में जागरूकता बढ़ाता है ... हालांकि, बस मुझे हो सकता है।
बॉबी

4
चेक किए गए अपवादों का मतलब है कि आप त्रुटि कार्यान्वयन कोड को मुख्य कार्यान्वयन के हिस्से के रूप में लिखते हैं, बजाय इसके कि इसे बाद में बोले। यह काफी रखरखाव का मतलब है।

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

23

मैंने जावा (1996 से) और .Net (2002 से) दोनों के साथ बड़े पैमाने पर काम किया है और 2010 में अपनी कंपनी में जावा के साथ इस आधार पर जाने का निर्णय किया कि यह कुल मिलाकर सबसे अधिक उत्पादक वातावरण होगा

ध्यान दें कि मैं एंड-टू-एंड आधार पर लागत / संसाधन की प्रति यूनिट बनाई गई व्यावसायिक मूल्य के संदर्भ में सॉफ़्टवेयर डेवलपमेंट उत्पादकता को परिभाषित करता हूं (यानी आपको केवल तैनाती और रखरखाव सहित पूरे सॉफ़्टवेयर जीवनचक्र की उत्पादकता को देखना होगा, न कि केवल प्रारंभिक कोडिंग !!)।

यहाँ मेरे तर्क के प्रमुख तत्व हैं:

  • सिंटेक्स उत्पादकता में एक मामूली कारक है - जबकि जावा निश्चित रूप से क्रिया है और मैं सी # का सिंटैक्स पसंद करता हूं, यह बस ज्यादा मायने नहीं रखता है। चाहे आपके डेवलपर्स object.getSomeProperty()बनाम object.SomePropertyएक अनाम आंतरिक वर्ग का उपयोग करें या बनाम एक लंबोदर का उपयोग करें, बस आपकी कंपनी की प्रतिस्पर्धी कंपनियों के लिए कोई सराहनीय अंतर नहीं होगा।
  • पुस्तकालय पारिस्थितिकी तंत्र महत्वपूर्ण है - एक आधुनिक सॉफ्टवेयर उत्पाद विकसित करना, आप खरोंच से बहुत सारे सामान्य घटकों को विकसित नहीं करना चाहते हैं। जावा इकोसिस्टम के पास ओपन सोर्स लाइब्रेरीज़ की संख्या और गुणवत्ता (विशेषकर अपाचे, गूगल, एक्लिप्स फाउंडेशन और रेडहैट / जेबॉस द्वारा विकसित) के संदर्भ में स्पष्ट लाभ है।
  • पोर्टेबिलिटी / तैनाती लचीलापन - मुझे पता है कि मैं एक जेवीएम को किसी भी मंच पर तैनात कर सकता हूं, जिसमें बड़े सस्ते लिनक्स क्लस्टर भी शामिल हैं। .Net के साथ, आप विंडोज वातावरण के लिए प्रतिबंधित हैं। क्लाउड होस्टिंग विकल्पों में प्रगति के साथ, मैंने इसे एक बहुत महत्वपूर्ण लाभ माना।
  • यदि आप उन्नत भाषा सुविधाएँ चाहते हैं, तो JVM पर स्केला और क्लोजर दोनों व्यवहार्य विकल्प हैं। यह जावा में विकसित करने के लिए एक यथार्थवादी विकल्प है, लेकिन समय के साथ स्काला या क्लोजर में जाने का विकल्प खुला रखें। कुछ हद तक ये "अगली पीढ़ी" की भाषाएं हैं जो मुझे लगता है कि जावा और सी # दोनों से आगे हैं, इसलिए इसने मुझे आश्वस्त किया कि जावा मंच भाषा नवाचार के मामले में एक अच्छा भविष्य है। (जावा 7 और 8 होनहार लग रहे थे, लेकिन मैं बिल्कुल अपनी सांस नहीं ले रहा था ....)
  • वास्तव में रखरखाव की लागत जावा के प्रति काफी अनुकूल प्रतीत होती है। जावा में C # की तुलना में एक सरल वाक्यविन्यास है जिसका अर्थ अधिक क्रियात्मकता है लेकिन फ़्लिपसाइड का अर्थ है कि लोग अधिक अनुरक्षण कोड लिखना चाहते हैं - "चतुर कोड" लिखना केवल कठिन है। इसके अलावा, जावा दुनिया .Net दुनिया की तुलना में पीछे की संगतता पर अधिक भार डालती है, जो कई वर्षों से रखरखाव की लागत के मामले में लाभ देने वाला है।
  • विक्रेता स्वतंत्रता - अतीत में वेंडर लॉक-इन द्वारा जलाई जा रही कंपनियों को देखकर, मुझे लगा कि यह Microsoft-प्रभुत्व .नेट की दुनिया के बजाय अपेक्षाकृत अधिक खुले जावा पारिस्थितिकी तंत्र के साथ जाने का एक फायदा था। उदाहरण के लिए, मेरे पास SQL ​​सर्वर का उपयोग करने में धकेलने के बजाय डेटाबेस का विकल्प होगा (और पुश .net डेवलपर्स के टूल सपोर्ट और विशिष्ट कौशल दोनों के माध्यम से काफी मजबूत है)। अपने मूल उत्पाद निवेश विक्रेता को स्वतंत्र रखना, मेरे विचार में एक स्मार्ट दीर्घकालिक कदम है। मैंने न्याय किया (सही रूप में यह पता चला है) कि OpenJDK जावा का भविष्य होगा इसलिए मैं प्रभावी रूप से एक खुले मंच के मंच पर निर्माण करूंगा।
  • प्रतिभा - यह निश्चित रूप से व्यक्तिपरक है, लेकिन मैं .Net दुनिया की तुलना में जावा दुनिया में डेवलपर्स की तकनीकी क्षमता से अधिक प्रभावित था। औसत पर मेरी धारणा यह थी कि .net डेवलपर्स में माइक्रोसॉफ्ट के लिए आसान टूल या टेम्पलेट जो भी प्रदान करने की प्रवृत्ति थी, जबकि जावा डेवलपर्स एक सॉफ्टवेयर इंजीनियरिंग के दृष्टिकोण से सही समाधान खोजने के बारे में अधिक ध्यान रखते थे। यह पूरी तरह से व्यक्तिपरक है और इसमें कोई संदेह नहीं है कि यह विशिष्ट इलाके / बाजार पर निर्भर है और स्पष्ट रूप से कई व्यक्ति थे जो इस पैटर्न के लिए फिट नहीं थे, इसलिए निश्चित रूप से वाईएमएमवी।
  • उपकरण स्तर के बारे में थे। Microsoft के पास बहुत सारे शानदार, आसान उपकरण हैं जो विशेष रूप से विंडोज पर विकसित करने के लिए आकर्षक होंगे। हालाँकि, मैं मुख्य रूप से सर्वर-साइड विकास पर काम कर रहा हूं, जहां मैं तर्क दूंगा कि जावा टूल्स में बढ़त है। विशेष रूप से, मावेन जावा पारिस्थितिकी तंत्र में एक बहुत शक्तिशाली उपकरण साबित हुआ है जो मुझे अभी भी नहीं लगता है कि .Net दुनिया में एक समान समकक्ष है।

इसलिए जब बहुत सारे जटिल विचार थे, कुल मिलाकर मैं जावा के साथ जाने के विकल्प से बहुत खुश हूँ, और आज भी यही विकल्प बनाऊँगा (2012 की शुरुआत में)।

शायद एकमात्र मामला अब मैं कहाँ जाऊंगा। नेट के साथ होगा यदि मैं एक विंडोज़-केवल डेस्कटॉप एप्लिकेशन (जहां। नेट लाभ स्पष्ट रूप से बहुत बड़ा है) विकसित कर रहा था।


9
+1: शानदार जवाब! यह कई मुद्दों को संक्षेप में प्रस्तुत करता है, जिन पर समग्र रूप से उत्पादकता का मूल्यांकन करते समय विचार किया जाना चाहिए। कुछ वाक्यात्मक चीनी एक भाषा को शांत और अधिक "आधुनिक" दिखा सकती है लेकिन उत्पादकता को प्रभावित करने वाले अन्य महत्वपूर्ण कारक भी हैं।
जियोर्जियो

3
पिछले वाले की तुलना में अधिक व्यापक उत्तर के लिए +1।
NlightNFotis

1
चूंकि आपने स्काला और क्लोजर का उल्लेख किया है, इसलिए आप एफ # का भी उल्लेख कर सकते हैं ...
मौरिसियो शेफ़र

2
महान! विस्तृत विश्लेषण। मुझे इसकी ही खोज थी। :)
xebo

9

मेरे पास है: जावा 10 साल, सी # 8 साल

मैं जावा के लिए वोट देता हूं

  1. में कोई वेंडर लॉक नहीं है (आप लिनक्स से विंडोज़ पर ऐप / वेब सर्वर को यूनिक्स में बदल सकते हैं)
  2. तीसरे पक्ष के पैकेजों की इंटरऑपरेबिलिटी / विनिमेय, जैसे जैस्पररपोर्ट्स JFreeChart, JSF या स्प्रिंग
  3. अधिकांश नवाचार यहाँ से आते हैं (Log4j, Ant, Spring, Hibernate, and on and on)
  4. एकाधिक एप्लिकेशन सर्वर (A की तरह) पर काम करता है। जैसे JBoss, Tomcat, WebSphere, GlassFish, WebLogic

23
बिना लैम्बदास वाली भाषा में "नवाचार" किस तरह का हो सकता है?
एसके-तर्क

6
ASP MVC से पहले अन्य MVC फ्रेमवर्क थे (जैसे MonoRail) ...
EricSiplefer

2
ओह बीटीडब्ल्यू: लैम्ब्डा / क्लोजर एक भाषा विशेषता है, आप फ्रेमवर्क के बारे में बात कर रहे हैं।
एरिकशोफर

5
@ एसके-तर्क, आपको ओ / आर परत लिखने के लिए लैम्ब्डा की आवश्यकता नहीं है।

2
@ जिओर्जियो, लैम्ब्डास जीसी के साथ पूरी तरह से किसी भी भाषा में फिट होते हैं। सी ++ और सी में उनके लिए कोई जगह नहीं है, ज़ाहिर है।
एसके-तर्क

6

जावा: 5 वर्ष (निरंतर)
C #: 7 वर्ष

मुझे विश्वास नहीं है कि आप उस तरह से उत्पादकता को निर्धारित कर सकते हैं। यह व्यक्तिगत डेवलपर और परियोजना पर बहुत अधिक निर्भर करता है। जो आपके डेवलपर्स को पता है उसका उपयोग करें।

संपादित करें:
के रूप में परिभाषित "विशिष्ट उद्यम आवेदन":

  • बहु तीतर
  • क्लाइंट सर्वर
  • DB समर्थित

Java और C # दोनों ऐसा कर सकते हैं। यह भाषा की बहुत बात नहीं है, बल्कि फ्रेमवर्क / रनटाइम की है। फिर से, अपने डेवलपर्स के बारे में जानें। वे एक नई भाषा और एक नया ढाँचा सीख सकते हैं, लेकिन इसे टटोलने में समय लगता है। एक डेस्कटॉप ऐप के लिए सही होगा। दोनों भाषाओं का उपयोग कई GUI टूलकिट / लिबास के साथ किया जा सकता है, लेकिन यह सभी के पास अलग-अलग दृष्टिकोण और दर्शन हैं।


3
"यह काफी हद तक व्यक्तिगत डेवलपर पर निर्भर करता है" ... यही कारण है कि वह उन लोगों से एक राय चाहता था जिनके पास दोनों दुनिया में अनुभव है ... "और परियोजना।" ... जिसे एक उत्तर की आवश्यकता होनी चाहिए जो बताता है कि विभिन्न तकनीकों से किस तरह की परियोजनाओं को लाभ होगा।
विस्मय होता है

4
यह इस देव (उर्फ मुझे) पर निर्भर नहीं करता है, लेकिन उन भक्तों पर जो परियोजना का निर्माण करने वाले हैं। यह भी आसान होगा अगर उसने कहा था कि वह किस तरह की परियोजना का निर्माण करने वाला है ...
एरिकसोफर

@eric यह विशिष्ट उद्यम अनुप्रयोग है
एडिन डैज़ारेविक

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

5
निश्चित रूप से एक "विशिष्ट उद्यम अनुप्रयोग" है, इस डेटा को बिंदु ए से लें, उपयोगकर्ता को इसे गड़बड़ करने की अनुमति दें, फिर इसे बिंदु बी में डालें। ;)
मेज़मो

6

मेरे पास जावा के साथ 10+ साल का अनुभव है (संस्करण 1.1 से, वास्तव में!) और .NET (सी # ज्यादातर) के साथ 7 साल का अनुभव है।

आपके पास निर्णय लेने के लिए एक बहुत कुछ है, लेकिन ज्यादातर आपको कुछ परिदृश्यों में टूटने की कोशिश करनी चाहिए:

डेस्कटॉप अनुप्रयोग

यदि आप एक डेस्कटॉप एप्लिकेशन विकसित कर रहे हैं, तो आपको उस प्रमुख प्लेटफ़ॉर्म के साथ जाना होगा, जिसके साथ आप काम करेंगे। यदि यह एक Microsoft प्लेटफ़ॉर्म उपयोग .NET है, तो माँ के जहाज द्वारा विकसित प्लेटफ़ॉर्म से बेहतर कोई समाधान नहीं है। यदि यह लिनक्स या मल्टी-प्लेटफ़ॉर्म परिदृश्य है तो जावा पर विचार करें या वेब आधारित समाधान पर जाएं।

वेब आधारित अनुप्रयोग

यह एक बहुत कठिन निर्णय है क्योंकि प्रत्येक की अपनी ताकत और कमजोरी है। यहाँ कुछ है:

सी#

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

कमजोरी: एंटरप्राइज़ एप्लिकेशन के लिए .NET जावा की तरह परिपक्व नहीं है। आपके पास .NET के रूप में एंटरप्राइज़ सॉफ़्टवेयर बनाने वाले कई विक्रेता नहीं हैं, जैसा कि आपके पास जावा के लिए है।

जावा

शक्ति: अधिक परिपक्व (पहले से समझाया गया है) और कई बड़े खुले स्रोत परियोजनाओं के साथ एक बड़ा समुदाय है जो मदद कर सकता है। कई .NET तथाकथित ओपन सोर्स प्रोजेक्ट्स वास्तव में जावा से प्रोजेक्ट्स की कॉपी-कैट हैं।

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

सर्वर साइड अनुप्रयोग

यह मूल रूप से वेब आधारित अनुप्रयोगों के समान तर्क है लेकिन क्योंकि आपको इस मामले में UI जावा को मजबूत होने के बारे में बहुत अधिक चिंता करने की आवश्यकता नहीं है। लेकिन फिर से, यदि प्लेटफ़ॉर्म ज्यादातर Windows .NET है तो बेहतर विकल्प हो सकता है।

कुल मिलाकर विचार

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

मुझे लगता है कि यह भी एक अच्छी बात है कि Microsoft पहले से कहीं ज्यादा मजबूत है। .NET थोड़ी देर के लिए होगा। तो जब 10-15 साल आगे देख रहा हूं तो मुझे लगता है कि मैं जावा की तुलना में .NET के साथ अधिक सुरक्षित महसूस करता हूं।


4

मैं विश्वविद्यालय से हाल ही में स्नातक किया गया छात्र हूं, लेकिन दोनों भाषाओं के साथ व्यावसायिक अनुभव रहा है, कुल मिलाकर लगभग 3 साल जावा और 4 साल C # .Net (नोट .net का मतलब है कि आप C #, VB.net, C ++ CLI का उपयोग कर सकते हैं। और जे # और एफ #)।

अब मैं बताता हूं कि मेरी समग्र पसंद जावा पर C # है, जबकि दोनों में समान सिंटैक्स है। मैं जावा की क्रॉस ओएस संगतता पर .Net फ्रेमवर्क की शक्ति पसंद करता हूं। आपको दृढ़ता से विचार करना चाहिए कि आपको क्या बनाने की आवश्यकता है? क्या यह सिर्फ एक डेस्कटॉप एप्लिकेशन है? क्या आपको अन्य क्लाइंट्स से संपर्क करने की आवश्यकता है, इसलिए अन्य डेस्कटॉप, मोबाइल, वेबसाइट?

** Stackoverflow में प्रश्न के रूप में खो IDE पर चर्चा बंद कर दिया गया था। इसके अंत में यह बताया गया था कि जावा के पास कई मुफ्त आईडीई हैं, लेकिन वे मेरी राय की तुलना नहीं करते हैं और दृश्य स्टूडियो की शक्ति और addons के लिए। लेकिन ध्यान दें कि दृश्य स्टूडियो की लागत प्रति लाइसेंस से अधिक है।

आपको यह देखने की जरूरत है कि आपकी विकास टीम के पास क्या कौशल है, क्योंकि इसका प्रारंभिक प्रभाव पड़ेगा। जो तेज है वह यहां है और न ही भाषा / ढांचे में एक अनुभवी उपयोगकर्ता दिया गया है। जो मुझे लगता है कि इस बिंदु को लाता है कि आपको भाषा पर विचार नहीं करना चाहिए, क्योंकि भाषा सिर्फ वाक्यविन्यास है, लेकिन उपकरण और रूपरेखा जो भाषा का उपयोग कर रही है।


11
VS के लिए £ 1000 प्रति लाइसेंस? यदि आपको MSDN सदस्यता मिल रही है, तो आपको लागत के लिए अधिक सॉफ़्टवेयर और उपकरण उपलब्ध हैं। मुझे वास्तव में संदेह है कि कोई भी VS2010 के खुदरा शेल्फ मूल्य का भुगतान करता है।
जेम्स लव

6
@ मीकल, मैंने वीएस एक्सटेंशन को कुश्ती करने की कभी कोशिश नहीं की है। हालाँकि मैं विज़ुअल स्टूडियो के लिए कई तरह के प्लगइन्स का उपयोग करता हूँ या करने की कोशिश करता हूँ। इनमें Resharper, CodeRush, Gallio, VisualSVN, AnkhSVN, testDriven.Net और कई अन्य शामिल हैं।
जॉनवेल

2
@JonWillis ने सहमति व्यक्त की, वहाँ विस्तार के ढेर सारे हैं। उस सूची के शीर्ष पर, मैं भी (दैनिक आधार पर) उत्पादकता पावर उपकरण, CKS: Dev for SharePoint और WSPBuilder का उपयोग करता हूं। गैलरी ( Visualstudiogallery.msdn.microsoft.com पर ) के पास वहां पर कुछ हज़ार हैं, इसलिए यह नहीं हो सकता कि वीएस के लिए अधिक एक्सटेंशन लिखना मुश्किल हो (ऐसा करने के लिए पूर्ण रूपरेखा वास्तव में प्रदान की गई है, और पर्याप्त समुदाय समर्थन है) ।
जेम्स लव

1
10-15 आदमी वर्षों के काम की योजना के लिए, वीएस लाइसेंस के लिए एक प्रारंभिक लागत मूंगफली है।
खौफ

1
MSDN के बिना Visual Studio 2010 Professional $ 550 है।
बोरिस यांकोव

3

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

  1. परियोजना की आवश्यकताएं क्या हैं और कौन सी भाषा क्षमताएं उन आवश्यकताओं को पूरा करती हैं (जैसे क्रॉस प्लेटफॉर्म बनाम समृद्ध विंडोज क्लाइंट)।
  2. मैं एक परियोजना दृष्टिकोण / कार्यप्रणाली के रूप में क्या कर सकता हूं जो मेरी टीम को उत्पादक रूप से काम करने में सक्षम करने जा रही है।
  3. मैं यह सुनिश्चित करने के लिए काम के माहौल के बारे में क्या कर सकता हूं कि मैं एक महत्वपूर्ण परियोजना के लिए संभव सबसे अच्छी टीम का उपयोग, रखरखाव और पूरी तरह से उपयोग कर सकता हूं।

मैं सुझाव दूंगा कि, मेरी राय में, सवाल के पीछे का आधार यह है कि, "(C # और Java) के बीच उत्पादकता अंतर आवश्यक निवेश को प्रभावित कर सकता है और समय-समय पर बाजार में" सही नहीं है। मुझे संदेह नहीं है कि कुछ अंतर होगा लेकिन यह महत्वपूर्ण नहीं होगा।


3

मैं जावा और .NET के बीच आगे और पीछे फ़्लिप कर चुका हूं, जावा 1.2 से 1.6 तक, और .NET 1 से 4.0 तक, लगभग 10 वर्षों के पेशेवर काम के अनुभव (उससे पहले C / C ++ प्रोग्रामर होने के नाते) के साथ।

एक समय में, .NET 2.0 की तरह, मैं कहूंगा कि जावा और C # समान होंगे, खासकर बैक-एंड काम के लिए। भाषा के निर्माण अभी भी बहुत समान थे। .NET शायद डेस्कटॉप यूआई प्रोग्रामिंग में बढ़त हासिल कर लेता है, विजुअल स्टूडियो में WinForms डिजाइनर की वजह से, और जावा वेब / सर्वर सामान में बढ़त होगा, मुख्य रूप से क्योंकि आप IIS के साथ अटक नहीं थे।

अब .NET 3.5 और 4 में जा रहा हूं, मैं .NET को, हैंड्स-डाउन को उत्पादकता बढ़त देता हूं। यह मुख्य रूप से मेरी राय में है, क्योंकि .NET एक बहुत तेजी से विकसित होने वाली भाषा है, क्योंकि MS JCP की राजनीति के माध्यम से बदलावों को आगे बढ़ाने के विरोध में भाषा के निर्णय अपेक्षाकृत जल्दी कर सकता है। बिग सुधार कर रहे हैं varकीवर्ड, Linq, एक्सटेंशन के तरीके, अशक्त-वालों ऑपरेटर की सम्पूर्णता ??, dynamicहै, और शायद एक बहुत अधिक महान सामान है कि वास्तव में बूस्ट उत्पादकता।

अब, यह कहा गया है कि, एक परियोजना के लिए "सबसे अधिक उत्पादक" भाषा लगभग हमेशा एक है जो सबसे डेवलपर्स सबसे आरामदायक और अनुभवी है। सीखने की अवस्था हमेशा सबसे बड़ा उत्पादकता हत्यारा है।


3

एक चीज जो मैंने देखी है, वह कई सी # है। नेट की दुकानों में "यहां आविष्कार नहीं किया गया है" रवैया है और सभी तीसरे पक्ष / खुले स्रोत पुस्तकालयों पर प्रतिबंध लगाते हैं जबकि कई जावा दुकानें खुले स्रोत पुस्तकालयों का उपयोग करने के लिए अधिक इच्छुक हैं। इसके अलावा जावा के लिए अधिक पुस्तकालय उपलब्ध हैं। यहां तक ​​कि अगर आप .NET जैसे NHibernate, NPOI, Spring.NET आदि में कुछ शांत तृतीय पक्ष पुस्तकालयों को देखते हैं, तो वे जावा पुस्तकालयों के बंदरगाह हैं और इसलिए उनके पीछे हैं। यह निश्चित रूप से ऐसा लगता है कि इनमें से कई नवाचार जावा में पहले आए थे और समय के बाद एक .NET पोर्ट बनाया गया था। एक पुस्तकालय के दृष्टिकोण से यह निश्चित रूप से लगता है कि जावा नई नवीन खोजों के संदर्भ में जीतता है।

फिर भी Microsoft कुछ आधिकारिक पुस्तकालयों जैसे ASP MVC, LINQ, आदि को बनाता है। लेकिन अक्सर एएसपी MVC के साथ जैसे स्ट्रट्स, स्प्रिंग MVC, आदि के लिए पहले से ही बाहर थे, जावा और Microsoft मॉडल व्यू कंट्रोलर वेब प्रतिमान में प्रवेश करने में देर कर रहे थे।

बेशक, इनमें से कई पुस्तकालय एक टन समय बचाते हैं और आपको अधिक उत्पादक बनाते हैं। कोर भाषा से कोर भाषा C # और Java अलग नहीं हैं और मेरे लिए यह कॉल करने के लिए बहुत करीब है। तीसरे पक्ष के पुस्तकालयों की सेना में फेंको और पैमाने निश्चित रूप से जावा की ओर झुकते हैं। अभी भी एक खुली दुकान के साथ उस झुकाव का एक बहुत बाहर संतुलन है। यह सिर्फ बहुत सारी .NET की दुकानों का है, यहाँ पर रवैये का आविष्कार नहीं किया है जबकि बहुत सारी जावा की दुकानें हैं जो भी काम करने के लिए लेती हैं ... यह उस कंपनी के भीतर भी सही है जहाँ मैं काम करता हूँ। .NET टीम को ज्यादा कुछ नहीं मिलता है (प्रबंधन के कारण) जबकि जावा टीम के पास कई स्वीकृत तृतीय पक्ष पुस्तकालय / उपयोगिताएँ हैं। .NET के साथ बहुत अधिक अच्छी चीजें मुफ्त नहीं हैं (उदाहरण के लिए NPOI से पहले यदि आप Microsoft ऑफिस दस्तावेज़ों के साथ काम करना चाहते थे, तो अधिकांश समाधान [ऑफिस ऑटोमेशन की गिनती नहीं करना] मुफ्त नहीं थे।


"यहां इसकी खोज नहीं हुई"। किस आधार पर? मैं सी # और जावा के बीच एक मिश्रण में काम करता हूं और मुझे जावा लोगों से अधिक गालियां लगती हैं, उदाहरण के लिए एक स्ट्रिंग बनाने के लिए एक IConverter बनाने और तर्क को लागू करने के लिए, और इसके विपरीत।
जॉर्ज सिल्वा

कई कारणों से मैं जावा पर सी # पसंद करता हूं, फिर भी, मैं मूल सी # पर "माइग्रेटेड" जावा टू सी # लाइब्रेरी पसंद करता हूं, आमतौर पर, वास्तविक दुनिया में बेहतर डिजाइन, परीक्षण और लागू किया जाता है।
umlcat

0

मैंने खुद से यह सवाल बहुत पूछा: कौन सा बेहतर है? सी # या जावा?

मैं आपको एक सलाह दूंगा और यह सलाह मेरे शोध का निष्कर्ष है: उनमें से कोई भी बेहतर नहीं है, केवल वह भाषा जिसे आप अच्छी तरह से जानते हैं और आप बहुत सारे आकर्षक अनुप्रयोग कर सकते हैं, सबसे अच्छा है।

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

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