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

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

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

前言

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

分享给朋友:

相关文章

是什么让你抛弃了 Windows 而转向 Mac?

是什么让你抛弃了 Windows 而转向 Mac?

别的不说,这玩意儿是真抗造啊,我这2012年买的MacBook Pro,依然在用…… 这台电脑我博士最后两年用来写代码(只写不运行,运行要上集群)和写论文,工作之后就变成生活和娱乐了,因为我一直用架子和外接键盘(颈椎不好)所以电脑看…

Redmi 为什么可以把性价比做得那么高?

一位修手机的老大哥曾经跟我说过,红米1那个手机,除了处理器还凑活,其余零部件,就是市面上山寨机那种。 其实红米性价比并不算极致,而且一直都有竞争者,从原来的群魔乱舞,到后来的荣耀,魅蓝,一加,再到现在的IQOO和realme。 红米的方法也…

NAS那么好,为什么还是没能成为大多数家庭必备的存储设备?

NAS那么好,为什么还是没能成为大多数家庭必备的存储设备?

最主要原因是因为——贵! 看看我家里搭建的这一套吧。 目前我家中有5台常用的NAS,分别为群晖DS1522+、威联通TS-464C2、绿联DX4600 Pro 、极空间Z4S、威联通TS-AI642。个人认为,这其中的每台NAS都是时代…

网易云音乐上看到过最触动的热评是什么?

网易云音乐上看到过最触动的热评是什么?

1. “昨天晚上洗澡的时候,我忘记拿毛巾了,喊了声妈妈帮我拿下毛巾, 正当我伸出左手准备接毛巾的时候,我愣了一下,又换了右手。” 希望你永远不会听懂这句话, 永远都不要懂。 ——网易云热评《关键词》 2. 小时候跟着父亲去城里卖西瓜,害…

如何做电商行业?

如何做电商行业?

“如何做电商*开网店”跟“如何找老婆”一样,没概况条件、没明确标准,就是扯犊子。 我把话题具体一点说: 具备“两三万”启动资金、掌握“选品+上架优化”基础技能,小则月入三五千、多则上万。跟摆地摊一样,有进货的钱、也不怕苦不怕累、稍微有点生意…

如何看待 Luv Letter 表示影视飓风专业性实在是让人失望?

一点儿新进展,另外以下有部分需要关注 对于统一变量的问题。这个我在对比上面有写小字解释,我在一开始使用ffmpeg来控制变量。但是发现了不少问题,比如因为遗留bug,会强制将非整数帧的素材转码为VFR导致无法正确帧间对比,因此不考虑,同时尽…

发表评论

访客

看不清,换一张

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