क्रॉस-प्लेटफ़ॉर्म सॉफ़्टवेयर: Difference between revisions

From Vigyanwiki
(text)
Line 196: Line 196:
क्रॉस-प्लेटफ़ॉर्म सॉफ़्टवेयर विकसित करते समय कई चुनौतियाँ हैं।
क्रॉस-प्लेटफ़ॉर्म सॉफ़्टवेयर विकसित करते समय कई चुनौतियाँ हैं।


* क्रॉस-प्लेटफ़ॉर्म एप्लिकेशन का परीक्षण करना काफी अधिक जटिल हो सकता है, क्योंकि विभिन्न प्लेटफ़ॉर्म थोड़े भिन्न व्यवहार या सूक्ष्म बग प्रदर्शित कर सकते हैं। इस समस्या ने कुछ डेवलपर्स को क्रॉस-प्लेटफ़ॉर्म विकास को एक बार लिखने, हर जगह डीबग करने, सन माइक्रोसिस्टम्स के एक बार लिखने, कहीं भी मार्केटिंग स्लोगन चलाने के लिए प्रेरित किया है।
* क्रॉस-प्लेटफ़ॉर्म अनुप्रयोगों का परीक्षण करना काफी अधिक जटिल हो सकता है, क्योंकि विभिन्न प्लेटफ़ॉर्म थोड़े भिन्न व्यवहार या सूक्ष्म बग प्रदर्शित कर सकते हैं। इस समस्या ने कुछ डेवलपर्स को क्रॉस-प्लेटफ़ॉर्म विकास को "एक बार लिखें, हर जगह डीबग करें", सन माइक्रोसिस्टम्स पर एक टेक "एक बार लिखें, कहीं भी चलाएं" मार्केटिंग नारा के रूप में उपहास करने के लिए प्रेरित किया है।
* डेवलपर्स को अक्सर सभी प्लेटफार्मों पर उपलब्ध सुविधाओं के सबसे कम सामान्य भाजक (कंप्यूटर) का उपयोग करने के लिए प्रतिबंधित किया जाता है। यह एप्लिकेशन के प्रदर्शन में बाधा डाल सकता है या डेवलपर्स को प्रत्येक प्लेटफॉर्म की सबसे उन्नत सुविधाओं का उपयोग करने से रोक सकता है।
* डेवलपर्स अक्सर सुविधाओं के सबसे कम सामान्य भाजक का उपयोग करने के लिए प्रतिबंधित होते हैं जो सभी प्लेटफार्मों पर उपलब्ध होते हैं। यह एप्लिकेशन के प्रदर्शन में बाधा डाल सकता है या डेवलपर्स को प्रत्येक प्लेटफॉर्म की सबसे उन्नत सुविधाओं का उपयोग करने से रोक सकता है।
* विभिन्न प्लेटफार्मों में अक्सर अलग-अलग यूजर इंटरफेस सम्मेलन होते हैं, जो क्रॉस-प्लेटफ़ॉर्म एप्लिकेशन हमेशा समायोजित नहीं होते हैं। उदाहरण के लिए, macOS और GNOME के ​​लिए विकसित किए गए एप्लिकेशन को विंडो या डायलॉग के दाईं ओर सबसे महत्वपूर्ण बटन रखना चाहिए, जबकि Microsoft Windows और KDE में विपरीत परंपरा है। हालांकि इनमें से कई अंतर सूक्ष्म हैं, एक क्रॉस-प्लेटफ़ॉर्म एप्लिकेशन जो इन सम्मेलनों के अनुरूप नहीं है, उपयोगकर्ता के लिए भद्दा या विदेशी लग सकता है। तेजी से काम करते समय, इस तरह के विरोधी सम्मेलनों के परिणामस्वरूप डेटा हानि भी हो सकती है, जैसे एक संवाद बॉक्स में यह पुष्टि करना कि परिवर्तनों को सहेजना या त्यागना है या नहीं।
* अलग-अलग प्लेटफॉर्म में अक्सर अलग-अलग यूजर इंटरफेस कन्वेंशन होते हैं, जो क्रॉस-प्लेटफॉर्म एप्लिकेशन हमेशा समायोजित नहीं होते हैं। उदाहरण के लिए, macOS और GNOME के ​​लिए विकसित किए गए एप्लिकेशन को विंडो या डायलॉग के दाईं ओर सबसे महत्वपूर्ण बटन रखना चाहिए, जबकि Microsoft Windows और KDE में विपरीत परंपरा है। हालांकि इनमें से कई अंतर सूक्ष्म हैं, एक क्रॉस-प्लेटफ़ॉर्म एप्लिकेशन जो इन सम्मेलनों के अनुरूप नहीं है, उपयोगकर्ता के लिए भद्दा या विदेशी लग सकता है। तेजी से काम करते समय, इस तरह के विरोधी सम्मेलनों के परिणामस्वरूप डेटा हानि भी हो सकती है, जैसे एक संवाद बॉक्स में यह पुष्टि करना कि परिवर्तनों को सहेजना या त्यागना है या नहीं।
* स्क्रिप्टिंग भाषाओं और वीएम बाइटकोड को हर बार उपयोग किए जाने पर मूल निष्पादन योग्य कोड में अनुवादित किया जाना चाहिए, एक प्रदर्शन जुर्माना लगाया जाना चाहिए। जस्ट-इन-टाइम संकलन जैसी तकनीकों का उपयोग करके इस दंड को कम किया जा सकता है; लेकिन कुछ कम्प्यूटेशनल ओवरहेड अपरिहार्य हो सकते हैं।
* स्क्रिप्टिंग भाषाओं और वीएम बाइटकोड को हर बार उपयोग किए जाने पर मूल निष्पादन योग्य कोड में अनुवादित किया जाना चाहिए, एक प्रदर्शन जुर्माना लगाया जाता है। जस्ट-इन-टाइम संकलन जैसी तकनीकों का उपयोग करके इस दंड को कम किया जा सकता है; लेकिन कुछ कम्प्यूटेशनल ओवरहेड अपरिहार्य हो सकते हैं।
* विभिन्न प्लेटफार्मों को मूल पैकेज प्रारूपों जैसे आरपीएम पैकेज मैनेजर और विंडोज इंस्टालर के उपयोग की आवश्यकता होती है। मल्टी-प्लेटफ़ॉर्म इंस्टॉलर जैसे कि InstallAnywhere इस आवश्यकता को पूरा करता है।
* विभिन्न प्लेटफार्मों को मूल पैकेज प्रारूपों जैसे आरपीएम और एमएसआई के उपयोग की आवश्यकता होती है। मल्टी-प्लेटफ़ॉर्म इंस्टॉलर जैसे कि InstallAnywhere इस आवश्यकता को पूरा करता है।
* क्रॉस-प्लेटफ़ॉर्म निष्पादन वातावरण में क्रॉस-प्लेटफ़ॉर्म सुरक्षा दोष हो सकते हैं, जिससे क्रॉस-प्लेटफ़ॉर्म मैलवेयर के लिए एक उपजाऊ वातावरण बन सकता है।<ref>{{Cite web|url=https://www.theverge.com/2020/1/14/21065122/microsoft-windows-7-end-of-support-lifecycle-millions-pcs|title=Microsoft bids farewell to Windows 7 and the millions of PCs that still run it|last=Warren|first=Tom|date=2020-01-14|website=The Verge|language=en|access-date=2020-02-06}}</ref>
* क्रॉस-प्लेटफ़ॉर्म निष्पादन परिवेशों को क्रॉस-प्लेटफ़ॉर्म सुरक्षा खामियों का सामना करना पड़ सकता है, जिससे क्रॉस-प्लेटफ़ॉर्म मैलवेयर के लिए एक उपजाऊ वातावरण बन सकता है।<ref>{{Cite web|url=https://www.theverge.com/2020/1/14/21065122/microsoft-windows-7-end-of-support-lifecycle-millions-pcs|title=Microsoft bids farewell to Windows 7 and the millions of PCs that still run it|last=Warren|first=Tom|date=2020-01-14|website=The Verge|language=en|access-date=2020-02-06}}</ref>
 
 
==यह भी देखें==
==यह भी देखें==
* क्रॉस-प्लेटफ़ॉर्म प्ले
* क्रॉस-प्लेटफ़ॉर्म प्ले

Revision as of 10:00, 4 November 2022

कंप्यूटिंग में, क्रॉस-प्लेटफ़ॉर्म सॉफ़्टवेयर (जिसे मल्टी-प्लेटफ़ॉर्म सॉफ़्टवेयर, प्लेटफ़ॉर्म-अज्ञेय सॉफ़्टवेयर या प्लेटफ़ॉर्म-स्वतंत्र सॉफ़्टवेयर भी कहा जाता है) कंप्यूटर सॉफ़्टवेयर है जिसे कई कंप्यूटिंग प्लेटफ़ॉर्म में काम करने के लिए डिज़ाइन किया गया है।[1] कुछ क्रॉस-प्लेटफ़ॉर्म सॉफ़्टवेयर के लिए प्रत्येक प्लेटफ़ॉर्म के लिए एक अलग बिल्ड की आवश्यकता होती है, लेकिन कुछ को विशेष तैयारी के बिना किसी भी प्लेटफ़ॉर्म पर सीधे चलाया जा सकता है, एक व्याख्या की गई भाषा में लिखा जा रहा है या पोर्टेबल बाइटकोड में संकलित किया जा सकता है जिसके लिए दुभाषिए या रन-टाइम पैकेज सामान्य या मानक हैं। सभी समर्थित प्लेटफॉर्म के घटक।[2]

उदाहरण के लिए, एक क्रॉस-प्लेटफ़ॉर्म एप्लिकेशन Microsoft Windows, Linux और macOS पर चल सकता है। क्रॉस-प्लेटफ़ॉर्म सॉफ़्टवेयर कई प्लेटफ़ॉर्म पर, या कम से कम दो पर चल सकता है। क्रॉस-प्लेटफ़ॉर्म विकास के लिए कुछ ढांचे कोडनेम वन, कीवी, क्यूटी, फ़्लटर, नेटिवस्क्रिप्ट, ज़ैमरिन, फोनगैप, आयोनिक और रिएक्ट नेटिव हैं।

प्लेटफॉर्म

प्लेटफ़ॉर्म उस प्रकार के प्रोसेसर (CPU) या अन्य हार्डवेयर को संदर्भित कर सकता है जिस पर एक ऑपरेटिंग सिस्टम (OS) या एप्लिकेशन चलता है, OS का प्रकार, या दोनों का संयोजन।[3] एक सामान्य प्लेटफॉर्म का एक उदाहरण x86 आर्किटेक्चर पर चलने वाला माइक्रोसॉफ्ट विंडोज ओएस है। अन्य प्रसिद्ध डेस्कटॉप प्लेटफॉर्म लिनक्स/यूनिक्स और मैकोज़ हैं - ये दोनों स्वयं क्रॉस-प्लेटफ़ॉर्म हैं।[3]हालांकि, स्मार्टफोन जैसे कई डिवाइस हैं जो प्लेटफॉर्म भी हैं। एप्लिकेशन को किसी विशेष प्लेटफ़ॉर्म की सुविधाओं पर निर्भर करने के लिए लिखा जा सकता है - या तो हार्डवेयर, ओएस, या वर्चुअल मशीन (वीएम) जिस पर वह चलता है। उदाहरण के लिए, जावा प्लेटफॉर्म एक सामान्य वीएम प्लेटफॉर्म है जो कई ओएस और हार्डवेयर प्रकारों पर चलता है।[4]

हार्डवेयर

एक हार्डवेयर प्लेटफॉर्म एक निर्देश सेट आर्किटेक्चर को संदर्भित कर सकता है। उदाहरण के लिए: x86 आर्किटेक्चर और इसके वेरिएंट जैसे IA-32 और x86-64। ये मशीनें अक्सर माइक्रोसॉफ्ट विंडोज का एक संस्करण चलाती हैं,[5]हालांकि वे लिनक्स, ओपनबीएसडी, नेटबीएसडी, मैकओएस और फ्रीबीएसडी सहित अन्य ओएस चला सकती हैं।

32-बिट एआरएम आर्किटेक्चर (और नया 64-बिट संस्करण) स्मार्टफोन और टैबलेट कंप्यूटर पर आम है, जो एंड्रॉइड, आईओएस और अन्य मोबाइल ऑपरेटिंग सिस्टम चलाते हैं।

सॉफ़्टवेयर

एक सॉफ्टवेयर प्लेटफॉर्म या तो एक ओएस या प्रोग्रामिंग वातावरण हो सकता है, हालांकि आमतौर पर यह दोनों का संयोजन होता है। एक अपवाद जावा है, जो जावा बाइटकोड को निष्पादित करने के लिए ओएस-स्वतंत्र वीएम का उपयोग करता है। सॉफ्टवेयर प्लेटफॉर्म के उदाहरण हैं:

  • ब्लैकबेरी 10
  • स्मार्टफोन और टैबलेट कंप्यूटर (x86, एआरएम) के लिए एंड्रॉइड (ऑपरेटिंग सिस्टम)
  • आईओएस (एआरएम)
  • माइक्रोसॉफ्ट विंडोज (x86, एआरएम)
    • माइक्रोसॉफ्ट का कॉमन लैंग्वेज इंफ्रास्ट्रक्चर (सीएलआई), जिसे .NET फ्रेमवर्क के नाम से भी जाना जाता है
    • क्रॉस-प्लेटफ़ॉर्म संस्करण मोनो (सॉफ़्टवेयर) (पहले नोवेल द्वारा और अब ज़ामरीन द्वारा)[6])
  • जावा (प्रोग्रामिंग भाषा)
  • वेब ब्राउज़र - कमोबेश एक-दूसरे के साथ संगत, जावास्क्रिप्ट वेब-ऐप्स चला रहे हैं
  • Linux (x86, PowerPC, ARM, और अन्य आर्किटेक्चर)
  • मैकोज़ (x86, पावरपीसी (10.5 और नीचे पर), और एआरएम[7] (Apple सिलिकॉन या 11.0 और उससे अधिक पर))
  • मेंडिक्स
  • सोलारिस (ऑपरेटिंग सिस्टम) (SPARC, x86)
  • सिम्बियनओएस
  • स्पार्क
  • प्लेस्टेशन 4 (x86), प्लेस्टेशन 3 (पावरपीसी) और प्लेस्टेशन वीटा (एआरएम)
  • यूनिक्स
  • एक्सबॉक्स
मामूली/ऐतिहासिक
  • AmigaOS (m68k), AmigaOS 4 (PowerPC), AROS (x86, PowerPC, m68k), MorphOS (PowerPC)
  • अटारी टीओएस, मिंट
  • बीएसडी (कई प्लेटफॉर्म; नेटबीएसडीनेट देखें,[clarification needed] उदाहरण के लिए)
  • x86 पर डॉस-टाइप सिस्टम: MS-DOS, PC DOS, DR-DOS, FreeDOS
  • ओएस/2, ईकॉमस्टेशन

जावा <स्पैन क्लास= एंकर आईडी= जावा प्लेटफॉर्म>

जावा भाषा को आमतौर पर वीएम पर चलने के लिए संकलित किया जाता है जो जावा प्लेटफॉर्म का हिस्सा है। जावा वीएम (जेवीएम) सॉफ्टवेयर में लागू एक सीपीयू है, जो सभी जावा कोड चलाता है। यह समान कोड को JVM को लागू करने वाले सभी सिस्टम पर चलने में सक्षम बनाता है। जावा सॉफ्टवेयर को हार्डवेयर आधारित जावा प्रोसेसर द्वारा निष्पादित किया जा सकता है। इसका उपयोग ज्यादातर एम्बेडेड सिस्टम में किया जाता है।

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

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

कार्यान्वयन

सॉफ़्टवेयर को क्रॉस-प्लेटफ़ॉर्म माना जाने के लिए, इसे एक से अधिक कंप्यूटर आर्किटेक्चर या OS पर कार्य करना चाहिए। ऐसे सॉफ़्टवेयर को विकसित करना एक समय लेने वाला कार्य हो सकता है क्योंकि अलग-अलग OS में अलग-अलग एप्लिकेशन प्रोग्रामिंग इंटरफेस (API) होते हैं। उदाहरण के लिए, Linux Windows से भिन्न API का उपयोग करता है।

हो सकता है कि एक OS के लिए लिखा गया सॉफ़्टवेयर उन सभी आर्किटेक्चर पर स्वचालित रूप से काम न करे जो OS समर्थित करता है। एक उदाहरण OpenOffice.org है, जो 2006 में मूल रूप से AMD64 या Intel 64 प्रोसेसर पर x86-64 मानकों को लागू करने पर नहीं चलता था; 2012 तक इसे "ज्यादातर" इन प्रणालियों में पोर्ट किया गया था।[8] सिर्फ इसलिए कि सॉफ्टवेयर एक लोकप्रिय प्रोग्रामिंग भाषा जैसे सी या सी ++ में लिखा गया है, इसका मतलब यह नहीं है कि यह उन सभी ओएस पर चलेगा जो उस भाषा का समर्थन करते हैं- या यहां तक ​​कि एक ही ओएस के विभिन्न संस्करणों पर भी।

वेब अनुप्रयोग

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

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

उन्नत वेब अनुप्रयोगों के प्रमुख उदाहरणों में जीमेल का वेब इंटरफेस, ए9.कॉम, गूगल मैप्स वेबसाइट और माइक्रोसॉफ्ट की लाइव सर्च सर्विस (अब बिंग) शामिल हैं। ऐसे एप्लिकेशन नियमित रूप से केवल लोकप्रिय वेब ब्राउज़र के हाल के संस्करणों में पाई जाने वाली अतिरिक्त सुविधाओं पर निर्भर करते हैं। इन सुविधाओं में अजाक्स, जावास्क्रिप्ट, डायनेमिक एचटीएमएल, एसवीजी, और समृद्ध वेब अनुप्रयोगों के अन्य घटक शामिल हैं। पुराने संस्करणों में अक्सर इनकी कमी होती है।

डिज़ाइन

संगतता और कार्यक्षमता के प्रतिस्पर्धी हितों के कारण, कई डिज़ाइन रणनीतियाँ सामने आई हैं।

कई सॉफ्टवेयर सिस्टम एक स्तरित आर्किटेक्चर का उपयोग करते हैं जहां प्लेटफॉर्म-निर्भर कोड ऊपरी और सबसे निचली परतों तक ही सीमित होता है।

ससम्मान पद अवनति

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

एकाधिक कोडबेस

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

सिंगल कोडबेस

यह रणनीति एक कोडबेस होने पर निर्भर करती है जिसे कई प्लेटफ़ॉर्म-विशिष्ट स्वरूपों में संकलित किया जा सकता है। एक तकनीक सशर्त संकलन है। इस तकनीक के साथ, सभी प्लेटफार्मों के लिए सामान्य कोड दोहराया नहीं जाता है। कोड के ब्लॉक जो केवल कुछ प्लेटफॉर्म के लिए प्रासंगिक होते हैं, उन्हें सशर्त बनाया जाता है, ताकि जरूरत पड़ने पर ही उनकी व्याख्या या संकलन किया जा सके। एक अन्य तकनीक कार्यक्षमता का पृथक्करण है, जो ब्राउज़र या ओएस द्वारा समर्थित कार्यक्षमता को अक्षम करता है, जबकि उपयोगकर्ता को अभी भी एक पूर्ण एप्लिकेशन प्रदान करता है। (यह भी देखें: चिंताओं का पृथक्करण।) इस तकनीक का उपयोग वेब विकास में किया जाता है जहां व्याख्या किए गए कोड (जैसा कि स्क्रिप्टिंग भाषाओं में) अलग-अलग ब्लॉकों को सशर्त रूप से निष्पादित करने के लिए चल रहे प्लेटफॉर्म को क्वेरी कर सकते हैं।[9]

तृतीय-पक्ष पुस्तकालय

तृतीय-पक्ष पुस्तकालय विक्रेता लॉक-इन की कीमत पर एकल, एकीकृत एपीआई के पीछे क्लाइंट भेदभाव की जटिलताओं को छिपाकर क्रॉस-प्लेटफ़ॉर्म क्षमता को सरल बनाने का प्रयास करते हैं।

प्रतिक्रियात्मक वेब डिज़ाइन

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

परिक्षण

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

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

पारंपरिक अनुप्रयोग

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

बाइनरी सॉफ्टवेयर

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

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

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

पोर्टिंग का एक विकल्प क्रॉस-प्लेटफ़ॉर्म वर्चुअलाइजेशन है, जहां एक प्लेटफॉर्म के लिए संकलित एप्लिकेशन स्रोत कोड या बायनेरिज़ के संशोधन के बिना दूसरे पर चल सकते हैं। उदाहरण के तौर पर, ऐप्पल का रोसेटा, जो इंटेल-आधारित मैकिंटोश कंप्यूटरों में बनाया गया है, मैक की पिछली पीढ़ी के लिए संकलित अनुप्रयोगों को चलाता है जो पावरपीसी सीपीयू का इस्तेमाल करते थे। एक अन्य उदाहरण IBM PowerVM Lx86 है, जो Linux/x86 अनुप्रयोगों को Linux/Power OS पर असंशोधित चलाने की अनुमति देता है।

क्रॉस-प्लेटफ़ॉर्म बाइनरी सॉफ़्टवेयर का उदाहरण:

  • लिब्रे ऑफिस ऑफिस सुइट माइक्रोसॉफ्ट विंडोज, मैकओएस, कई लिनक्स वितरण, फ्रीबीएसडी, नेटबीएसडी, ओपनबीएसडी, एंड्रॉइड, आईओएस, आईपैडओएस, क्रोम ओएस, वेब-आधारित कोलाबोरा ऑनलाइन और कई अन्य के लिए बनाया गया है।[11][12] इनमें से कई IA-32, x86-64, ARM (ARMel, ARMhf, ARM64), MIPS, MIPSel, PowerPC, ppc64el, और S390x सहित प्रोसेसर आर्किटेक्चर के साथ कई हार्डवेयर प्लेटफॉर्म पर समर्थित हैं।"Nextcloud Ubuntu Appliance adds Collabora Online to Raspberry Pi image". MuyLinux. 2021-03-26. Retrieved 2021-03-30. the first viable self-hosted web office solution for the popular Raspberry Pi 4 platform{{cite news}}: CS1 maint: url-status (link)</ref>

लिपियों और व्याख्या की गई भाषाएं

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

बाइनरी निष्पादन योग्य फ़ाइलों के विपरीत, एक ही स्क्रिप्ट का उपयोग उन सभी कंप्यूटरों पर किया जा सकता है जिनके पास स्क्रिप्ट की व्याख्या करने के लिए सॉफ़्टवेयर है। ऐसा इसलिए है क्योंकि स्क्रिप्ट आम तौर पर एक टेक्स्ट फ़ाइल में सादे पाठ में संग्रहीत होती है। कुछ मामूली मुद्दे हो सकते हैं, जैसे कि एक नई लाइन कैरेक्टर का प्रतिनिधित्व।

कुछ लोकप्रिय क्रॉस-प्लेटफ़ॉर्म स्क्रिप्टिंग भाषाएँ हैं:

  • बैश - एक यूनिक्स शेल आमतौर पर लिनक्स और अन्य आधुनिक यूनिक्स जैसी प्रणालियों के साथ-साथ विंडोज पर सिग्विन पॉज़िक्स संगतता परत के माध्यम से चलता है।
  • पर्ल - पहली बार 1987 में जारी किया गया। सीजीआई प्रोग्रामिंग, छोटे सिस्टम प्रशासन कार्यों और बहुत कुछ के लिए उपयोग किया जाता है।
  • PHP - ज्यादातर वेब अनुप्रयोगों के लिए उपयोग किया जाता है।
  • पायथन - एक भाषा जो रन-टाइम दक्षता के बजाय तेजी से अनुप्रयोग विकास और लेखन में आसानी पर केंद्रित है।
  • रूबी - एक वस्तु-उन्मुख भाषा जिसका उद्देश्य पढ़ने में आसान होना है। रूबी ऑन रेल्स के माध्यम से वेब पर भी इस्तेमाल किया जा सकता है।
  • टीसीएल - एक गतिशील प्रोग्रामिंग भाषा, वेब और डेस्कटॉप अनुप्रयोगों, नेटवर्किंग, प्रशासन, परीक्षण और कई अन्य सहित उपयोगों की एक विस्तृत श्रृंखला के लिए उपयुक्त है।

वीडियो गेम

क्रॉस-प्लेटफ़ॉर्म या मल्टी-प्लेटफ़ॉर्म एक ऐसा शब्द है जो वीडियो गेम कंसोल की एक श्रृंखला पर जारी किए गए वीडियो गेम पर भी लागू हो सकता है। क्रॉस-प्लेटफ़ॉर्म गेम के उदाहरणों में शामिल हैं: माइनर 2049er, टॉम्ब रेडर: लीजेंड, फीफा (वीडियो गेम सीरीज़), एनएचएल सीरीज़ और माइनक्राफ्ट।

प्रत्येक को विभिन्न प्रकार के गेमिंग प्लेटफॉर्म, जैसे कि Wii, PlayStation 3, Xbox 360, पर्सनल कंप्यूटर और मोबाइल डिवाइस पर रिलीज़ किया गया है।

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

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

क्रॉस-प्लेटफ़ॉर्म प्ले

कई डेवलपर्स ने विभिन्न प्लेटफार्मों का उपयोग करते हुए ऑनलाइन गेम खेलने के तरीके लागू किए हैं। Psyonix, Epic Games, Microsoft, और Valve Corporation सभी के पास ऐसी तकनीक है जो Xbox 360 और PlayStation 3 गेमर्स को पीसी गेमर्स के साथ खेलने की अनुमति देती है, जिससे उपभोक्ताओं को किस प्लेटफॉर्म का उपयोग करना है। पीसी और कंसोल गेम के बीच इस स्तर की अन्तरक्रियाशीलता की अनुमति देने वाला पहला गेम क्वैक 3 था।[13] क्रॉस-प्लेटफ़ॉर्म ऑनलाइन प्ले की सुविधा वाले गेम में रॉकेट लीग, फ़ाइनल फ़ैंटेसी XIV: ए रियलम रीबॉर्न, स्ट्रीट फाइटर वी, किलर इंस्टिंक्ट (2013 वीडियो गेम), पैरागॉन (वीडियो गेम) और फैबल फॉर्च्यून, और माइनक्राफ्ट शामिल हैं। 10, VR संस्करण, Minecraft - Pocket Edition और Xbox One।

प्रोग्रामिंग

क्रॉस-प्लेटफ़ॉर्म प्रोग्रामिंग एक से अधिक प्लेटफ़ॉर्म पर काम करने के लिए जानबूझकर सॉफ़्टवेयर लिखने का अभ्यास है।

दृष्टिकोण

क्रॉस-प्लेटफ़ॉर्म एप्लिकेशन लिखने के विभिन्न तरीके हैं। एक तरीका अलग-अलग स्रोत ट्री में एक ही सॉफ़्टवेयर के कई संस्करण बनाना है- दूसरे शब्दों में, किसी एप्लिकेशन के Microsoft Windows संस्करण में स्रोत कोड फ़ाइलों का एक सेट और Apple Macintosh संस्करण दूसरा हो सकता है, जबकि एक मुफ़्त और ओपन-सोर्स सॉफ़्टवेयर * निक्स सिस्टम में एक तिहाई हो सकता है। हालांकि यह सीधा है, केवल एक प्लेटफॉर्म के लिए विकसित होने की तुलना में बड़ी टीम को भुगतान करने या उत्पादों को अधिक धीरे-धीरे जारी करने में अधिक खर्च हो सकता है। इसके परिणामस्वरूप और अधिक बग्स को ट्रैक किया जा सकता है और उन्हें ठीक किया जा सकता है।

एक अन्य तरीका सॉफ्टवेयर का उपयोग करना है जो प्लेटफार्मों के बीच के अंतर को छुपाता है। यह अमूर्त परत प्लेटफॉर्म से एप्लिकेशन को इंसुलेट करती है। ऐसे एप्लिकेशन प्लेटफॉर्म अज्ञेयवादी हैं। JVM पर चलने वाले एप्लिकेशन इस तरह से बनाए जाते हैं।

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

टूलकिट और परिवेश

कई उपकरण हैं[14][15] क्रॉस-प्लेटफ़ॉर्म प्रोग्रामिंग की प्रक्रिया में सहायता के लिए उपलब्ध:

  • 8 वीं (भाषा): एक विकास भाषा जो जूस को अपनी जीयूआई परत के रूप में उपयोग करती है। यह वर्तमान में एंड्रॉइड, आईओएस, विंडोज, मैकओएस, लिनक्स और रास्पबेरी पाई का समर्थन करता है।
  • अनंत कंप्यूटिंग: एक मोबाइल एप्लिकेशन प्लेटफॉर्म जो सभी भारतीय भाषाओं में काम करता है, जिसमें उनके कीबोर्ड भी शामिल हैं, और सभी ओएस में ऐप वॉलेट और मूल प्रदर्शन का भी समर्थन करता है।
  • AppearIQ: एक ढांचा जो उद्यम वातावरण में ऐप विकास और परिनियोजन के वर्कफ़्लो का समर्थन करता है। मूल रूप से विकसित कंटेनर एक एपीआई से एचटीएमएल 5 कोड के माध्यम से मोबाइल उपकरणों या टैबलेट की हार्डवेयर सुविधाओं को प्रस्तुत करते हैं और इस प्रकार विभिन्न प्लेटफार्मों पर चलने वाले मोबाइल ऐप के विकास की सुविधा प्रदान करते हैं।
  • बोडेन (सॉफ्टवेयर): C++ में लिखा गया UI फ्रेमवर्क।
  • काहिरा (ग्राफिक्स): एक मुफ्त सॉफ्टवेयर लाइब्रेरी जिसका उपयोग वेक्टर ग्राफिक्स-आधारित, डिवाइस-स्वतंत्र एपीआई प्रदान करने के लिए किया जाता है। यह कई अलग-अलग बैकएंड में 2-आयामी ड्राइंग के लिए प्राइमेटिव प्रदान करने के लिए डिज़ाइन किया गया है। काहिरा सी में लिखा गया है और कई प्रोग्रामिंग भाषाओं के लिए बाध्यकारी है।
  • Cocos2d: 2D और सरल 3D क्रॉस-प्लेटफ़ॉर्म गेम और एप्लिकेशन विकसित करने के लिए एक ओपन-सोर्स टूलकिट और गेम इंजन।
  • कोडनेम वन: जावा और कोटलिन डेवलपर्स के लिए एक ओपन-सोर्स राइट वन्स रन एनीवेयर (WORA) फ्रेमवर्क।
  • डेल्फी (प्रोग्रामिंग भाषा): एक आईडीई जो विकास के लिए पास्कल-आधारित भाषा का उपयोग करता है। यह एंड्रॉइड, आईओएस, विंडोज, मैकओएस, लिनक्स को सपोर्ट करता है।
  • Ecere SDK: एक GUI और 2D/3D ग्राफिक्स टूलकिट और IDE, जो EC (प्रोग्रामिंग भाषा) में लिखा गया है और C और Python जैसी अतिरिक्त भाषाओं के समर्थन के साथ है। यह Emscripten या Binaryen (WebAssembly) के माध्यम से Linux, FreeBSD, Windows, Android, macOS और वेब को सपोर्ट करता है।
  • ग्रहण आईडीई: एक खुला स्रोत विकास वातावरण। जावा में एक विन्यास योग्य वास्तुकला के साथ लागू किया गया जो सॉफ्टवेयर विकास के लिए कई उपकरणों का समर्थन करता है। ऐड-ऑन जावा और सी++ सहित कई भाषाओं के लिए उपलब्ध हैं।
  • FLTK: एक ओपन-सोर्स टूलकिट, लेकिन अधिक हल्का क्योंकि यह खुद को GUI तक सीमित रखता है।
  • स्पंदन (सॉफ्टवेयर): Google द्वारा विकसित Android और iOS के लिए एक क्रॉस-प्लेटफ़ॉर्म UI फ्रेमवर्क।
  • fpGUI: एक ओपन-सोर्स विजेट टूलकिट जो पूरी तरह से ऑब्जेक्ट पास्कल में लागू किया गया है। यह वर्तमान में लिनक्स, विंडोज और कुछ विंडोज सीई का समर्थन करता है।
  • जीनएक्सस: क्रॉस-प्लेटफ़ॉर्म एप्लिकेशन निर्माण और परिनियोजन के लिए एक विंडोज़ रैपिड सॉफ़्टवेयर डेवलपमेंट सॉल्यूशन जो ज्ञान प्रतिनिधित्व और सी शार्प (प्रोग्रामिंग भाषा) का समर्थन करता है | एंड्रॉइड और ब्लैकबेरी स्मार्ट डिवाइस सहित सी #, कोबोल, जावा (प्रोग्रामिंग भाषा), ऑब्जेक्टिव-सी के लिए एप्पल इंक. मोबाइल डिवाइस, आईबीएम आरपीजी, रूबी (प्रोग्रामिंग भाषा), विजुअल बेसिक और विजुअल फॉक्सप्रो।
  • GLBasic: एक बेसिक बोली और कंपाइलर जो C++ कोड जेनरेट करता है। इसमें कई प्लेटफार्मों के लिए क्रॉस कंपाइलर शामिल हैं और कई प्लेटफॉर्म (विंडोज, मैक, लिनक्स, एंड्रॉइड, आईओएस और कुछ विदेशी हैंडहेल्ड) का समर्थन करते हैं।
  • गोडोट (गेम इंजन): एक एसडीके जो गोडोट इंजन का उपयोग करता है।
  • GTK+: X11 और Microsoft Windows के साथ यूनिक्स जैसी प्रणालियों के लिए एक ओपन-सोर्स विजेट टूलकिट।
  • Haxe: एक ओपन-सोर्स भाषा।
  • जूस: C++ में लिखा गया एक एप्लिकेशन फ्रेमवर्क, कोड में बिना किसी बदलाव के, कई सिस्टम्स (Microsoft Windows, POSIX, macOS) पर नेटिव सॉफ्टवेयर लिखने के लिए इस्तेमाल किया जाता है।
  • किवी (फ्रेमवर्क): एक ओपन-सोर्स क्रॉस-प्लेटफॉर्म यूआई फ्रेमवर्क जो पायथन (प्रोग्रामिंग भाषा) में लिखा गया है। यह एंड्रॉइड (ऑपरेटिंग सिस्टम), आईओएस, लिनक्स, मैकओएस, माइक्रोसॉफ्ट विंडोज और रास्पबेरी पाई को सपोर्ट करता है।
  • लीडटूल: विंडोज, आईओएस, मैकओएस, एंड्रॉइड, लिनक्स और वेब एप्लिकेशन में मान्यता, दस्तावेज़, चिकित्सा, इमेजिंग और मल्टीमीडिया तकनीकों को एकीकृत करने के लिए क्रॉस-प्लेटफ़ॉर्म एसडीके लाइब्रेरी।[16]
  • LiveCode: हाइपरटॉक से प्रेरित एक व्यावसायिक क्रॉस-प्लेटफ़ॉर्म रैपिड एप्लिकेशन डेवलपमेंट भाषा।
  • लाजर (आईडीई): फ्रीपास्कल कंपाइलर के लिए एक प्रोग्रामिंग वातावरण। यह स्व-स्थायी ग्राफिकल और कंसोल अनुप्रयोगों के निर्माण का समर्थन करता है और Linux, MacOSX, iOS, Android, WinCE, Windows और WEB पर चलता है।
  • मैक्स (सॉफ़्टवेयर)|मैक्स/एमएसपी: एक विज़ुअल प्रोग्रामिंग भाषा जो प्लेटफ़ॉर्म-स्वतंत्र कोड को प्लेटफ़ॉर्म-विशिष्ट रनटाइम वातावरण के साथ macOS और Windows A क्रॉस-प्लेटफ़ॉर्म Android रनटाइम के लिए अनुप्रयोगों में समाहित करती है। यह अनमॉडिफाइड एंड्रॉइड ऐप्स को आईओएस और मैकओएस पर मूल रूप से चलाने की अनुमति देता है
  • मेंडिक्स: एक क्लाउड-आधारित लो-कोड एप्लिकेशन डेवलपमेंट प्लेटफॉर्म।
  • मोनोक्रॉस: एक ओपन-सोर्स मॉडल-व्यू-कंट्रोलर डिज़ाइन पैटर्न जहां मॉडल और कंट्रोलर क्रॉस-प्लेटफ़ॉर्म हैं लेकिन दृश्य प्लेटफ़ॉर्म-विशिष्ट है।[17]
  • मोनो (सॉफ्टवेयर): माइक्रोसॉफ्ट .NET का एक ओपन-सोर्स क्रॉस-प्लेटफॉर्म संस्करण (एप्लिकेशन और प्रोग्रामिंग भाषाओं के लिए एक ढांचा)
  • MoSync: C++ परिवार में मोबाइल प्लेटफ़ॉर्म ऐप विकास के लिए एक ओपन-सोर्स SDK।
  • मोज़िला एप्लिकेशन फ्रेमवर्क: मैकओएस, विंडोज और लिनक्स अनुप्रयोगों के निर्माण के लिए एक ओपन-सोर्स प्लेटफॉर्म।
  • एंड्रॉइड और आईओएस विकास के लिए एक क्रॉस-प्लेटफॉर्म जावास्क्रिप्ट / टाइपस्क्रिप्ट फ्रेमवर्क।
  • ओपनजीएल: एक 3डी ग्राफिक्स लाइब्रेरी।
  • पिक्सेल गेम मेकर एमवी: विंडोज़ और निन्टेंडो स्विच गेम विकसित करने के लिए विंडोज़ के लिए एक मालिकाना 2डी गेम डेवलपमेंट सॉफ्टवेयर।
  • PureBasic: macOS, Windows और Linux अनुप्रयोगों के निर्माण के लिए एक मालिकाना भाषा और IDE।
  • ReNative: रिएक्ट नेटिव के साथ मल्टी-प्लेटफ़ॉर्म प्रोजेक्ट बनाने के लिए यूनिवर्सल डेवलपमेंट SDK. नवीनतम iOS, TVOS, Android, Android TV, Web, Tizen TV, Tizen Watch, LG webOS, macOS/OSX, Windows, KaiOS, Firefox OS और Firefox TV प्लेटफॉर्म शामिल हैं।
  • क्यूटी (टूलकिट): यूनिक्स जैसी प्रणालियों के लिए एक्स11, माइक्रोसॉफ्ट विंडोज, मैकओएस और अन्य प्रणालियों के लिए एक एप्लीकेशन फ्रेमवर्क और विजेट टूलकिट - मालिकाना और ओपन-सोर्स लाइसेंस दोनों के तहत उपलब्ध है।
  • सरल और तेज़ मल्टीमीडिया लाइब्रेरी: एक मल्टीमीडिया C++ एप्लिकेशन प्रोग्रामिंग इंटरफ़ेस जो ग्राफिक्स, इनपुट, ऑडियो आदि के लिए निम्न और उच्च स्तर की पहुंच प्रदान करता है।
  • सिंपल डायरेक्टमीडिया लेयर: सी में लिखी गई एक ओपन-सोर्स मल्टीमीडिया लाइब्रेरी जो विभिन्न प्लेटफॉर्म के ग्राफिक्स, साउंड और इनपुट एप्लिकेशन प्रोग्रामिंग इंटरफेस पर एक एब्स्ट्रैक्शन बनाती है। यह लिनक्स, विंडोज और मैकओएस सहित ओएस पर चलता है और इसका उद्देश्य गेम और मल्टीमीडिया एप्लिकेशन है।
  • स्मार्टफेस: जावास्क्रिप्ट कोड एडिटर के साथ WYSIWYG डिज़ाइन एडिटर का उपयोग करके Android और iOS के लिए मोबाइल एप्लिकेशन बनाने के लिए एक देशी ऐप डेवलपमेंट टूल।
  • टीसीएल / टीके
  • अल्टीमेट++: एक सी++ रैपिड एप्लिकेशन डेवलपमेंट फ्रेमवर्क जो प्रोग्रामर की उत्पादकता पर केंद्रित है। इसमें पुस्तकालयों का एक सेट (जीयूआई, एसक्यूएल, आदि..), और एक एकीकृत विकास वातावरण शामिल है। यह विंडोज और यूनिक्स जैसे ओएस-एस को सपोर्ट करता है।
  • यूनिटी (गेम इंजन): एक और क्रॉस-प्लेटफॉर्म एसडीके जो यूनिटी इंजन का उपयोग करता है।
  • यूनो प्लेटफॉर्म: विंडोज, मैकओएस, आईओएस, एंड्रॉइड, वेबअसेंबली और लिनक्स सी # का उपयोग कर रहे हैं।
  • अवास्तविक इंजन: एक क्रॉस-प्लेटफ़ॉर्म एसडीके जो अवास्तविक इंजन का उपयोग करता है।
  • वी-प्ले इंजन: वी-प्ले लोकप्रिय क्यूटी ढांचे पर आधारित एक क्रॉस-प्लेटफॉर्म विकास एसडीके है। V-Play ऐप्स और गेम Qt ​​Creator के भीतर बनाए जाते हैं।
  • वेवमेकर: उत्तरदायी वेब और हाइब्रिड मोबाइल (एंड्रॉइड और आईओएस) एप्लिकेशन बनाने के लिए एक कम-कोड विकास उपकरण।
  • विनडेव: विंडोज, लिनक्स, नेट और जावा, और वेब ब्राउज़र के लिए एक एकीकृत विकास पर्यावरण। व्यापार और औद्योगिक अनुप्रयोगों के लिए अनुकूलित।
  • wxwidgets: एक ओपन-सोर्स विजेट टूलकिट जो एक एप्लीकेशन फ्रेमवर्क भी है।[18] यह X11, Microsoft Windows और macOS के साथ यूनिक्स जैसे सिस्टम पर चलता है।
  • Xojo: एक RAD IDE जो डेस्कटॉप, वेब और iOS ऐप बनाने के लिए ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग भाषा का उपयोग करता है। Xojo macOS, Windows, Linux और रास्पबेरी पाई के लिए देशी, संकलित डेस्कटॉप ऐप बनाती है। यह संकलित वेब ऐप बनाता है जिसे स्टैंडअलोन सर्वर के रूप में या CGI के माध्यम से चलाया जा सकता है। और इसने हाल ही में देशी iOS ऐप बनाने की क्षमता जोड़ी है।

चुनौतियाँ

क्रॉस-प्लेटफ़ॉर्म सॉफ़्टवेयर विकसित करते समय कई चुनौतियाँ हैं।

  • क्रॉस-प्लेटफ़ॉर्म अनुप्रयोगों का परीक्षण करना काफी अधिक जटिल हो सकता है, क्योंकि विभिन्न प्लेटफ़ॉर्म थोड़े भिन्न व्यवहार या सूक्ष्म बग प्रदर्शित कर सकते हैं। इस समस्या ने कुछ डेवलपर्स को क्रॉस-प्लेटफ़ॉर्म विकास को "एक बार लिखें, हर जगह डीबग करें", सन माइक्रोसिस्टम्स पर एक टेक "एक बार लिखें, कहीं भी चलाएं" मार्केटिंग नारा के रूप में उपहास करने के लिए प्रेरित किया है।
  • डेवलपर्स अक्सर सुविधाओं के सबसे कम सामान्य भाजक का उपयोग करने के लिए प्रतिबंधित होते हैं जो सभी प्लेटफार्मों पर उपलब्ध होते हैं। यह एप्लिकेशन के प्रदर्शन में बाधा डाल सकता है या डेवलपर्स को प्रत्येक प्लेटफॉर्म की सबसे उन्नत सुविधाओं का उपयोग करने से रोक सकता है।
  • अलग-अलग प्लेटफॉर्म में अक्सर अलग-अलग यूजर इंटरफेस कन्वेंशन होते हैं, जो क्रॉस-प्लेटफॉर्म एप्लिकेशन हमेशा समायोजित नहीं होते हैं। उदाहरण के लिए, macOS और GNOME के ​​लिए विकसित किए गए एप्लिकेशन को विंडो या डायलॉग के दाईं ओर सबसे महत्वपूर्ण बटन रखना चाहिए, जबकि Microsoft Windows और KDE में विपरीत परंपरा है। हालांकि इनमें से कई अंतर सूक्ष्म हैं, एक क्रॉस-प्लेटफ़ॉर्म एप्लिकेशन जो इन सम्मेलनों के अनुरूप नहीं है, उपयोगकर्ता के लिए भद्दा या विदेशी लग सकता है। तेजी से काम करते समय, इस तरह के विरोधी सम्मेलनों के परिणामस्वरूप डेटा हानि भी हो सकती है, जैसे एक संवाद बॉक्स में यह पुष्टि करना कि परिवर्तनों को सहेजना या त्यागना है या नहीं।
  • स्क्रिप्टिंग भाषाओं और वीएम बाइटकोड को हर बार उपयोग किए जाने पर मूल निष्पादन योग्य कोड में अनुवादित किया जाना चाहिए, एक प्रदर्शन जुर्माना लगाया जाता है। जस्ट-इन-टाइम संकलन जैसी तकनीकों का उपयोग करके इस दंड को कम किया जा सकता है; लेकिन कुछ कम्प्यूटेशनल ओवरहेड अपरिहार्य हो सकते हैं।
  • विभिन्न प्लेटफार्मों को मूल पैकेज प्रारूपों जैसे आरपीएम और एमएसआई के उपयोग की आवश्यकता होती है। मल्टी-प्लेटफ़ॉर्म इंस्टॉलर जैसे कि InstallAnywhere इस आवश्यकता को पूरा करता है।
  • क्रॉस-प्लेटफ़ॉर्म निष्पादन परिवेशों को क्रॉस-प्लेटफ़ॉर्म सुरक्षा खामियों का सामना करना पड़ सकता है, जिससे क्रॉस-प्लेटफ़ॉर्म मैलवेयर के लिए एक उपजाऊ वातावरण बन सकता है।[19]

यह भी देखें

  • क्रॉस-प्लेटफ़ॉर्म प्ले
  • हार्डवेयर-अज्ञेयवादी
  • सॉफ्टवेयर पोर्टेबिलिटी
  • क्रॉस-प्लेटफ़ॉर्म प्ले का समर्थन करने वाले वीडियो गेम की सूची
  • विजेट टूलकिट की सूची
  • हार्डवेयर वर्चुअलाइजेशन
  • जावा (सॉफ्टवेयर प्लेटफॉर्म)
  • भाषा बंधन
  • ट्रांसकंपाइलर
  • बाइनरी-कोड संगतता
  • ज़ामरीन
  • मैसेजिंग प्लेटफॉर्म की उपयोगकर्ता सुविधाओं की तुलना
  • मोबाइल विकास ढांचे, जिनमें से कई क्रॉस-प्लेटफॉर्म हैं।

संदर्भ

  1. "Design Guidelines: Glossary". java.sun.com. Retrieved 2011-10-19.
  2. "SDD Technology blog: Definition of cross platform". SDD Technology. Retrieved 2020-10-18.
  3. 3.0 3.1 "Platform Definition". The Linux Information Project. Retrieved 2014-03-27.
  4. "Cross Platform Mobile App Development". Groovy Web. Retrieved 2020-03-27.
  5. On the Net Marketshare website, which has around 89% market share as of March 2011
  6. "About Mono". mono-project.com. Retrieved 2015-12-17.
  7. "Apple announces Mac transition to Apple silicon". Apple Newsroom (in English). Retrieved 2020-12-08.
  8. Porting to x86-64 (AMD64, EM64T) – Apache OpenOffice Wiki. Wiki.services.openoffice.org (2012-06-22). Retrieved on 2013-07-17.
  9. Corti, Sascha P. (October 2011). "Browser and Feature Detection". MSDN Magazine. Retrieved 28 January 2014.
  10. Choudhary, S.R. (2014). "Cross-platform testing and maintenance of web and mobile applications". Companion Proceedings of the 36th International Conference on Software Engineering - ICSE Companion 2014: 642–645. doi:10.1145/2591062.2591097. ISBN 9781450327688. S2CID 1903037.
  11. Mehrotra, Pranob (2020-12-01). "Collabora Office suite gets a new layout for Android tablets and Chromebooks". XDA-Developers. Retrieved 2021-01-15. Collabora Office is a popular open-source alternative to the Microsoft Office suite. It's based on LibreOffice, and it's available on a variety of platforms, including Windows, Linux, iOS, and Android. This year in July, a major update for the office suite brought support for Chrome OS devices.{{cite news}}: CS1 maint: url-status (link)
  12. "Collabora Office on iOS and Android Just got Better!". Adfinis. 2020-12-15. Retrieved 2021-01-15. ...touch optimized interfaces: one for tablets and one for phone screens. ...(iOS, iPadOS, Chromebooks, Android).{{cite news}}: CS1 maint: url-status (link)
  13. Cribba. Quake III Arena, Giant Bombcast, February 15, 2013.
  14. The GUI Toolkit, Framework Page
  15. "Platform Independent FAQ". Archived from the original on 2008-08-16. Retrieved 2009-04-25.
  16. "Cross-Platform SDK Libraries for Recognition, Document, Medical, Imaging, and Multimedia". www.leadtools.com. Retrieved 2021-03-03.
  17. "12 benefits of Xamarin Cross-platform app development". HeadWorks. 15 Mar 2019.
  18. WxWidgets Description
  19. Warren, Tom (2020-01-14). "Microsoft bids farewell to Windows 7 and the millions of PCs that still run it". The Verge (in English). Retrieved 2020-02-06.


==