चूंकि Apple OS-X ऑपरेटिंग सिस्टम एक UNIX व्युत्पन्न (BSD) है, और अंतर्निहित (Intel) मैक आर्किटेक्चर समान है, इसलिए लिनक्स पर चलने वाले Apple-विशिष्ट अनुप्रयोगों को प्राप्त करना बहुत सीधा नहीं है?
चूंकि Apple OS-X ऑपरेटिंग सिस्टम एक UNIX व्युत्पन्न (BSD) है, और अंतर्निहित (Intel) मैक आर्किटेक्चर समान है, इसलिए लिनक्स पर चलने वाले Apple-विशिष्ट अनुप्रयोगों को प्राप्त करना बहुत सीधा नहीं है?
जवाबों:
ओएस एक्स वास्तव में (ज्यादातर) बीएसडी के शीर्ष पर मालिकाना ग्राफिकल शेल है। OS X GUI एप्लिकेशन बनाने के लिए, एप्पी का अनुसरण करना होगा जिसे Apple ने उजागर किया है, और इसलिए यह क्रॉस प्लेटफॉर्म नहीं है और आसानी से पोर्टेबल नहीं है।
यही कारण है कि अधिकांश पुस्तकालयों है कर रहे हैं आसानी से लिनक्स पर वापस पोर्ट (वास्तव में सबसे लिनक्स पर विकसित कर रहे हैं), लेकिन नहीं उनके चित्रमय गोले।
एक साइड नोट पर: वहाँ रूपरेखाएँ हैं जिनके साथ आप क्रॉस प्लेटफ़ॉर्म GUI एप्लिकेशन बना सकते हैं। Qt दिमाग में आता है। लेकिन यह तथ्य कि वे फ्रेमवर्क क्रॉस प्लेटफॉर्म हैं, उनके साथ बनाए गए एप्लिकेशन को "देशी" जीयूआई एप्लिकेशन की तुलना में किसी विशिष्ट प्लेटफॉर्म पर कम उपयोगकर्ता के अनुकूल बनाते हैं। वे चौखटे सब कुछ सामान्य बनाने के लिए उपयोग करते हैं, जो कि Apple के मामले में खराब है, क्योंकि Apple बहुत विशिष्ट उपयोगकर्ता अनुभव बनाता है, जो अन्य प्लेटफार्मों में आसानी से "फिट" नहीं होता है।
संपादित करें (उत्तर में टिप्पणियों को शामिल करने के लिए - धन्यवाद @Nick, @kbisset और @ जॉन):
एक समाधान पूरे ओएस एक्स ग्राफिकल शेल (बंद स्रोत कोको / कोर लाइब्रेरीज़ ) को पोर्ट करना होगा - जो कि ओएस को वास्तव में अद्वितीय बनाता है ) लिनक्स के लिए। और तकनीकी रूप से, Apple ऐसा काफी आसान कर सकता है, लेकिन उनके पास कोई कारण नहीं है, क्योंकि उनका पूरा व्यापार मॉडल उनके पूरे मंच की विशिष्टता है - हार्डवेयर और सॉफ्टवेयर।
यह स्वीकार्य है कि कोई व्यक्ति पुस्तकालयों को क्लोन करने का प्रयास कर सकता है, लेकिन ऐसा करने में मानव-दशकों का समय लगेगा, और संभवतः सभी अनिर्दिष्ट कॉल के कारण कभी भी सही नहीं होगा, जिसे दोहराया जाना होगा।
चित्रमय परत समान नहीं है, बिल्कुल नहीं। OS X एक मालिकाना चित्रमय रूपरेखा का उपयोग करता है, linux X (X11 / X.org) का उपयोग करता है
लगभग सभी देशी OS X एप्लिकेशन फ्रेमवर्क जैसे कोको, कोरएनीमेशन और इतने पर उपयोग करते हैं, जो केवल OS X पर उपलब्ध हैं।
उदाहरण के लिए, मान लें कि आपके पास एक एप्लिकेशन है जो उपयोगकर्ता के लिए एक पासवर्ड स्टोर करता है - ओएस एक्स पर, यह इसके किचेन सिस्टम और प्रासंगिक एपीआई का उपयोग करेगा। यदि आप इसे लिनक्स में पोर्ट करना चाहते हैं, तो कोई प्रत्यक्ष समकक्ष नहीं है, इसलिए आपको इस संपूर्ण सुविधा को फिर से प्राप्त करना होगा। यह एक छोटी विशेषता है, और इसके लिए एक बड़े पुनर्लेखन की आवश्यकता होगी।
यदि आप GTK, Qt या wxWidgets जैसी क्रॉस-प्लेटफ़ॉर्म GUI लाइब्रेरी का उपयोग करके अपना आवेदन लिखते हैं, और पोर्ट करना बहुत आसान होगा (या, "संभव") - लेकिन ऑपरेटिंग सिस्टम UI के संदर्भ में अभी भी बहुत भिन्न हैं (उदाहरण के लिए, OS) एक्स एक अलग मेनू बार का उपयोग करता है, जबकि लिनक्स प्रत्येक विंडो के लिए अपने मेनू बार का उपयोग करता है)
मेरे द्वारा देखे गए सबसे अच्छे क्रॉस-प्लेटफ़ॉर्म पोर्ट्स में से एक ट्रांसमिशन है , जो अपनी मुख्य कार्यक्षमता को लाइब्रेरी के रूप में लागू करता है (जिसमें यथासंभव कम प्लेटफ़ॉर्म-विशिष्ट कोड होता है), फिर प्रत्येक प्लेटफ़ॉर्म के लिए अलग-अलग जीयूआई बनाते हैं। इसका मतलब है कि प्रत्येक पोर्ट बहुत सारे कोड साझा करता है, लेकिन सभी में अच्छे, देशी इंटरफेस होते हैं (केवल एक इंटरफेस के बजाय जो लिनक्स पर अच्छी तरह से फिट बैठता है, लेकिन ओएस एक्स, या इसके विपरीत से बाहर है)
Cocotron नामक एक परियोजना है, जिसका उद्देश्य "Apple Inc. के कोको प्रलेखन द्वारा वर्णित क्रॉस-प्लेटफ़ॉर्म ऑब्जेक्टिव-सी एपीआई को लागू करना है" जो संभवतः पोर्टिंग को बहुत आसान बना देगा, लेकिन लगता है कि देर से बहुत कम गतिविधि होगी (आखिरी ब्लॉग-पोस्ट दिसंबर 2008 में था)
क्योंकि अधिकांश एप्लिकेशन प्रोसेसर और उस मशीन के अंतर्निहित आर्किटेक्चर से बहुत अधिक निर्भर करते हैं, जिस पर वे चल रहे हैं। वे उपयोगकर्ता इंटरफ़ेस टूलकिट और अन्य प्लेटफ़ॉर्म-विशिष्ट पुस्तकालयों पर भी निर्भर करते हैं।