KDE Frameworks

<image>

KDE Frameworks是一套由KDE社群所编写的函式库及软件框架，是KDE Plasma 5及KDE Applications 5的基础，并使用GNU宽通用公共许可证进行散布。

其中所包含的各种独立框架提供了各种常用的功能，包括了硬件整合、档案格式支援、控件、绘图功能、拼写检查及更多。

KDE Frameworks相当于将KDE Platform 4重写为一套单独且分开、跨平台的模组，可以很容易的提供给所有基于Qt的程式使用。从KDE Platform到KDE Frameworks的转换历时超过3年，由顶尖的技术贡献者们指导。

在KDE Frameworks 5.0释出后，因为没有严苛的底线压力，开发者们将会专注在加入新的功能到KDE Frameworks 5的组件中。像是Firefox与KDE的更佳整合。

KDE Frameworks 5执行时函式库与KDE Platform 4执行时函式库一同安装应该是可行的，这样应用程序就可以选择要用哪一种。

## 采用

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将会以每个月为基础释出且使用git。

### 应用程序界面及应用二进制界面稳定性

平台发布是开始一个系列（版本号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中。

KDE Frameworks根据其依赖其他函式库的程度分类为四种不同的层次。层次1的Frameworks只依赖Qt或是其他系统函式库。层次2的Frameworks可以依赖层次1的函式库、或是其他系统函式库等等。

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的软件利用这些函式库，因为依赖性可以被保持在最低程度。

而KDE 4是基于第四版的Qt部件工具箱开发，Frameworks 5则是使用第五版的Qt。Qt 5能增加QML的使用量，一个简单的，基于JavaScript的叙述性程式语言，用以设计使用者界面。使用QML的图形渲染引擎可以带来横跨不同装置且更流畅的使用者界面。

## 基本资料

- 作者：KDE
- 开发者：KDE
- 发行日期：2014年7月1日
- 编程语言：C++
- 操作系统：Linux、OS X、Microsoft Windows
- 类型：系统函式库、软件框架
- 许可协议：GNU宽通用公共许可证（LGPL）