cla*_*aws 10 windows linux xorg x-server
我是一名 Windows 开发人员(Win32api),正在从 Windows 迁移到 Linux。在安装 linux 时,有很多关于 X11、X Window System、X Server、Xorg、Xfree86 以及其他不知道的东西需要了解。
为什么我们不知道 Windows 中的这些东西?关于这些的维基文章让我感到害怕。任何人都可以解释这些事情吗?它们是如何工作的?为什么在 linux 中如此复杂而不在 windows 中?
任何好的参考也受到赞赏。
PS:我喜欢了解内部结构,不要犹豫,深入了解。
Dev*_*lar 13
Windows 在单个 API / 框架的单个实现之上为您提供单个桌面的单个实现,所有这些都由 Microsoft 完成。
在 Unix 系统上,您会得到一个 API/框架(X11/X Window 系统),其中存在多个实现(Xorg、Xfree86),在这些实现之上您会得到各种“更高级别”的 API/框架(GTK+、Qt、... ) 因为原始 X11 是如此原始,在它之上你会得到各种桌面(Gnome、KDE 等),所有这些都是由不同的人完成的。
此外,X11 系统从头开始设计时就考虑到了远程 GUI——即显示远程运行应用程序 GUI 的本地机器——它引入了“X 服务器”和“X 客户端”的概念。
然后有一个术语让新手“感觉”是错误的:您的本地机器正在运行提供“显示 GUI”服务的“X 服务器”,而远程机器是使用这些服务的“X 客户端”在您的机器上显示 GUI。
嗯,这就是快速概览;一旦你解决了这个问题,理解任何关于这个主题的文章/论坛帖子应该会变得容易得多。
编辑:回答 OP 的前两个评论。
是的,“X11”只是一个协议,Xorg / XFree86 是两个实现。在它的基本层面,X11 只是关于绘制线条和点,如果你想做一个 GUI,这不是非常有用。
在 X11 协议之上,人们实现了很多东西,很难与 Windows 进行 1:1 的比较,因为 Microsoft 从不费心将事情分开。此外,我不是 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 需求选择的路径,我觉得应该提到它的完整性。
归档时间: |
|
查看次数: |
6306 次 |
最近记录: |