2012-09-04 48 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使用它們。

在任何情況下,工具包都會將應用程序與特定於平臺的詳細信息隔離開來,並自動執行正確的操作。