当前位置:首页 > 每日看点 > 正文内容

有没有GUI框架开发难度小,资源消耗又不多,而且又跨平台?

卡卷网1年前 (2024-12-04)每日看点208

前言

为降低开发成本,在开发多平台的GUI软件时,应尽量避免重复工作,选用跨平台的GUI框架似乎是不错的选择。

虽然很多跨平台GUI框架都宣称同时支持桌面端和移动端,但实际受到显示大小、操作方式等影响,想要做到一套UI通用是不可能的,所以现代化的GUI框架会刻意分离UI和代码逻辑。另外,跨平台GUI支持的功能通常是各目标平台的交集,想使用某平台特有的功能则还是按照特定平台的方式进行处理。

跨平台GUI框架

此处仅列出开源且Star数较多,风评不错且成熟(生产可用)的GUI框架。

桌面端:指Windows(10,11)、Linux(X11,Wayland)、MacOS

移动端:指Android、IOS

WEB端:指Browser

名称技术栈支持平台许可证
QtC++桌面端、移动端LGPL
PyQtPython桌面端GPL
QMLQJS桌面端、移动端LGPL
GTKC桌面端LGPL
AvaloniaC#桌面端、移动端MIT
ElectronWeb桌面端、WEB端MIT
UniAppWeb移动端、WEB端Apache
FlutterDart桌面端、移动端BSD
SwingJava桌面端BCL
JavaFxJava桌面端BCL

下面从开发效率、运行效率、资源占用、学习难度、产出性价比等方面,分别对桌面端、移动端的跨平台GUI框架进行对比。

想要一套代码同时跨桌面端、移动端是不经济的,差异太大,反而要付出大量投入换取体验的折中。

打分制1到5分。运行效率以资源占用各平台原生开发作为对比,越接近原生分数越高;开发效率、学习难度以语言不同进行客观对比,开发效率越低分数越低,学习难度越高分数越低;性价比为学会后在行业里的复用性,越能复用分数越高。

桌面端

名称开发效率运行效率内存占用存储占用稳定性学习难度性价比
Qt2443534
PyQt3232534
QML4333321
GTK1444512
Avalonia4432242
Electron5211555

总结:

不担心商用风险,追求运行效率的,Qt是很好的选择。Qt的学习难度在C++里不算高的,并且中文资料非常多。然后C++和Qt国内主要在制造业,工作压力相对小一些,原生语言更注重积累,失业风险相对也小一些(Android和Web确实分走一些市场,但是低成本工控领域,目前Qt还是主流)。

如果选用PyQt的话,商用风险似乎比C++Qt更高,但是开发效率会高很多,但是又增加了Python的学习成本,好在Python的应用面也还不错,比如可以用Python分析数据、调用AI模型然后在GUI上展示。

QML在国内市场存在感不高,据说某些车企使用QML开发仪表盘和中控大屏,出处不可考。QML比较尴尬的地方在于和Qt Widgets绑定在一起,问题是开发者已经安装整套Qt了,何必还要学习QML。不过QML的技术思想还是不错的,视图和控制分离,声明组合式UI等等,属于主流思想,但是学QML的性价比真的不高。

GTK/GTK+其实算是Linux平台的"原生"开发方式了,只是有其他平台的适配,如果主要面向Linux桌面,并且选择有限的话(比如只能用C语言),推荐用GTK,经过GNOME等项目多年的验证。

Avalonia是.Net Core跨平台GUI框架,是WPF风格的XAML框架。在微软砍掉Xamarin、UWP、WinUI2,又在MAUI、UnoPlatform之间摇摆不定的时候,社区选择了”跨平台WPF“。Avalonia采用SkiaSharp自绘UI,UI描述语言AXAML属于XAML的超集,MVVM开发模式,总体开发规范和流程与WPF有80%的相似度,得益于C#和.Net Core,在开发效率和跨平台发布上表现较好,但是目前不太成熟,BUG还有很多,并且缺少设施(第三方控件、文档、生产案例)。如果用C#开发,需要跨桌面平台,且技术能力较强,推荐用这个(为什么不推荐MAUI和UnoPlatform呢,主要是微软最近几年的摇摆表现以及UnoPlatform已被微软招安)。

