2023 年,有什么原生级性能的跨平台 UI 框架?

2023-07-08 09:57:15 +08:00
 w568w

月经问题了,以下贴已读过但是没有找到合适的:

打算开个 Side Project 写着玩。准备趁机学点新东西,满足一下自己的软件洁癖……

对框架的需求主要有:

  1. 至少支持 Windows 、Linux (X11)、macOS 三个主流桌面平台
  2. 尽可能不需要携带体积大的捆绑库(如 CEF );
  3. 内存占用小,启动速度接近原生
  4. 支持丰富的文本排版格式(例如同行内图文混排等)。

已经尝试过但不合适的有:

  1. PWA:内存占用大,需要下载浏览器;
  2. Electron:内存占用大,需要携带近百 MB 的 CEF ;
  3. Tauri:内存占用大,冷启动时空屏时间极长;
  4. ReactNative:内存占用大,冷启动时空屏时间长;
  5. JavaFX / Compose Multiplatform:冷启动速度慢,需要携带 JRE ;
  6. Sciter:对 Linux 的支持基本放弃(声称支持 X11 ,实测官方 Demo 无法正常渲染);
  7. FLTK:Windows 下的中文字体渲染非常糟糕;
  8. OpenGL/Vulkan:这不算 UI 框架吧?

使用的语言无所谓,主流框架的基本多少会一点。

之前有 Flutter 和 Android 的开发经验,所以推荐 Flutter 就免了。这不是想学点新玩意吗😂

24683 次点击
所在节点    程序员
106 条回复
wxf666
2023-07-08 20:48:15 +08:00
@DTCPSS #52 感谢指路。

体验了几个应用,感觉就像是 Win11 风格的应用。

另外,体积、内存、CPU 等资源消耗都变大了。比如(内存占用是刚开启的起步占用):

- 一个丑丑的播放器,体积 40MB ,内存占用 100MB+。

- 一个搜索软件,体积 160MB ,内存占用 200MB+。(应该没索引文件,因为搜索不到)

- 一个歌词软件,体积 460MB ,内存占用 100MB+

- 一个 UI 设计软件?体积 160MB ,内存占用 1GB+

感觉和用 Electron 应用差不多,笨重、软绵绵、不跟手
renmu
2023-07-08 21:06:08 +08:00
如果有,那么已经占领生态了,为什么现在主流还是 electron 呢
mineralsalt
2023-07-08 21:24:14 +08:00
javafx 我真认真研究过, 用 GraalVM 可以编译成原生的程序, 内存占用可以降低到几十兆, 冷启动速度极快, 我曾用 java 开发了一个类似 Bob 的软件, 常驻后台无压力, 喜欢 java 的程序员真可以认真琢磨琢磨, 就像你列举的这些, 跨平台都有各种的问题, javafx 还是一个不错的选择
hez2010
2023-07-08 22:44:26 +08:00
@wxf666 体积主要取决于开发者发布时有没有做代码裁减,默认不开,开了之后成品一般在 30mb 往上,不开的话 100mb 往上。
由于是 gpu 加速渲染,渲染后端走的 angle ,内存占用确实是 100mb+。如果关掉 gpu 渲染走软件渲染的话内存占用就只会有 30mb 左右。
至于那个 ui 设计软件,他们在内存里载入了自己的素材库和本地 ai 模型来辅助设计,内存占用自然比较大。

不过也没什么可说的,Avalonia 的体积就是 30mb 起步,启用 angle 后端做硬件加速渲染内存占用 100mb 起步,仅使用软件渲染内存占用 30mb 起步。

这里放两个拿 Avalonia 写的仿 vscode 的全功能代码编辑器,自带多种主题和多语言的代码高亮,一个是开启 gpu 渲染的 angle 版本,一个是采用软件渲染的 software 版本,并且采用了 nativeaot 编译,你可以试试:

gpu 加速渲染:
https://1drv.ms/u/s!ApWNk8G_rszRgrZ47r4LrTUlPupSRA?e=XcbR18

