V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
w568w
V2EX  ›  程序员

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

  •  4
     
  •   w568w · 2023-07-08 09:57:15 +08:00 · 20231 次点击
    这是一个创建于 503 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    打算开个 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 就免了。这不是想学点新玩意吗😂

    第 1 条附言  ·  2023-07-09 10:47:43 +08:00

    为刚进贴的朋友省流,补充一下各位已经提到的框架和优缺点(可能含个人暴论):

    1. Unity:写软件,你认真的吗?😂
    2. Slint:新兴 Rust/JS/C++ 绑定 UI 框架,生态有待发展;
    3. Qt/PyQt:截至目前呼声最高的选项,最成熟的 C++ 解决方案。「Qt 运行速度比 wxWidget 肉眼可见的慢一丢丢,比如弹出菜单能明显感觉会比纯原生的迟滞一点点,但毕竟是 C++ 的,还是很快的,重点是它的 API 设计得很好,比 wxWidget 好一个时代,以及官方文档和示例非常好」;
    4. wxWidgets:「运行速度更快,毕竟是真原生,但 API 跟 MFC 高度相似,就是上个世纪的风格,会觉得很落后难用」;
    5. Delphi:半身进棺材了;
    6. imgui:文档称「特别适合集成在游戏引擎(用于工具)、实时3D应用程序......以创建内容创建工具和可视化工具(相对于普通最终用户的用户界面)」;
    7. Avalonia:也许是 Qt 以外的最优解之一,「采用 NativeAOT 编译即可达到双击立即启动的水平,并且不需要携带运行时」「感觉和用 Electron 应用差不多,笨重、软绵绵、不跟手」;
    8. JUCE:声学领域专有 UI 框架,也许不怎么合适;
    9. GTK4:桌面 Linux 上已成事实标准的 UI 框架,也许同样是 Qt 以外的最优解之一;
    10. JavaFX+GraalVM:「可以编译成原生的程序,内存占用可以降低到几十兆,冷启动速度极快,我曾用 java 开发了一个类似 Bob 的软件,常驻后台无压力」;
    11. MAUI:官方不支持 Linux;
    12. SWT:类似 Java 版的 wxWidgets?

    多嘴一句,以上没有轻视某个框架的意思,适合的就是最好的。

    之前给某个省级项目做开发的时候,要求做移动客户端和网页端,工期给得很紧迫。因为熟悉 Flutter,立刻决定用 Flutter 一把梭全上了。了解 Flutter 的朋友应该知道 Flutter 的 Web 性能和兼容性和 React、Vue 等框架开发的原生 Web 应用相很拉垮,但那又如何呢?客户又不在意打开速度、白屏时间、软件体积和内存占用,都是统一安装到办公用机上的。按期交差了,他们开心我们也开心。


    看到一些 V 友质疑我是「矫情病」「既要又要还要」「伪需求」,再多说两句。

    需要明确的一点是,正如我上面所说的,这是个 Side Project,不是正经项目;我不是产品经理/外包方,各位也不是正在看需求的开发。对业余项目怎么想是自己的事,只要乐意一个人可以花几个月时间去学习 OpenGL 等底层图形库,写个渲染引擎、UI 框架,为什么无时无刻要抓着「市场需求」「开发效率」几个词不放呢?只不过在此基础上,希望找到一个偏好于以上各方面的权衡点罢了。

    106 条回复    2024-02-27 09:43:46 +08:00
    1  2  
    dimwoodxi27
        101
    dimwoodxi27  
       2023-07-10 13:18:36 +08:00
    golang 的 fyen
    ebushicao
        102
    ebushicao  
       2023-07-10 13:45:17 +08:00
    Godot ,也是一个游戏框架,但是可以用来编写桌面软件,跨平台。https://github.com/Orama-Interactive/Pixelorama 这个项目就是用 Godot 编写的一个软件,目前还在维护。
    chrawsl
        103
    chrawsl  
       2023-07-11 08:51:38 +08:00
    @roundgis MAUI 打包体积很小,速度还行,不过有的地方感觉有点过度设计了,有的地方又有点欠缺,比如如果想修改标题栏就会很蛋疼
    wizcas
        104
    wizcas  
       2023-07-14 11:43:03 +08:00 via Android
    提供一个思路:godot 。2d 渲染、主题、ui 布局做的都不错,但问题可能是太小众了,应该也没有现成的复杂组件可用,如果是需求简单的应用我感觉可以试试
    chengxiao
        105
    chengxiao  
       2023-07-26 16:15:11 +08:00
    @wxf666 #47 我目前用到的只有企业微信和 localsend 的桌面端是 Flutter,这两个的用户基数都不小,不算小众产品了,移动端还有闲鱼是纯 flutter
    layxy
        106
    layxy  
       269 天前
    @wxf666 v 友有个人使用 flutter 开发了 window,mac,linux,android,ios 五端的,软件叫:reqable
    1  2  
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2060 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 00:34 · PVG 08:34 · LAX 16:34 · JFK 19:34
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.