जिन प्लेटफॉर्म का मैं समर्थन करना चाहता हूं, उन्हें लक्षित करने के लिए मोनो एक बेहतर काम करता है। इसके अलावा, यह सभी व्यक्तिपरक है।
मैं निम्नलिखित प्लेटफार्मों पर C # कोड साझा करता हूं: - iOS (iPhone / iPad) - Android - वेब (HTML5) - Mac (OS X) - लिनक्स - विंडोज
मैं इसे और भी जगहों पर साझा कर सकता था: - विंडोज फोन 7 - Wii - XBox - PS3 - आदि।
Biggie iOS है क्योंकि MonoTouch काल्पनिक रूप से काम करता है। मुझे जावा के साथ iOS को लक्षित करने का कोई अच्छा तरीका नहीं पता है। आप जावा के साथ विंडोज फोन 7 को लक्षित नहीं कर सकते हैं, इसलिए मैं कहूंगा कि मोबाइल के लिए जावा बेहतर होने के दिन हमारे पीछे हैं।
मेरे लिए सबसे बड़ा कारक यद्यपि व्यक्तिगत उत्पादकता (और खुशी) है। जावा IMHO के आगे एक भाषा के रूप में C # है और .NET फ्रेमवर्क उपयोग करने के लिए एक खुशी है। जावा 7 और जावा 8 में जो कुछ भी जोड़ा जा रहा है, वह वर्षों से C # में है। Scala और Clojure (दोनों CLR पर उपलब्ध) जैसी JVM भाषाएँ हालांकि बहुत अच्छी हैं।
मैं मोनो को अपने आप में एक प्लेटफ़ॉर्म के रूप में देखता हूं (एक महान) और विंडोज़ पर मोनो के माइक्रोसॉफ्ट कार्यान्वयन के रूप में .NET का इलाज करता हूं। इसका मतलब है कि मैं पहले मोनो पर विकसित और परीक्षण करता हूं। यह अद्भुत काम करता है।
यदि जावा और .NET दोनों (मोनो लेट्स कहते हैं) किसी भी कॉर्पोरेट समर्थन के बिना ओपन सोर्स प्रोजेक्ट थे, तो मैं हर बार जावा पर मोनो का चयन करूंगा। मेरा मानना है कि यह सिर्फ एक बेहतर मंच है।
.NET / मोनो और JVM दोनों ही शानदार विकल्प हैं, हालांकि मैं व्यक्तिगत रूप से JVM पर जावा की तुलना में कुछ अन्य भाषा का उपयोग करूंगा।
मेरी कुछ अन्य टिप्पणियाँ हैं:
समस्या: प्रदर्शन
** उत्तर: जेवीएम और सीएलआर दोनों वे करते हैं जो वे कहते हैं कि अवरोधकों से बेहतर प्रदर्शन करते हैं। मैं कहूंगा कि जेवीएम बेहतर प्रदर्शन करता है। मोनो आम तौर पर .NET से धीमी होती है (हालांकि हमेशा नहीं)।
मैं व्यक्तिगत रूप से ASP.NET MVC को J2EE पर किसी भी दिन डेवलपर और अंतिम-उपयोगकर्ता दोनों के रूप में ले जाऊंगा। Google नेटिव क्लाइंट के लिए समर्थन बहुत अच्छा है। इसके अलावा, मुझे पता है कि डेस्कटॉप जावा ऐप्स के लिए खराब जीयूआई प्रदर्शन अतीत की बात है, लेकिन मैं धीमी गति से खोजता रहता हूं। फिर, मैं WPF के लिए भी यही कह सकता था। GTK # बहुत तेज है, हालांकि कोई कारण नहीं है कि उन्हें धीमा होना है।
समस्या: जावा में पुस्तकालयों का एक बड़ा पारिस्थितिकी तंत्र उपलब्ध है।
उत्तर: संभवतः सच है, लेकिन यह व्यवहार में एक गैर-मुद्दा है।
व्यावहारिक रूप से हर जावा पुस्तकालय ( जेडीके सहित) IKVM.NET के लिए .NET / मोनो के लिए सिर्फ बांका चलाता है । प्रौद्योगिकी का यह टुकड़ा एक सच्चा चमत्कार है। एकीकरण अद्भुत है; आप एक जावा पुस्तकालय का उपयोग कर सकते हैं जैसे यह मूल था। मुझे हालांकि केवल एक .NET ऐप में जावा लाइब्रेरीज़ का उपयोग करना था। .NET / मोनो इकोसिस्टम आमतौर पर मेरी आवश्यकता से अधिक प्रदान करता है।
समस्या: जावा में बेहतर (व्यापक) टूल सपोर्ट है
उत्तर: विंडोज पर नहीं। अन्यथा मैं सहमत हूं। हालांकि मोनोडेवल अच्छा है।
मैं मोनोएवुल्ड को एक चिल्लाहट देना चाहता हूं ; यह एक गहना है। MonoDevelop मैं कोड पूरा (intellisense), Git / तोड़फोड़ एकीकरण, यूनिट परीक्षणों के लिए समर्थन, SQL एकीकरण, डिबगिंग, आसान refactoring और ऑन-द-फ्लाई डिकंपिलेशन के साथ विधानसभा ब्राउज़िंग सहित उपयोग किए जाने वाले अधिकांश टूल को एकीकृत करता है। सर्वर-साइड वेब से मोबाइल ऐप तक सब कुछ के लिए समान वातावरण का उपयोग करना अद्भुत है।
मुद्दा: प्लेटफार्मों भर में संगतता।
उत्तर: विंडोज़ सहित सभी प्लेटफार्मों में मोनो एक एकल कोड-बेस है।
पहले मोनो के लिए विकसित करें और यदि आप चाहें तो .NET को विंडोज पर तैनात करें। यदि आप .NET की तुलना MS से जावा से करते हैं, तो Java में प्लेटफार्मों के बीच स्थिरता के मामले में बढ़त है। देखें अगला जवाब ...
समस्या: मोनो lags .NET।
उत्तर: नहीं यह नहीं है। IMHO, यह अक्सर कहा जाने वाला गलत कथन है।
C #, VB.NET, F #, IronPython, IronRuby के साथ Xamarin जहाजों से मोनो वितरण, और मुझे लगता है कि शायद बॉक्स से बाहर बू। मोनो C # कंपाइलर MS के साथ पूरी तरह से अद्यतित है। मोनो VB.NET कंपाइलर MS वर्जन को लैग करता है। अन्य कंपाइलर दोनों प्लेटफार्मों पर समान हैं (जैसा कि अन्य .NET लैंग्वेज हैं जैसे कि नेमारल, बू और फाल्न्गेर (PHP))।
डायनेमिक भाषा रनटाइम (DLR), प्रबंधित एक्सटेंसीबिलिटी फ्रेमवर्क (MEF), F #, और ASP.NET MVC सहित बहुत सारे वास्तविक Microsoft लिखित कोड के साथ मोनो जहाज। क्योंकि रेज़र ओपन सोर्स नहीं है, मोनो वर्तमान में MVC2 के साथ जहाज करता है लेकिन MVC3 मोनो पर ही ठीक काम करता है।
कोर मोनो प्लेटफॉर्म ने .NET या कई वर्षों से गति बनाए रखी है और संगतता प्रभावशाली है। आप आज पूर्ण C # 4.0 भाषा और यहां तक कि कुछ C # 5.0 सुविधाओं का उपयोग कर सकते हैं। वास्तव में, मोनो अक्सर कई तरीकों से .NET का नेतृत्व करता है।
मोनो सीएलआर के कुछ हिस्सों को लागू करता है कल्पना करता है कि Microsoft भी समर्थन नहीं करता है (जैसे 64 बिट सरणियाँ)। .NET दुनिया में प्रौद्योगिकी के सबसे रोमांचक नए टुकड़ों में से एक रोज़लिन है । मोनो ने कई वर्षों के लिए सेवा के रूप में सी # संकलक की पेशकश की है। रोसेलिन की पेशकश में से कुछ NRefractory के माध्यम से उपलब्ध है । एक उदाहरण था मोनो अभी भी गेमिंग प्रदर्शन में तेजी लाने के लिए SIMD निर्देश होगा।
Microsoft .NET के शीर्ष पर कई उत्पाद पेश करता है जो मोनो में उपलब्ध नहीं होते हैं जो मोनो लैगून के बारे में गलत धारणा है जो कि आती है। विंडोज प्रेजेंटेशन फाउंडेशन (WPF), एंटिटी फ्रेमवर्क (EF), WCF (विंडोज कम्युनिकेशन फाउंडेशन) ऐसे उत्पादों के उदाहरण हैं, जो मोनो पर काम नहीं करते हैं, या खराब रूप से समर्थित हैं। स्पष्ट समाधान इसके बजाय GTK #, NHibernate, और ServiceStack जैसे क्रॉस-प्लेटफ़ॉर्म विकल्पों का उपयोग करना है।
समस्या: Microsoft बुराई है।
उत्तर: सच। तो क्या।
कई लोग मोनो का उपयोग करने से बचने के लिए निम्नलिखित कारणों की पेशकश करते हैं:
1) आपको मोनो का उपयोग नहीं करना चाहिए क्योंकि Microsoft तकनीक से बचा जाना चाहिए
2) मोनो बेकार है क्योंकि यह आपको Microsoft द्वारा प्रदान की जाने वाली प्रत्येक तकनीक का उपयोग नहीं करने देता है
मेरे लिए, यह स्पष्ट है कि ये कथन असंगत हैं। मैं पहले कथन को अस्वीकार करता हूं लेकिन उस तर्क को यहां छोड़ दूंगा। दूसरा कथन सभी .NET विकल्प के लिए सही है।
JVM एक बेहतरीन मंच है और JVM भाषाओं का विस्फोट बहुत बढ़िया है। जो आपको खुश करता है उसका उपयोग करें। अभी के लिए, यह अक्सर मेरे लिए .NET / मोनो है।