विंडोज डेस्कटॉप अनुप्रयोगों के लिए रनटाइम / भाषा चुनते समय किन कारकों पर विचार करें?


10

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

मेरी विकास टीम (स्वयं सहित) को जावा में स्विंग अनुप्रयोगों के साथ-साथ सी # में विंडोज फॉर्म लिखने में व्यापक अनुभव है। "व्यापक" का मतलब है कि हमने दोनों रनटाइम पर तीन एप्लिकेशन विकसित और शिप किए हैं। अनुप्रयोग तकनीकी विश्लेषण अनुप्रयोग हैं, जो डेटाबेस इंटरैक्शन पर बहुत हल्के हैं, लेकिन कस्टम UI और डेटा सेट आकार पर भारी हैं।

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

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

यदि हम .NET चुनते हैं तो हम WPF पर ध्यान केंद्रित करना शुरू कर सकते हैं, लेकिन F # का उपयोग करना भी शुरू कर सकते हैं। यदि हम जावा चुनते हैं, तो हम आरसीपी पर ध्यान केंद्रित करना शुरू कर सकते हैं, लेकिन स्काला का उपयोग भी शुरू कर सकते हैं।

क्या किसी को भी इसी तरह का निर्णय लेना पड़ा है? यदि हां, तो यह क्या था और किसने आपको सबसे अधिक प्रभावित किया? किसी भी शीर्ष चिंताएं मुझे याद आ रही हैं?

(कृपया ध्यान दें: प्रोग्रामर पर कुछ ऐसे ही सवाल हैं। पहले से ही, लेकिन वे या तो असंयमित हैं या एक अलग कोण से हैं।)


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

@ ग्रेट पॉइंट, मैंने शीर्षक को अपडेट किया (इसे थोड़ा छोटा किया)।
डेकार्ड

1
हो सकता है कि इस लिंक में विंडोज के भविष्य के बारे में कुछ हो, जो आप लोगों के लिए बहुत महत्वपूर्ण है IMHO- zdnet.com/blog/microsoft/…
गुलशन

मैक उपयोगकर्ताओं को वाइन स्थापित करने और विंडोज ऐप चलाने के लिए मजबूर करना उन्हें यातना देने के समान है।
सही

जवाबों:


7

हम जावा (स्विंग) के लिए जेएनआई के माध्यम से कुछ देशी भागों के लिए गए। जबकि बहु-स्तरीयता के लिए व्यावसायिक मांग आज मामूली हो सकती है, 5 साल में स्थिति अलग हो सकती है, और ऐप का (एक वैज्ञानिक माप ऐप) जीवन चक्र 10+ वर्षों की तरह होने वाला है (इसके सी ++ पूर्ववर्ती, अभी भी आज भी इस्तेमाल किया जाता है) स्रोत फाइलें 1991)। जैसा कि आपने लिखा है, जावा गैर-विंडोज वातावरण में .NET को हरा देता है, और अगर हमें कभी भी विंडोज से दूर जाने की आवश्यकता होती है, तो यह सिर्फ कुछ देशी भागों को फिर से संकलित करने की बात है, हो सकता है कि GUI दिखने पर ठीक-ठीक ट्यूनिंग करें, और जाँच करें कि सब कुछ काम करता है।

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


2
किस तरह से एक .NET ऐप जावा की तुलना में अधिक देशी विंडोज ऐप है?
री मियासका

@ री: इसमें .NET फ्रेमवर्क केवल विंडोज के लिए उपलब्ध है। निश्चित रूप से, मोनो है, लेकिन यह हमेशा पिछड़ रहा है, और वर्तमान में इसका भविष्य अच्छा है, अनिश्चित है।
तमसे सजेलेई

1
@ तमसे यह बिल्कुल अलग और आकस्मिक मामला है। "। यह प्रोग्राम DOS मोड में नहीं चलाया जा सकता है" कोड के पहले कई बाइट्स के अलावा, प्रोग्राम अभी भी पूरी तरह से बाइट कोड है। एक Java लाइब्रेरी एक नेट .NET के समान विंडोज का मूल निवासी है, भले ही कार्यान्वयन के अभाव में रिवर्स असत्य हो।
री मियासका

