热门问题
时间线
聊天
视角
KDE Frameworks
函式庫與軟體框架 来自维基百科,自由的百科全书
Remove ads
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]。
Remove ads
采用
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]。
Remove ads
历史
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 - on
Seamless Wikipedia browsing. On steroids.
Remove ads