当前位置:首页 > 每日看点

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

卡卷网2年前 (2024-12-04)每日看点290

前言

为降低开发成本,在开发多平台的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

分享给朋友:

相关文章

推荐几个问卷调查平台?

推荐几个问卷调查平台?

我给大家免费推荐一些市面上不多,且稳定的免费的问卷平台,这个在网上都是能够搜索到的,有的还是世界500钱企业,这里推荐的基本上都是上市的问卷公司了。上面都是可以免费去注册的,对外公开开放的,做完了直接奖励美刀的,不需要兑换卡什么的。 C…

有哪些正规的兼职平台?

1.阿里巴巴云客服:工作优点是时间自由,可自主选择班次,不需要去公司坐班,多做多得 2.蚂蚁云客服:同样是阿里巴巴旗下的兼职平台,工作优点是时间自由,可自主选择班次,不需要去公司坐班,多做多得。 3.菜鸟优加云客服:工作优点是时间自由,可自…

为什么大家不再提 5G 了?

现在看来,只有美国那种5g的思路是对的。 美国的运营商一开始就发现5g和4g并没有质的飞跃,无非就是提升频率/降低穿透力/提升带宽的故事。而美国运营商又是自负盈亏,因此一开始就仅在人口高密度地区或富裕地区布置5g。 虽然说人家4g也菜,但是…

你是如何在不依靠工资收入的情况下赚到一万元的?

你是如何在不依靠工资收入的情况下赚到一万元的?

分享几个路子稳,门槛低,变现快,适合年轻人的靠谱的副业。绝对不是送外卖、滴滴、搬砖等等的苦力活,这几个副业都是能是性价比极高,还能让你快速成长的工作。 想通过副业实现暴富、立马月入过万的同学,建议速速划走。 今天撇哥就给大家分享 100+个…

提升自己最快的方式是什么?

提升自己最快的方式是什么?

1. 稻盛和夫说过: “改变自己最快的方法就是做自己害怕的事,不敢做的事,认为自己做不到,觉得不可能的事。如果在自己的舒适区待久了,就会丧失斗志,如果想快速的改变,可以坚持去做一些对自己有益的事。 2. 早睡早起,坚持运动 保持旺盛的精力,…

如何看待台积电,三星相继停供大陆7nm及更先进芯片?

在这个事出来之前,我就看到过一个说法,两家Foundry可以在中东建厂,让中东的Fab去干“脏活”。本质上是国内企业搞几个中东的代理人,装作是中东的初创Fabless企业去下单,人家Foundry大概率睁一只眼闭一只眼,只管数钱。然而,紧接…

发表评论

访客

看不清,换一张

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