KDE Frameworks是一套由KDE社群所編寫的函式庫及軟件框架,是KDE Plasma 5及KDE Applications 5的基礎,並使用GNU較寬鬆公共許可證進行散佈。
此條目可參照英語維基百科相應條目來擴充。 (2022年8月16日) |
其中所包含的各種獨立框架提供了各種常用的功能,包括了硬件整合、檔案格式支援、控制項、繪圖功能、拼寫檢查及更多。
KDE Frameworks相當於將KDE Platform 4重寫為一套單獨且分開、跨平臺的模組,可以很容易的提供給所有基於Qt的程式使用。從KDE Platform到KDE Frameworks的轉換歷時超過3年,由頂尖的技術貢獻者們指導[3]。
在KDE Frameworks 5.0釋出後,因為沒有嚴苛的底線壓力,開發者們將會專注在加入新的功能到KDE Frameworks 5的組件中[4]。像是Firefox與KDE的更佳整合[5]。
KDE Frameworks 5執行時函式庫與KDE Platform 4執行時函式庫一同安裝應該是可行的,這樣應用程式就可以選擇要用哪一種[6]。
採用
KDE Frameworks中的原始碼有一部份在KDElibs 1中就有使用。除了KDE Software Compilation以外,也可能有其他許多的採用者,像是桌面環境,如Razor-qt、LXQt、MoonLightDE或是Hawaii,或是應用程式,像是Amarok、Avogadro等。
開發
因為KDE Software Compilation被分割為KDE Frameworks 5、KDE Plasma 5及KDE Applications 5、每個子專案都可以選擇自己的開發步伐。KDE Frameworks 5將會以每個月為基礎釋出[7]且使用git[8][9]。
平台發佈是開始一個系列(版本號X.0)的主要發佈。這些版本可以打破二進制檔案和原始碼相容性,或者換句話說,所有以下版本(X.1, X.2, ...)將保證原始碼和二進制相容性(應用程式介面及應用二進制介面)。例如,該軟件使用KDE 3.0開發將可以工作在所有(未來)發佈的KDE 3,相對於應用程式開發使用KDE 2,不保證能夠利用KDE 3的函式庫。KDE的主要版本號按照Qt的發佈週期,這意味着KDE SC 4是基於 Qt 4,而KDE 3是基於Qt 3。
軟件架構
Frameworks有着清晰明確的依賴性結構,分為「類型」及「層次」。「類別」是指運行時依賴性:
- 功能項沒有運行時依賴性。
- 整合指定的代碼可能需要運行時依賴性,取決於使用何種作業系統或平臺。
- 解決方案有強制性的運行時依賴性。
「層次」是指編譯時對其他Frameworks的依賴性:
- 層次1的Frameworks在Frameworks內沒有依賴性,只需要Qt及其他相關的函式庫。
- 層次2的Frameworks只能依賴於層次1的Frameworks。
- 層次3的Frameworks可以依賴其他層次3的Frameworks以及層次1及層次2的Frameworks。
KDE Frameworks包含了超過60個軟件包。這些在KDE SC 4中包含在一個單一的大軟件包中,稱為kdelibs,其中一些已經不再是KDE的一部份,但已併入Qt 5.2中[10]。
KDE Frameworks根據其依賴其他函式庫的程度分類為四種不同的層次。層次1的Frameworks只依賴Qt或是其他系統函式庫。層次2的Frameworks可以依賴層次1的函式庫、或是其他系統函式庫等等[11]。
Frameworks的完整列表 | |||
---|---|---|---|
名稱 | 層次 | 描述 | |
Frameworkintegration | 4 | 將Qt程式與KDE Plasma Workspaces整合。 | |
KActivities | 3 | KDE活動管理員的核心組件。 | |
KApiDox | 4 | 構建標準格式及風格的API檔案所使用的指令稿及資料。 | |
KArchive | 1 | 方便讀取、創造及操作「壓縮檔」格式,像是zip及Tar。 | |
KAuth | 2 | 提供一個方便的、系統整合的方法在執行需要提高權限的動作結束後降低回一般用戶權限的小幫手工具。 | |
KBookmarks | 3 | 網絡瀏覽器的書籤管理。 | |
KCMUtils | 3 | KDE系統設置模組的實用工具。 | |
KCodecs | 1 | 提供一種使用各種編碼的方法來操作字串。 | |
KCompletion | 2 | 字串補完框架。 | |
KConfig | 1 | 儲存應用程式設置值的後端。 | |
KConfigWidgets | 3 | 設置對話框的控制項。 | |
KCoreAddons | 1 | 核心應用程式的功能及對作業系統的存取的實用工具。 | |
KCrash | 2 | 提供攔截及處理應用程式死機的支援。 | |
KDBusAddons | 1 | ||
KDE4Support | 4 | 提供在KDE Frameworks 5中已經移除的kdelibs4模組及API。 | |
KDeclarative | 3 | ||
KDED | 3 | ||
KDesignerPlugin | 3 | ||
KDESu | 3 | ||
KDEWebkit | 3 | ||
KDNSSDFramework | 2 | ||
KDocTools | 2 | ||
KEmoticons | 3 | ||
KF5Umbrella | 1 | ||
KFileAudioPreview | 4 | ||
KGlobalAccel | 3 | ||
KGuiAddons | 1 | ||
KHTML | 4 | ||
Ki18n | 1 | KDE的國際化支援。 | |
KIconThemes | 3 | KDE的圖示主題模組。 | |
KIdleTime | 1 | ||
KImageFormats | 1 | ||
KInit | 3 | ||
KIO | 3 | ||
KItemModels | 1 | ||
KItemViews | 1 | ||
KJobWidgets | 2 | ||
KJS | 1 | ||
KJSEmbed | 3 | ||
KMediaPlayer | 3 | ||
KNewStuff | 3 | ||
KNotifications | 3 | ||
KNotifyConfig | 3 | ||
KParts | 3 | ||
KPlotting | 1 | ||
KPrintUtils | 3 | ||
KPty | 2 | ||
Kross | 3 | ||
KRunner | 3 | ||
KService | 3 | ||
KTextEditor | 3 | ||
KTextWidgets | 3 | ||
KUnitConversion | 2 | ||
KWalletFramework | 3 | ||
KWidgetsAddons | 1 | ||
KWindowSystem | 1 | 允許與視窗系統互動。它提供了一個存取全域狀態(這裏的所有項目均在根視窗上)的所有關於特定視窗的資訊NETRootInfo。此類型包含了一個視窗管理員及客戶端。這是KWin及其他圖形殼層,像是工作管理員,的基礎。
建基於X11的特有類型,我們有一個方便的API,KWindowInfo,而KWindowSystem提供了與視窗系統無關的API給應用程式使用。 | |
KXMLGUI | 3 | ||
Plasma-framework | 3 | ||
Solid | 1 | ||
Sonnet | 1 | 拼寫檢查 | |
ThreadWeaver | 1 |
歷史
KDE Frameworks第一個版本的版本號是5,代表其整個代碼庫是繼承KDE Platform的事實,但因為KDE Platform的版本號只有到4,而且其大多數代碼只是將先前的版本重新包裝,所以使用版本號5來代表。
在Frameworks 5中的主要變更為,增加了模組化的程度。在較早的KDE版本中,其函式庫被包裝為一個單一的大軟件包。在Frameworks中,這些函式庫會分裂成較小的數個獨立的軟件包。這有利於其他基於Qt的軟件利用這些函式庫,因為依賴性可以被保持在最低程度[3]。
而KDE 4是基於第四版的Qt部件工具箱開發,Frameworks 5則是使用第五版的Qt。Qt 5能增加QML的使用量,一個簡單的,基於JavaScript的敘述性程式語言,用以設計用戶介面。使用QML的圖形彩現引擎可以帶來橫跨不同裝置且更流暢的用戶介面[3]。
參考資料
Wikiwand in your browser!
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.