लिनक्स के लिए सभी मैक एप्लिकेशन आसानी से पोर्टेबल क्यों नहीं हैं?


15

चूंकि Apple OS-X ऑपरेटिंग सिस्टम एक UNIX व्युत्पन्न (BSD) है, और अंतर्निहित (Intel) मैक आर्किटेक्चर समान है, इसलिए लिनक्स पर चलने वाले Apple-विशिष्ट अनुप्रयोगों को प्राप्त करना बहुत सीधा नहीं है?

जवाबों:


23

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

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

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


अगर स्वामित्व बीएसडी पर चल रहा है तो मालिकाना चित्रमय शेल को लिनक्स पर आसानी से पोर्ट नहीं किया जा सकता है? मैं इस मुद्दे को समझता था जब अंतर्निहित वास्तुकला अलग था, लेकिन अब अंतर्निहित वास्तुकला सिर्फ इंटेल है फिर ग्राफिकल शेल सिर्फ एक और पुस्तकालय क्यों नहीं है?
निक पियरपॉइंट

8
दो कारण। सबसे पहले, यह अधिक है कि सिर्फ एक ग्राफिकल शेल। यह यूनिक्स के ऊपर एक पूरी परत है, जो कि Apple वर्षों से काम कर रहा है। दूसरा, कोड उपलब्ध नहीं है। इसलिए इसे स्क्रैच से फिर से लिखना होगा। Apple शायद कम समय में ऐसा कर सकता है, लेकिन उनके लिए कोई कारण नहीं है।
कीथबी

1
इसलिए ... कम से कम Apple के लिए वास्तव में कोई तकनीकी समस्या नहीं है - वे OS-X को माइग्रेट करने के लिए अपेक्षाकृत आसानी से चला सकते हैं क्योंकि वे पहले से ही UNIX पर चल रहे हैं। जाहिर है कि कोड बंद स्रोत के रूप में बाकी सभी के लिए एक बड़ी बात है और पूरी तरह से प्रकाशित एपीआई नहीं है। क्या यह एक अच्छा सारांश है?
निक पियरपॉइंट

3
निक: अनिवार्य रूप से, हाँ। Apple को OSX को लिनक्स प्लेटफॉर्म पर ले जाने में कोई दिलचस्पी नहीं है; जब उन्हें अपने ओपन सोर्स डार्विन प्लेटफॉर्म (बीएसडी लेयर) और उनके बंद स्रोत कोको / कोर * लाइब्रेरीज़ (जो कि OSX को वास्तव में अनूठा बनाता है) में इतना निवेश क्यों करना चाहिए। उनका पूरा बिजनेस मॉडल उनके पूरे प्लेटफॉर्म - हार्डवेयर और सॉफ्टवेयर की विशिष्टता है। यह स्वीकार्य है कि कोई व्यक्ति पुस्तकालयों को क्लोन करने का प्रयास कर सकता है, लेकिन ऐसा करने में मानव-दशकों का समय लगेगा, और संभवतः सभी अनिर्दिष्ट कॉल के कारण कभी भी सही नहीं होगा, जिसे दोहराया जाना होगा। और किस अंत तक?
जॉन रूडी

4
GNUStep उन कई मुख्य पुस्तकालयों का एक खुला स्रोत कार्यान्वयन है जो अब OS X में हैं, हालाँकि Apple के कई जोड़े तब से अब भी इतने आसान नहीं हैं: wiki.gnustep.org/index.php/Cocoa
TRS-80

2

Apple- विशिष्ट अनुप्रयोगों से आपका मतलब GUI ऐप्स से है? एक बार जब आप कमांड लाइन से ऊपर चले जाते हैं तो सब कुछ के लिए Apple विशिष्ट API होते हैं (ग्राफिक्स, साउंड आदि) जो लिनक्स पर समर्थित नहीं हैं इसलिए आप पोर्ट एप्लिकेशन को नहीं देख सकते हैं।


1

चित्रमय परत समान नहीं है, बिल्कुल नहीं। OS X एक मालिकाना चित्रमय रूपरेखा का उपयोग करता है, linux X (X11 / X.org) का उपयोग करता है

लगभग सभी देशी OS X एप्लिकेशन फ्रेमवर्क जैसे कोको, कोरएनीमेशन और इतने पर उपयोग करते हैं, जो केवल OS X पर उपलब्ध हैं।

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

यदि आप GTK, Qt या wxWidgets जैसी क्रॉस-प्लेटफ़ॉर्म GUI लाइब्रेरी का उपयोग करके अपना आवेदन लिखते हैं, और पोर्ट करना बहुत आसान होगा (या, "संभव") - लेकिन ऑपरेटिंग सिस्टम UI के संदर्भ में अभी भी बहुत भिन्न हैं (उदाहरण के लिए, OS) एक्स एक अलग मेनू बार का उपयोग करता है, जबकि लिनक्स प्रत्येक विंडो के लिए अपने मेनू बार का उपयोग करता है)

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

Cocotron नामक एक परियोजना है, जिसका उद्देश्य "Apple Inc. के कोको प्रलेखन द्वारा वर्णित क्रॉस-प्लेटफ़ॉर्म ऑब्जेक्टिव-सी एपीआई को लागू करना है" जो संभवतः पोर्टिंग को बहुत आसान बना देगा, लेकिन लगता है कि देर से बहुत कम गतिविधि होगी (आखिरी ब्लॉग-पोस्ट दिसंबर 2008 में था)


1

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

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