软件渲染:
https://1drv.ms/u/s!ApWNk8G_rszRgrZ5LOnqPDLtcKyrqA?e=C4AP86
lujiaxing
2023-07-08 23:05:13 +08:00
@renmu 因为研发成本, 招聘难度.
要知道 C# 和 C++ 招聘难度比前端大了一到两个量级. 哪个项目经理也不想项目开始一个月连人都招不齐吧??
至于体积, 执行效率, 根本就不是项目经理会考虑的问题. 毕竟用户又不会交钱, 更何况现在的个人计算机哪个不是 16GB 内存起步?
ysn2233
2023-07-09 00:18:13 +08:00
@mineralsalt 网上有相关的文章可以借鉴么?
saybyetoGFW
2023-07-09 00:29:16 +08:00
吃着包子。想到了既要又要还要,只能烂尾喽。开发工作,跟随主流 electron,tauri,react native 都行
kkwa56188
2023-07-09 00:49:42 +08:00
QT . 很成熟的东西了, 就怕门槛高 你进不去.
暴雪的 游戏启动器就是用 QT 做的.
mineralsalt
2023-07-09 01:49:49 +08:00
@ysn2233 #66 很多啊, 搜搜就是了
mingl0280
2023-07-09 07:59:44 +08:00
Qt 啊……
acctv2
2023-07-09 08:40:57 +08:00
要求原生级性能,你的应用是密集计算还是密集 IO ,还是有极其复杂的 UI ?都不是为什么要高性能框架。

要求跨平台使用,你现在需要跨哪些平台?这个应用一定需要跨平台使用吗?

你否掉了那么多技术栈,我只能说:你有很多伪需求
shyangs
2023-07-09 09:26:10 +08:00
@documentzhangx66

超出時代的記憶體佔用,會讓產品死去,比如 Windows Vista.

開發經驗十年了,不能只站在開發者角度,只在意開發者體驗,在中國不轉管理職,為自己增加管理行銷推廣技能,很可能觸及開發年齡上限,而被裁員.
chrawsl
2023-07-09 09:47:02 +08:00
MAUI 不错,这两天在用这个玩意写安卓
SaltyKitkat
2023-07-09 11:14:04 +08:00
@documentzhangx66 解释一下?
WebKit
2023-07-09 11:43:19 +08:00
新东西,Kotlin 的 KMM😂
FucGreatFireWall
2023-07-09 14:01:14 +08:00
Unity 写软件好用吗
roundgis
2023-07-09 14:18:37 +08:00
@chrawsl 感覺如何?
wxf666
2023-07-09 14:38:53 +08:00
@hez2010 #64 试了下:

| 应用 | 内存占用(启动后,最大化窗口为 1080P ,静置至稳定) | 内存占用(打开 sqlite3.c ,8MB ,25W 行,静置至稳定) |
| :-----------------: | :-----------------------------------------------: | :-------------------------------------------------: |
| Typora | 130 MB | |
| Clash For Windows | 110 MB | |
| Visual Studio Code | 250 MB | 450 MB |
| EditorDemo-Angle | 70 MB | 500 MB |
| EditorDemo-Software | 50 MB | 460 MB |
| Notepad--( QT5 ) | 15 MB | 35 MB |
| Notepad Next ( QT6 ) | 20 MB | 40 MB |
| QtCreator ( QT6 ) | 70 MB | 420 MB |

感觉内存占用差不多和 Electron 应用看齐。

论高效省资源,应该还得是 QT 应用。
cest
2023-07-09 14:42:30 +08:00
有哪个能处理好 hdr ?
Dynesshely
2023-07-09 14:57:04 +08:00
推荐:

1. Avalonia UI, 你将使用 C# + XAML 编写后台逻辑与界面, 使用 AOT 编译可以得到几乎原生的性能, 不使用 AOT 时体积可能达到几十 MB 的水平, 若要使用 AOT, 您需要至少 .Net 7, 且 Avalonia 11.0 +
2. Egui, 你将使用 rust 编写界面代码与逻辑代码, 极其轻量化但属于即时模式的 UI 框架
3. Flutter, 你将使用 dart 语言编写界面代码与逻辑代码, 可以达到近乎原生的性能, 也可以做到较优秀的体积水平, 缺点是, 在 win 平台上编译到 win32 似乎存在问题, 目前官方建议上架到 microsoft store

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/955040

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX