2012-09-04 41 views
0

GUI如何在操作系统内部构建。让我们使用两个例子,比如Ubuntu中的GTK +和Java JFrame。我认为使用某种图形用户界面的操作系统必须提供一些系统调用才能显示窗口。例如,如果我在一台机器上安装了一个Ubuntu版本,并且无需下载任何软件,我应该可以进行系统调用以显示一个窗口。看起来事实并非如此。我必须安装并下载GTK + SDK,它允许我使用按钮创建窗口等等。那么我的问题是使用Java,那么Java如何构建它的JFrame?我知道有一个Java虚拟机在Linux系统上运行,但Java虚拟机如何调用实际显示窗口?与GUI一起发生用户与它们交互的事件。在Java级别,JVM处理所有较低级别的调用,并且获得OnClick()事件等等.JVM如何实际调用并使用这些调用?与GDK +一样?我明白这是一个广泛的问题,有许多不同的答案,但任何帮助将不胜感激。操作系统内部的GUI

+1

呃..你对此的理解似乎有点偏斜。首先,图形用户界面与内核(除了KMS之外)有关,它们存在于用户空间中,GT与之通信的X也是如此。请记住,JVM也只是一个用户空间程序,我假设它的GUI堆栈中有X11绑定。 – Ancurio

回答

2

让我们以Linux为例。有几层:

  • 内核(Linux)和操作系统(GNU) - 了解如何工作硬件,包括图形。
  • 窗口系统(X) - 使用图形函数绘制窗口。
  • 桌面(例如Gnome) - 应用全局样式,如窗口边框。
  • (通常)GTK等工具包 - 了解小部件,如何绘制它们以及如何设计它们。
  • 您的应用程序。

在Windows上,内核,操作系统,窗口系统,桌面和小部件都捆绑在一起。在这种情况下,工具包可能不会绘制自己的小部件,而是直接从Windows使用它们。

在任何情况下,工具包都会将应用程序与特定于平台的详细信息隔离开来,并自动执行正确的操作。