क्रॉस प्लेटफॉर्म लाइब्रेरी बनाने के लिए मुझे किस भाषा का उपयोग करना चाहिए? [बन्द है]


10

मैं एक सिंकएलएम पार्सिंग लाइब्रेरी ( कोई यूआई ) नहीं बनाना चाहता हूं , जो लाइब्रेरी के तरीकों से खिलाए गए होस्ट एप्लिकेशन द्वारा प्रदान की गई जानकारी के आधार पर संदेश बनाने में सक्षम हो। इसके अलावा, लाइब्रेरी को होस्ट एप्लिकेशन में विधियों के लिए कॉलबैक करने में सक्षम होना चाहिए।

मैं इसे संकलित करने में सक्षम होना चाहता हूं और इसे यथासंभव कई प्लेटफार्मों पर उपलब्ध है: विंडोज, विंडोज फोन 7 ओएस, ओएसएक्स, आईओएस, लिनक्स, एंड्रॉइड, ब्लैकबेरी। मूल रूप से संभव के रूप में कई प्लेटफार्मों।

प्राथमिकता यह है कि यह मोबाइल उपकरणों पर उपलब्ध हो।

प्रशन:

  1. मुझे किस सेटअप का उपयोग करना चाहिए? (प्रोग्रामिंग लैंग्वेज, कंपाइलर, आईडीई आदि)
  2. मैं इन विभिन्न प्लेटफार्मों के लिए इस लाइब्रेरी को कैसे संकलित करूंगा और मैं इससे कैसे जुड़ूंगा?
  3. कोई और जानकारी? ऐसे लेख जो क्रॉस-प्लेटफॉर्म विकास के विषय को कवर करते हैं?

मैंने इस तरह का क्रॉस-प्लेटफॉर्म प्रोजेक्ट पहले नहीं किया है, इसलिए मुझे सही दिशा में लाने के लिए उपलब्ध किसी भी जानकारी का स्वागत किया जाएगा।

स्वयं, मेरे पास C # /। NET और ऑब्जेक्टिव-सी में एक पृष्ठभूमि है।

जवाबों:


8

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

ध्यान दें कि आपको जावा प्लेटफ़ॉर्म के लाभों को प्राप्त करने के लिए जावा भाषा का उपयोग करने की आवश्यकता नहीं है - वास्तव में आजकल, अगर स्क्रैच से एक परियोजना शुरू करना, तो मैं निम्नलिखित में से एक को पुनः प्राप्त करूंगा:

  • स्काला - यदि आप JVM पर शानदार प्रदर्शन के साथ एक शक्तिशाली, वैधानिक रूप से टाइप किया हुआ, बहु प्रतिमान चाहते हैं। यदि आपके पास C # बैकग्राउंड है तो आप पर मुकदमा कर सकते हैं।
  • क्लोजर - यदि आप कार्यात्मक प्रोग्रामिंग पसंद करते हैं, गतिशील भाषाओं की तरह और अत्याधुनिक किनारे पर रहने का आनंद लें। क्लोजर में वास्तव में उत्कृष्ट संगामिति क्षमताएं हैं जो आकर्षक हो सकती हैं - लिंक किए गए वीडियो कुछ गहरी अंतर्दृष्टि के लिए अच्छी तरह से देखने लायक है।
  • Groovy - यदि आप एक सरल-लेकिन-प्रभावी गतिशील वस्तु उन्मुख स्क्रिप्टिंग भाषा चाहते हैं जो C # / Java डेवलपर्स के लिए बहुत परिचित महसूस करेगा।

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

वैसे, जावा में पहले से ही एक ओपन सोर्स SyncML लाइब्रेरी उपलब्ध है जिसे फनमबोल कहा जाता है । इस बात के बारे में निश्चित नहीं है कि यह आपके लिए सीधे उपयोगी है, लेकिन यह इस बात का उदाहरण है कि आमतौर पर बहुत कुछ के लिए एक खुला स्रोत जावा पुस्तकालय है ......।

अन्य विकल्पों पर विचार:

  • C / C ++ निश्चित रूप से क्रॉस-प्लेटफॉर्म का काम कर सकता है, लेकिन इसके लिए प्रत्येक प्लेटफॉर्म के लिए देशी कोड में एक recompile (और बाद में परीक्षण) की आवश्यकता होती है। JVM भाषाओं के साथ जो संकलित बायटेकोड के रूप में आवश्यक नहीं है, वह पोर्टेबल है। जब तक आपको प्रदर्शन या कच्चे हार्डवेयर सुविधाओं तक पहुंच के लिए सी / सी ++ की आवश्यकता नहीं है, मुझे लगता है कि यह एक सिरदर्द है जिसे आपको बचना चाहिए।
  • मोनो के रूप में सी # काम कर सकता था ( उदाहरण के लिए क्रॉस-प्लेटफॉर्म लाइब्रेरी के रूप में एकता की सफलता का गवाह ), लेकिन परिपक्वता, लाइब्रेरी उपलब्धता या यहां तक ​​कि कच्चे प्रदर्शन के मामले में यह जेवीएम पारिस्थितिकी तंत्र कहीं नहीं है। इसके अलावा यह Microsoft के साथ 100% संगत होने वाला नहीं है। नेट के बाद से .Net में विंडोज़-विशिष्ट विशेषताएं हैं जो पोर्टेबिलिटी के लिए एक बुरा सपना हैं। फिर भी, यह विचार करने के लायक है कि क्या आप C # के साथ रहना निर्धारित करते हैं।
  • यदि आप क्लाइंट और सर्वर दोनों तरफ लाइब्रेरी का उपयोग करने में रुचि रखते हैं, तो जावास्क्रिप्ट एक बाहरी विकल्प हो सकता है।

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

