विंडोज़ आपको एकल एपीआई / फ्रेमवर्क के एकल कार्यान्वयन के शीर्ष पर एकल डेस्कटॉप का एक एकल कार्यान्वयन देता है, जो सभी Microsoft द्वारा किया जाता है।
यूनिक्स प्रणालियों पर, आपको एक एपीआई / ढांचा (X11 / X विंडो सिस्टम) मिलता है, जिसके लिए कई कार्यान्वयन (Xorg, Xfree86) मौजूद हैं, जिनमें से शीर्ष पर आपको विभिन्न "उच्च स्तर" API / चौखटे (GTK +, Qt, ... ) क्योंकि कच्चा एक्स 11 इतना आदिम है, जिसके शीर्ष पर आपको विभिन्न डेस्कटॉप (ग्नोम, केडीई, ...) मिलते हैं, जो सभी अलग-अलग लोगों द्वारा किए जाते हैं।
इसके अलावा, X11 प्रणाली को जमीन से दूरस्थ GUI के साथ ध्यान में रखते हुए तैयार किया गया है - यानी, दूरस्थ रूप से चल रहे एप्लिकेशन के GUI को प्रदर्शित करने वाली एक लोकल मशीन - जो एक "X सर्वर" और "X क्लाइंट" की अवधारणाओं का परिचय देती है।
फिर एक नामकरण होता है जो नए लोगों के लिए गलत तरीके से "महसूस करता है": आपकी स्थानीय मशीन "X सर्वर" चला रही है जो "डिस्प्ले GUI" सेवा प्रदान कर रही है, जबकि रिमोट मशीन "X क्लाइंट" है जो सेवाओं का उपयोग कर रही है GUI प्रदर्शित करने के लिए आपकी मशीन पर।
खैर, यह त्वरित अवलोकन है; एक बार जब आप इस तरह से हल हो जाते हैं, तो विषय पर किसी भी लेख / मंच पोस्ट को समझना बहुत आसान हो जाना चाहिए।
संपादित करें: ओपी की पहली दो टिप्पणियों का उत्तर देने के लिए।
हां, "X11" केवल एक प्रोटोकॉल है, और Xorg / XFree86 दो कार्यान्वयन हैं। अपने मूल स्तर पर, X11 केवल रेखाओं और बिंदुओं को खींचने के बारे में है, जो यदि आप GUI करना चाहते हैं, तो बहुत उपयोगी नहीं है।
X11 प्रोटोकॉल के शीर्ष पर, लोगों ने कई चीजों को लागू किया, और विंडोज के साथ तुलना 1: 1 करना बहुत मुश्किल है क्योंकि Microsoft ने कभी चीजों को अलग रखने की जहमत नहीं उठाई। इसके अलावा, मैं एक जीयूआई प्रकार डेवलपर नहीं कर रहा हूँ, यानी के साथ अपने वास्तविक अनुभव या तो प्रणाली कम से कम किया गया है।
सबसे नीचे, एक "विंडो मैनेजर" एक विंडो प्रदान करता है (बॉर्डर को हैंडल करना, क्लोज़ / मिनिमम / अधिकतम बटन, आकार बदलना आदि), और विंडो के भीतर विजेट टूलसेट में "रियल एस्टेट" प्रदान करता है। कई विंडो प्रबंधक हैं, कुछ अन्य सिस्टम की नकल करते हैं (विंडोज, मैकओएस, एमिगो, जो भी हो), और वे शेष सिस्टम के लिए ज्यादातर विनिमेय पारदर्शी हैं।
"विजेट टूलसेट" आपको अपने GUI के निर्माण के लिए बटन, स्लाइडर, टेक्स्ट फ़ील्ड आदि प्रदान करता है। यह वही है जो आप (एक एप्लिकेशन डेवलपर के रूप में) वास्तव में "देखने", एपीआई वार करने के लिए प्राप्त करते हैं, और जो आपके आवेदन के अधिकांश "लुक एंड फील" का फैसला करता है।
एक "डेस्कटॉप" एक निरंतर लुक और फील प्रदान करने के लिए एक निश्चित विजेट टूलसेट / विंडो मैनेजर संयोजन के शीर्ष पर कई एप्लिकेशन बनाता है। जब तक आप वास्तव में स्वयं डेस्कटॉप विकसित नहीं करना चाहते हैं, तब तक आपको इनसे परेशान नहीं होना पड़ेगा।
डेस्कटॉप "गनोम" विंडो मैनेजर "मेटासिटी" के शीर्ष पर विजेट टूलसेट "GTK +" का उपयोग करता है।
डेस्कटॉप "केडीई" विंडो मैनेजर "केविन" के शीर्ष पर विजेट टूलसेट "क्यूटी" का उपयोग करता है।
ध्यान दें कि विशेष रूप से उन दो, जीटीके + और क्यूटी, सरल "विजेट टूलसेट" से परे "एप्लिकेशन डेवलपमेंट फ्रेमवर्क" में विकसित हुए हैं। यदि आप लिनक्स के लिए जीयूआई ऐप विकसित करना चाहते हैं, तो प्रभावी रूप से आपको उन दोनों में से एक को चुनना होगा जिसे आप उपयोग करना चाहते हैं। अधिक विकल्प हैं, यदि आप एक अधिक "लाइटवेट" ऐप चाहते हैं (बड़े पुस्तकालय निर्भरता की आवश्यकता नहीं है), लेकिन आज अधिकांश सिस्टम में जीटीके + और क्यूटी लिबास पहले से ही इंस्टॉल किए गए हैं।
यह पूरी तरह से संभव है कि Kn डेस्कटॉप पर Gnome डेस्कटॉप या GTK + ऐप्स पर Qt ऐप्स का उपयोग करें (यह हमेशा ऐसा नहीं था), इसलिए आपको संगतता के बारे में थोड़ा चिंता करना होगा। तुलनीय कार्यक्षमता के दो ऐप्स के बीच एक विकल्प को देखते हुए, लोग आमतौर पर अपनी पसंद के डेस्कटॉप के "देशी" विगेट्स का उपयोग करके ऐप को पसंद करेंगे, लेकिन मुझे इस बारे में चिंता नहीं होगी।
अन्य, "विजेट टूलसेट" की पसंद में अधिक महत्वपूर्ण बुलेट बिंदु: लाइसेंसिंग शर्तें, अपनी पसंद की भाषा के लिए समर्थन, क्रॉस-प्लेटफॉर्म संगतता।
पोस्ट स्क्रिप्टम : कई वर्षों बाद वापस आ रहा है, मैंने अपने स्वयं के कुछ जीयूआई प्रोग्रामिंग अनुभव को उठाया है, और उपरोक्त विवरण में एक बात का एहसास होता है कि क्या आप "सलाह लेने के लिए एक रास्ता" की तलाश कर रहे हैं: wxWidgets । यह एक ऐसा ढाँचा है जो आप जो भी उपयोग कर रहे हैं उसके शीर्ष पर बनाता है , और पारदर्शी रूप से पोर्टेबल जीयूआई विकास की अनुमति देता है , प्रदर्शन का त्याग किए बिना या किसी भी लाइसेंस प्राप्त तार से जुड़ा हुआ है। C ++ API। यह वह रास्ता है जिसे मैंने अपनी GUI जरूरतों के लिए चुना है, और मुझे लगा कि इसे पूर्णता के लिए उल्लेख किया जाना चाहिए।