2009-04-26 20 views
13

के बीच अंतर संभव लौ धागे के लिए अग्रिम में माफी, लेकिन यह नहीं है कि मैं क्या कर रहा हूं।जावा और सी # और .NET

मैंने सी और सी ++ का उपयोग करके लिनक्स में कभी भी गंभीर विकास किया है, और मैं विंडोज़ में डुबकी लेना चाहता हूं। मैं कुछ पढ़ रहा हूं और चारों ओर पूछ रहा हूं, और ऐसा लगता है कि सी # के साथ .NET विंडोज के लिए वाणिज्यिक उपयोगकर्ता उन्मुख व्यावसायिक अनुप्रयोगों के विकास के लिए जाने का तरीका है।

मेरे लिए एक बड़ा विचार डेस्कटॉप में उपयोगकर्ता इंटरफ़ेस का एकीकरण है, क्योंकि यह अंततः उपयोगकर्ता के साथ इंटरैक्ट करता है। जावा में Office 2007 GUI के रूप को फिर से बनाना संभव है, उदाहरण के लिए, या यह .NET के साथ ही संभव है?

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

संक्षेप में, जावा और सी # के बीच व्यापार बंद क्या हैं, मुख्य रूप से विंडोज के लिए वाणिज्यिक, उपयोगकर्ता उन्मुख व्यावसायिक अनुप्रयोगों का विकास करते समय?

+1

यहां कोई आग नहीं - यह एक पूरी तरह से वैध प्रश्न और एक महत्वपूर्ण विकल्प है। –

उत्तर

16

सबसे महत्वपूर्ण बात "मुख्य रूप से विंडोज के लिए लक्षित" में है।

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

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

तो मूल रूप से, "बंदरगाह करना चाहते हैं" पहलू को बहुत सावधानी से वजन दें - यह मेरे दृष्टिकोण से निर्णय में ड्राइविंग कारक है। एक बार जब आप बंदरगाह करने का फैसला कर लेते हैं, तो इससे कोई फर्क नहीं पड़ता कि आपके 9 0% ग्राहक विंडोज पर हैं - शेष 10% के लिए इसे अभी भी काम करने और अच्छी तरह से काम करने की आवश्यकता होगी।

+0

मोनो ओके में काम करने वाला कोड किसी भी प्लेटफॉर्म पर इस तरह से काम करता है। तो प्लेटफार्मों के साथ संगतता के बारे में आपका बयान गलत है। – Mash

+1

संगतता एक दो तरह का रिश्ता है। विंडोज सीएलआर के तहत काम कर रहे मोनो कोड केवल आवश्यकता का आधा है। ऐसी कई विशेषताएं हैं जो मोनो का समर्थन नहीं करती हैं और ऐसे में विंडोज़ पर लिखा गया नेट कोड है जो मोनो पर काम नहीं करता है। –

+0

.NET 2.0 बीसीएल 100% कुछ माइक्रोसॉफ्ट विंडोज विशिष्ट चीजों को छोड़कर मोनो द्वारा कवर किया गया। और .NET से मोनो में माइग्रेट करने के लिए http://mono-project.com/MoMA बहुत उपयोगी टूल है। ज्यादातर समय मोनो के तहत .NET ऐप्स चलाने के लिए बहुत कम प्रयास होता है। – Mash

0

यदि एप्लिकेशन मुख्य रूप से विंडोज के लिए है - .NET का उपयोग करें। यदि आप बाद में पोर्टिंग के बारे में गंभीर हैं - पी/Invoke, 2.0 सुविधाओं से ऊपर .NET और समृद्ध जीयूआई (जो मोनो पर नहीं चल रहे हैं) के साथ तृतीय पक्ष टूलकिट का उपयोग करने से बचें वर्तमान में अच्छे और वाणिज्यिक .NET क्रॉस-प्लेटफ़ॉर्म हैं http://www.mono-project.com/Companies_Using_Mono