4

एक चीज जिस पर आप विचार करना चाहते हैं, वह IKVM प्रोजेक्ट है जो आपको .NET दुनिया में जावा कोड का उपयोग करने की अनुमति देता है। आप तब जावा बैकएंड के लाभ प्राप्त कर सकते हैं, जबकि - मेरी समझ में - आप स्विंग या WinForms में एक पतली ललाट रख सकते हैं।

http://www.ikvm.net/

मैंने सुना है कि अन्य लोगों ने इसका उपयोग बोझिल .NET संस्करण का उपयोग करने के बजाय .NET से जावा में लिखित एक ओपन सोर्स कनेक्शन लाइब्रेरी का उपयोग करने के लिए किया है।


3

MSDN पर एक संसाधन है जो आपके लिए उपयोगी हो सकता है: http://msdn.microsoft.com/en-us/gg715299 .aspx

यदि आप पृष्ठ के निचले भाग पर जाते हैं, तो आपको ऐसे श्वेतपत्रों का एक गुच्छा मिलेगा, जो जावा और .NET की तुलनात्मक रूप से करते हैं। बेशक यह MSDN पर है क्योंकि यह .NET की ओर पक्षपाती है, लेकिन संसाधन अभी भी काफी उपयोगी हैं।


1

मैंने इसके बारे में कुछ सोचकर किया है, और मुझे उत्तर मिला है कि यह परियोजना के प्रकार पर निर्भर करता है और आप इसके बारे में क्या सोच सकते हैं।

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

ऐसे समय होते हैं जब 2 मूल लिखित कोड आधार बेहतर होते हैं। यदि, उदाहरण के लिए, WPF में अपने ऐप को लिखना .NET के लिए सुरुचिपूर्ण है, और इसे लिखने के लिए कहें, कोको मैक ओएस के लिए सुरुचिपूर्ण है, जिसके परिणामस्वरूप कोड वास्तव में उपयोग करने से छोटा हो सकता है, कह सकते हैं, जावा या मोनो (जिसके पास नहीं है WPF)। उस स्थिति में, आपको कम कोड के साथ बेहतर परिणाम मिल सकते हैं।

एक अंतिम विचार शायद आपका ऐप HTML5 एप्लिकेशन, या यहां तक ​​कि Chrome एक्सटेंशन के रूप में भी कर रहा है, लेकिन यह बहुत अधिक फ़ील्ड हो सकता है।


1

क्या आपने सिल्वरलाइट पर विचार किया है ? यह विंडोज डेस्कटॉप एप्लिकेशन (SL4 + से) और मैक पर ठीक काम करने के लिए एक अच्छा विकल्प हो सकता है।


SL लगभग मर चुका है ..
klm_

Microsoft ऐसा नहीं सोचता। व्यक्तिगत रूप से मुझे लगता है कि html5 वेब ऐप के लिए पहली पसंद है लेकिन क्लाइंट साइड SL एक अच्छा टेक्नोलोजी हो सकता है।
ADIMO

मैं HTML5 के लिए भी जाऊंगा, क्योंकि यह W3O द्वारा समर्थित है। सिल्वरलाइट एचटीएमएल 5 के साथ प्रतिस्पर्धा में है और अगर यह एक डिंग नहीं करता है तो यह मर जाएगा, मुझे लगता है।
klm_

1

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

मेरे पास हमेशा कई मुद्दे थे, और कभी-कभी इस आधार पर असफल रहा। आपको इसकी आवश्यकता नहीं हो सकती है, लेकिन कभी-कभी मैं इस पर ठोकर खाता हूं और आमतौर पर दर्द होता है।

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

मुझे गलत मत समझो मैं एक जावा डेवलपर हूं और इसे चमकाने का मतलब नहीं है। मैं केवल यह कह रहा हूं कि यदि आपको संदेह है कि आपको उपरोक्त में से किसी की आवश्यकता होगी, तो यह चोट पहुंचा सकता है और आप .net के साथ बेहतर हो सकते हैं । कम से कम यह एक तर्क है जिसे आपको ध्यान में रखना चाहिए।

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