Electron则是使用Web技术开发桌面端软件,也就是”套壳“Chromium浏览器。不过浏览器内核经过多年的发展以及无数网页的验证,其可靠性是很高的。而Web是GUI开发的重点领域,生态非常成熟,唯一美中不足就是资源占用了。Electron本身是支持使用C/C++开发模块给内嵌的Web页面使用的(Node.js能力),但是人们之所以选择Electron就是为了开发效率和跨平台性,很少真的会认真优化(VS Code就是正面例子)。学习Electron的性价比在于,Web开发是共通的,就业面非常广(相对竞争也激烈),如果服务目标机器资源足够,不在乎资源占用和运行效率,则推荐使用Electron。(不推荐Tauri的原因是适用面不及Electron)

移动端

名称开发效率运行效率内存占用存储占用稳定性学习难度性价比
UniApp5211455
Flutter4332342

总结:

移动端跨平台没有推荐Qt、Avalonia、Xamarin这种框架,主要聚焦在桌面端的GUI框架是不太适应移动端的。之所以不推荐ReactNative,因为其自己重新造了一个类似React的Web开发方式,最后又编译到原生平台对应的控件,这种方式很难保证多平台一致性。

UniApp是国人发起的开源项目,使Vue在小程序、APP、Web上实现”跨平台“,加引号的原因是底层其实都是Web,但是国内各家小程序都有或多或少的差异,UniApp让小程序的开发人员节约了解各家小平台的时间和精力。如果打算开发移动端跨平台APP,我非常推荐UniApp。至于资源占用,移动端和桌面端不同,移动端是专注前台APP,只要合理适应后台机制,前台APP占用资源高也不会过于影响感受。UniApp的技术复用性同样在于Web。

Flutter是谷歌发起的跨平台GUI框架,虽然也有很长一段时间了,但似乎没有火热到主流程度。学习Flutter的性价比相对并不高,Dart语言比较冷门,不像安卓的Java学了可以转后端(学习Kotlin也要接触Jvm),IOS的Swift学了还能开发MacOS软件,Flutter的工作岗位也不多。话说回来,Flutter本身是很不错的,基本思想和发展路线都很对,但是没有采用主流开发语言是挺可惜的。如果对新技术感兴趣,并且技术能力较强,可以尝试Flutter。

扫描二维码推送至手机访问。

版权声明:本文由卡卷网发布,如需转载请注明出处。

本文链接:https://www.kajuan.net/ttnews/2024/12/2897.html

分享给朋友:

相关文章

普通人一部手机用多久?

普通人一部手机用多久?

各位知友,你们的现在的手机用了多久了呢?回看国外分析机构TechInsights的报告,目前大家的用机周期是越来越长了,在国内,也达到了「40个月」,就是很多人至少三年半才会换一次手机。仔细想想,不对呀,现在新机不是一直出吗?为什么大家都不...

你手机里有哪些堪称神器的 App?

你手机里有哪些堪称神器的 App?

嗨嗨,我是赢酱~首先我认为对于我们有用的提升自我的都是手机里的神器 App。 一个人应该什么样子呢?在我从女孩子的角度看来,自律,上进,会打扮,情商高,会挣钱,独立,落落大方,这才是应该有的样子,我们可以借助手机不断学习改变今天给大家准备的...

下一个风口最可能是什么?

下一个风口最可能是什么?

肯定是一带一路了,国内没什么卷的空间了,现在国家正在给一带一路的第三世界国家建设基础设施,等交通打通之后,就是通信打通,通信打通就是贸易打通,未来我建议大家重仓小语种,阿拉伯语最值得学(也有其他小语种自己去查一带一路国家),将来去其他国家随...

有哪些是你用上了mac才知道的事?

用上了高端的Mac(已退货)才知道:原来文件夹里面的文件,你看到是8个,其实可能有12个。其中3个图标重叠在一起了,另外一个被拖动到屏幕外面了。用上了高端的Mac(已退货)才知道:原来鼠标灵敏度有问题是因为系统内置了鼠标加速度,只能用控制台...

有没有高手指点一下Google做SEO现在的技巧啊?心好累。

有没有高手指点一下Google做SEO现在的技巧啊?心好累。

搜索引擎优化 (SEO) 的目标是让 Google 在用户输入相关搜索查询时提供您的网页链接。虽然没有固定的蓝图可以保证您获得最高排名,但有几种 SEO 最佳实践(您可以将其视为 SEO 规则)可以增加您在非付费结果中获得良好排名的机会。谷...

想学习Linux下的ELF文件有什么好书推荐吗?

想学习Linux下的ELF文件有什么好书推荐吗?

大家好,这里是物联网心球。 今天我们来聊聊ELF文件,了解一下Linux如何创建进程以及ELF文件如何转变成Linux进程?1.什么是ELF文件? ELF(Executable and Linkable Format)文...

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。