इसके अलावा कई डेवलपर्स से अधिक जावा से अधिक ग्रहण और सी # वी.एस. आईडीई पसंद करते हैं - सहित अच्छा http://www.codicesoftware.com/xpfront.aspx plastic scm UI http://www.plasticscm.com/screenshots/gui27/visual/brexplorer04.png और कई अन्य क्षुधा। लेकिन यदि आपका एप्लिकेशन मुख्य रूप से विंडोज़ - मुझे लगता है कि .NET का उपयोग करना बेहतर है। विशेष रूप से यदि जीयूआई एकीकरण मुख्य चिंता है, क्योंकि जावा अनुप्रयोगों को देशी विंडोज की तरह दिखाना अभी भी दर्दनाक है। .NET के तहत रिबन इंटरफेस के लिए बहुत सारे नियंत्रण हैं (देशी एक को जोड़ना)। जावा के लिए उचित रूप से ढूंढने का प्रयास करें और आप समझेंगे कि मेरा क्या मतलब है

मोनो के साथ (यदि आप मुख्य नियम बनाए रखेंगे) तो अधिकांश समय आपको मोनो को अंदर पोर्टिंग और एम्बेड करने की समस्या नहीं होगी आपका आवेदन।

2

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

निश्चित रूप से आप इसके साथ अच्छे इंटरफेस बना सकते हैं, लेकिन शायद एमएस ऑफिस इंटरफेस (माइक्रोसॉफ्ट मिश्रण) के रूप में उतना ही अच्छा नहीं है।

आप इसे एक विकल्प के रूप में मान सकते हैं। http://www.qtsoftware.com/products/

उदाहरण http://www.qtsoftware.com/qt-in-use

+0

कोई क्यूटी रिबन वहाँ बाहर? – Mash

+0

मुझे एक नहीं मिला: एस –

4

पहले, या नहीं, अपने जीयूआई खिड़कियों पर अच्छे लग रहे भाषा या टूलकिट का अपनी पसंद पर की तुलना में यह होगा जीयूआई डिजाइन के साथ अपने कौशल के बारे में अधिक निर्भर करेगा होगा।

विंडोज फॉर्म वास्तव में आपको दस्तावेजीकृत API का उपयोग करके Windows GUI कार्यक्षमता तक पूर्ण पहुंच नहीं देता है। आपको देशी एपीआई कार्यों में कॉल करना होगा या कम से कम कुछ प्रभाव प्राप्त करने के लिए विंडोज-विशिष्ट संदेशों का उपयोग करना होगा। साथ ही, मुझे नहीं लगता कि Office 2007-style रिबन नियंत्रण तक पहुंचने का एक अंतर्निहित तरीका है। इसके लिए आपको एक तृतीय पक्ष घटक की आवश्यकता होगी।

बहुत सारे नेट एप्स अच्छे दिखने वाले जीयूआई प्राप्त करने के लिए तीसरे पक्ष के विजेट सेट पर भरोसा करते हैं। चेतावनी दीजिये कि ये अक्सर पी/Invoke या अन्य विंडोज़-विशिष्ट functionaly पर भरोसा करते हैं और इस प्रकार मोनो पर काम नहीं करते हैं। तो यदि आप वास्तव में एक क्रॉस प्लेटफॉर्म जीयूआई चाहते हैं, तो नेट सबसे अच्छा विकल्प नहीं है।

आप विंडोज प्रेजेंटेशन फाउंडेशन में नेट जीयूआई भी कर सकते हैं, लेकिन फिर यह मोनो में समर्थित नहीं है।

जीटीके # यूनिक्स और विंडोज़ पर अच्छी तरह से काम करता है, हालांकि यह विंडोज पर थोड़ा कम देशी दिखता है।

जावा स्विंग बहुत क्रॉस प्लेटफार्म है और प्लेटफार्म के मूल रूप और अनुभव के साथ बहुत अच्छा दिखता है। आप नेटबीन्स को कार्रवाई में देखने के लिए डाउनलोड कर सकते हैं।

एसडब्ल्यूटी जावा के लिए एक वैकल्पिक टूलकिट है जिसमें स्विंग की तुलना में थोड़ा कम क्रॉस-प्लेटफार्म संगतता है, लेकिन फिर भी यह अभी भी लोकप्रिय है। ग्रहण इस टूलकिट का उपयोग करता है, इसलिए इसे उपयोग में देखने के लिए डाउनलोड करें।

+0

+1 आपके जीयूआई टूलकिट परिचय के लिए +1 – DerMike

संबंधित मुद्दे