UI 框架比较

UI 框架比较

作者:Jeff Tranter
日期:2024年9月25日
TwitterLinkedInFacebookReddit

https://www.ics.com/blog/comparison-embedded-ui-frameworks

更新! 我最初在2023年8月撰写了这篇博客文章,以帮助您为下一个项目选择合适的框架。在准备即将到来的嵌入式世界北美2024会议演讲时,我更新了原始文章。我添加了这些框架的最新信息,为您提供了一个涵盖当今可用的各种可行选项的便捷资源。(如果您参加在奥斯汀举行的展会,我邀请您在10月10日上午10:30参加我的演讲。)

大多数编程语言并不直接支持开发图形用户界面。通常使用外部软件来实现,这些软件可能被称为库、工具包或框架。许多这样的工具包存在,并通过以下因素区分:

  • 它们直接支持的编程语言(例如C、C++、Python)。
  • 它们支持的平台(例如移动、桌面和嵌入式平台,如Windows、Linux、macOS、iOS和Android)。
  • 它们是否还提供用户界面之外的设施,如字符串处理、容器、文件输入/输出、网络等。
  • 它们分发的许可证类型(例如开源/自由软件或商业/专有)。

选择使用哪个工具包可能会令人望而生畏。在ICS,我们长期以来一直依赖Qt,以其跨平台兼容性和一致的用户体验等优势而闻名。它是许多项目的绝佳选择,但在某些情况下,需要不同的解决方案。因此,我们还使用各种其他UI框架来实现具有图形用户界面的应用程序。每个框架都有其优缺点,特定应用程序的选择取决于许多因素。

我认为您会发现比较一些主要UI框架或工具包的关键功能会很有帮助,您可以使用这些信息来指导您的决策。为了将比较范围缩小到一个可管理的列表,我仅选择了符合以下标准的框架:

  • 在多个平台上运行
  • 支持本地开发
  • 支持使用编译语言
  • 积极维护
  • 适合嵌入式开发

我确定了15个符合这些标准的框架,包括Qt、Flutter和Slint。下表按字母顺序列出了它们的特性。

框架比较

名称 平台 语言 许可证 优点 缺点 备注
Crank Storyboard 裸机、各种RTOS、VxWorks、Linux、macOS、Windows、Android。 C, C++ 商业 GUI构建器。轻量级(适合MCU)。 UI框架仅限。 主要用于MCU平台。
Dear ImGui 支持DirectX、Metal、OpenGL或Vulkan的平台。 C++ MIT 轻量级。利用GPU进行渲染。 小开发团队,文档不完整。 主要用例是游戏和其他具有3D管道的应用程序。
Embedded Wizard 操作系统独立(包括裸机) Chora 商业和免费 适合微控制器。 专有Chora语言。 WYSIWYG前端。
emWin MCU(RTOS和裸机) C, C++ 商业 商业支持。AppWizard GUI构建器。 成本。不是完整的跨平台框架。 主要面向微控制器。
FLTK X11、Windows、macOS。 C++ LGPL 轻量级,小,学习曲线短。 UI框架仅限。提供很少的控件。非本地外观和感觉。 主要用于桌面平台。
Flutter Android、iOS、Linux、macOS、Windows、Web。 Dart BSD 简单,学习曲线短。 仅直接支持Dart编程语言。 由Google开发。
GTK/gtkmm X11、Wayland、Windows、macOS。 C, C++ LGPL 稳定,广泛使用。 主要更新之间缺乏兼容性。 GTK使用C,gtkmm是C++接口。
LVGL 大多数MCU和MPU。 C MIT 免费。支持MCU。 UI工具包仅限。无GUI构建器。无商业支持。 常见选项用于MCU。
MicroEJ 许多商业板/SOM/MCU和MPU。 C, Java C, Java 成本。大而复杂。主要面向Java。 还提供虚拟化和云支持。
Qt Android、iOS、Linux、macOS、Windows等。 C++, QML, Python GPL, LGPL, 商业 完整的跨平台工具包,用户群大,文档齐全。 大而复杂。学习曲线长。 需要决定是使用控件还是QML。
SDL Linux、Windows、macOS/iOS、Android。 C ZLIB 免费。简单API。 不是完整的跨平台框架。无商业支持。 主要用于游戏和多媒体应用程序。
Slint Windows、Linux、macOS和一些MCU。 C++, Rust, JavaScript GPL或商业 轻量级,可在MCU上运行。 相对较新,用户群小。MCU支持有限。 QML类标记语言。
TouchGFX STM32微控制器 C, C++ 免费,但专有 免费。由STMicroelectronics支持。 仅支持STM32平台。源代码不可用。 仅适用于STM32 MCU。
Unity Windows、Linux、macOS、iOS、Android等。 C# 商业 2D和3D支持多个平台。文档良好。 闭源,仅商业。仅直接支持C#语言(Linux上使用Mono)。 主要面向游戏开发。
WxWidgets Windows、macOS、Linux。 C++ LGPL类 稳定,免费。使用本地控件(如果可用)。 仅控件,最适合桌面应用程序。 以前称为WxWindows。

结论

选择合适的框架可以大大确保项目的成功。尽管我提供的一些信息是主观的,我的列表并不详尽,但我希望它能为您选择最适合您项目的工具包提供一些比较基础。

猜你喜欢

转载自blog.csdn.net/cheungxiongwei/article/details/143391727