Windows는 단일 API / 프레임 워크 단일 구현 위에 단일 데스크탑 단일 구현을 제공합니다.
유닉스 시스템에서는 여러 구현 (Xorg, Xfree86)이 존재하는 API / 프레임 워크 (X11 / X Window System)를 얻을 수 있으며 그 위에 다양한 "상위"API / 프레임 워크 (GTK +, Qt, ... ) 원시 X11은 매우 원시적이기 때문에 다양한 데스크탑 (Gnome, KDE 등 ...)을 다른 사람들이 수행합니다.
또한 X11 시스템은 원격 GUI를 염두에두고 처음부터 설계되었습니다. 즉, 원격으로 실행중인 응용 프로그램의 GUI를 표시하는 lokal 시스템은 "X Server"및 "X Client"의 개념을 소개합니다.
그런 다음 초보자에게 잘못된 느낌을주는 느낌이 있습니다. 로컬 시스템에서 "GUI 표시"서비스를 제공하는 "X 서버"를 실행하고 원격 시스템은 서비스를 사용하는 "X 클라이언트"입니다. 컴퓨터에 GUI를 표시합니다.
그것은 빠른 개요입니다. 일단 정리하면 주제에 대한 기사 / 포럼 게시물을 이해하는 것이 훨씬 쉬워집니다.
편집 : OP의 두 가지 의견에 답하십시오.
예, "X11"은 단지 프로토콜이며 Xorg / XFree86은 두 가지 구현입니다. 기본적으로 X11은 선과 점을 그리는 것만으로 GUI를 수행하려는 경우에는 크게 유용하지 않습니다.
X11 프로토콜 외에도 사람들은 많은 것을 구현했으며, Windows와 1 : 1 비교를하는 것은 매우 어렵습니다. 또한 GUI 유형 개발자가 아닙니다. 즉, 두 시스템에 대한 실제 경험 이 최소화됩니다.
맨 아래에있는 "창 관리자"는 창 (경계 처리, 닫기 / 최소화 / 최대화 버튼, 크기 조정 등)을 제공하고 창 내의 "부동산"을 위젯 도구 세트에 제공합니다. 많은 창 관리자가 있으며, 일부는 다른 시스템 (Windows, MacOS, AmigaOS 등)을 모방 한 것으로 대부분 나머지 시스템과 투명하게 호환됩니다.
"위젯 툴셋"은 GUI를 구축 할 수있는 버튼, 슬라이더, 텍스트 필드 등을 제공합니다. 이것은 당신이 (애플리케이션 개발자로서) 실제로 API를 "보고"얻는 것과 어플리케이션의 "모양과 느낌"을 결정하는 것입니다.
"데스크톱"은 일정한 모양과 느낌을 제공하기 위해 특정 위젯 도구 세트 / 창 관리자 조합 위에 여러 응용 프로그램을 빌드합니다. 실제로 데스크톱 자체를 개발하지 않는 한 이러한 문제를 신경 쓸 필요가 없습니다.
데스크탑 "Gnome"은 창 관리자 "Metacity"위에 위젯 도구 세트 "GTK +"를 사용합니다.
데스크탑 "KDE"는 창 관리자 "KWin"위에 위젯 도구 세트 "Qt"를 사용합니다.
특히 GTK +와 Qt의 두 가지가 단순한 "위젯 툴셋"을 넘어서 "애플리케이션 개발 프레임 워크"로 발전한 것에 주목하십시오. Linux 용 GUI 앱을 개발하려면 효과적으로 사용할 두 가지 중 하나를 선택해야합니다. 더 큰 "경량"앱 (큰 라이브러리 종속성 필요 없음)을 원할 경우 더 많은 선택 사항이 있지만 오늘날 대부분의 시스템에는 GTK + 및 Qt 라이브러리가 이미 설치되어 있습니다.
Gnome 데스크톱에서 Qt 앱을 사용하거나 KDE 데스크톱에서 GTK + 앱을 사용하는 것이 가능하므로 (항상 그런 것은 아님) 호환성에 대해 걱정할 필요가 없습니다. 비슷한 기능을 가진 두 개의 앱 중에서 선택하면 사람들은 일반적으로 선택한 데스크톱의 "네이티브"위젯을 사용하는 앱을 선호하지만 걱정하지 않아도됩니다.
"위젯 툴셋"선택에있어 더욱 중요한 다른 요점 : 라이센스 용어, 선택한 언어 지원, 플랫폼 간 호환성.
Post Scriptum : 몇 년 후, 저는 저만의 GUI 프로그래밍 경험을 선택했습니다. "가는 길"조언을 찾고 있다면 위의 설명에서 한 가지가 빠져 있다는 것을 깨달았습니다 : wxWidgets . 기본적으로 사용하는 모든 것을 기반 으로 하는 프레임 워크로 성능을 저하 시키거나 라이센스가 부여 된 문자열을 첨부하지 않고도 이식성이 뛰어난 GUI 개발이 가능 합니다. C ++ API. 그것이 내 GUI 요구를 위해 선택한 길이며, 완전성을 위해 언급 되어야한다고 느꼈습니다 .