2
मैं समझता हूं कि वर्तमान में Apple iPhone पर जावा के बारे में काफी प्रतिबंधात्मक है। मुझे उम्मीद है कि बाजार का दबाव भविष्य में और अधिक होने का कारण होगा - यह लेख theserverside.com/discussions/thread.tss?thread_id=63072 Oracle के बारे में बात करता है, जो कि iPod टच में जावा-आधारित ऐप का प्रदर्शन करता है।
मीका

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

3

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


3

यह एक नहीं बल्कि कई विकल्प हैं। हालांकि यह हर जगह जाने वाली एक चीज़ को पाने के लिए लुभाता है, यह हमेशा करने का सबसे अच्छा तरीका नहीं है।

  1. उदाहरण के लिए, जबकि विंडोज़ मोबाइल प्लेटफ़ॉर्म में C ++ कोड को निचोड़ना संभव हो सकता है। समर्थन के दृष्टिकोण से .NET का हमेशा कुछ भी आसान नहीं होगा।

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

  3. सबसे महत्वपूर्ण बात जो मुझे लगता है, वह जीयूआई का प्रकार और स्तर है जिसे आप बनाना चाहते हैं।

अब सबसे आशाजनक विकल्पों के लिए आ रहा है।

ए। सिम्बियन, ब्लैकबेरी, एंड्रॉइड, BREW और Bada (samsung) के लिए जावा / J2ME सबसे सामान्य तरीका है। हालाँकि, आप कई मामलों में C / C ++ के साथ बेहतर हो सकते हैं, कुछ प्लेटफ़ॉर्म में देशी कोर सामान के लिए।

ख। किसी भी समर्थित भाषा के साथ Windows .NET के लिए अच्छा होगा।

सी। आईओएस के लिए - वहाँ कोई विकल्प नहीं है, लेकिन उद्देश्य सी यह वह जगह है नहीं बहुत सी ++ तो मैं एक उद्देश्य के रूप में यह गिनती नहीं होगी

यहां एक विकी संदर्भ है जो सभी प्लेटफार्मों का सेट दिखाता है जो आपको सभी विकल्प दिखाता है और जहां वे लागू होते हैं।

आपके प्रश्न के लिए धन्यवाद, मैंने उपरोक्त विकी लिंक से सीखा कि अब एसडीके हैं, जो उपरोक्त समस्या को हल करने का प्रयास करते हैं। जो दो सबसे करीब आते हैं वे हैं:

  1. मुरब्बा: http://www.madewithmarmalade.com/marmalade/supported-platforms इस दिलचस्प समर्थन लगभग सभी प्लेटफार्मों। विंडोज केवल पूर्ण सर्कल बनाने के लिए जोड़ा जा रहा है।

  2. कण कोड: http://www.particlecode.com/

मैंने अभी तक उनका उपयोग नहीं किया है, लेकिन दिलचस्प काम लगता है।


Android Bada और iOS C ++ की अनुमति देता है।
Kलेम

3

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

एकमात्र परिणाम व्यवहार्य भाषा C ++ है।


2
क्या आप C # के संयोजन में मोनो परियोजना के उपयोग के लाभों के बारे में कुछ जानते हैं? C विचार करने लायक क्यों नहीं है?
आंद्रेई

2
@Andrei: जहां तक ​​मुझे पता है, मोनो आपके द्वारा सूचीबद्ध सभी प्लेटफार्मों पर उपलब्धता की तस्वीर शायद ही हो। और C विचार करने लायक नहीं है क्योंकि यह सिर्फ C ++ की तरह है, लेकिन सभी अच्छी सुविधाओं में कटौती के साथ, जो जाहिर है कि अगर आप C ++ का उपयोग कर सकते हैं, तो यह एक बेवकूफी है।
डेडएमजी

4
@DeadMG: मैं आपको लीनस टोरवाल्ड्स के साथ उस बिंदु पर बहस करते हुए देखना पसंद करूंगा : thread.gmane.org/gmane.comp.version-control.git/57643/- - यह कहते हुए कि वह 100% सही होना चाहिए, मैं बस चपटा देखने के लिए पसंद है।
माइकल बोर्गवर्ड

2
@DeadMG C अच्छी विशेषताओं में कटौती के साथ C ++ नहीं है; C ++ भयानक सुविधाओं के साथ C जोड़ा गया है। वहाँ सी के साथ कुछ भी नहीं गलत है
rightfold

2
@TP: उन्होंने मेरी जिंदगी की कहानी नहीं, बल्कि सिफारिश मांगी। सरल तथ्य यह है कि आप C ++ की अतिरिक्त विशेषताओं के बारे में जो भी सोचते हैं, तथ्य यह है कि वे मौजूद हैं और वे C ++ - केवल कोड को सुलभ बनाते हैं, जो कि एक बोनस है, और C कुछ भी नहीं है C ++ नहीं है- रिवर्स सच नहीं है। जब आप C ++ ओवर C का उपयोग करते हैं, तो आप केवल विकल्प जोड़ते हैं। इसलिए, परिभाषा के अनुसार, C ++ एक बेहतर भाषा है, और आप हमेशा C ++ सुविधाओं का उपयोग नहीं करने का विकल्प चुन सकते हैं । जो पागलपन होगा, लेकिन आप कर सकते हैं।
डेडएमजी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.