• 请不要在回答技术问题时复制粘贴 AI 生成的内容
xiaochong
V2EX  ›  程序员

2022 年, desktop app 开发(macos, windows, Linux )的跨平台框架是什么?

  •  
  •   xiaochong ·
    zhichenghou · Aug 25, 2022 · 19177 views
    This topic created in 1531 days ago, the information mentioned may be changed or developed.

    本人 JAVA 后端,有一些 react 的前端经验。打算开发一个 mac os 的小工具 app ,想了解下目前的跨平台框架对 desktop 的支持咋样?

    1. fluter
    2. react native
    3. 其他

    关心几点:

    1. 成熟度和活跃性,未来发展
    2. 通用性,能否向 mobile ( ios ,android )和 tv ( tvOs 等)迁移

    能沿用现在技术栈最好,也不很排斥新语言。感谢!

    Supplement 1  ·  Aug 25, 2022
    补充:
    - 个人项目
    - 目前无太复杂音视频功能,比较基本
    Supplement 2  ·  Aug 25, 2022
    目前的推荐情况:
    electron 3
    tauri 4
    flutter 3
    Jetbrains Compose 2
    wails 2
    .NET MAUI 4
    React Native 1
    Supplement 3  ·  Aug 25, 2022
    目前看起来 flutter 的推荐最多。

    还有提到 PWA 的,这个目前成熟了吗?
    124 replies  •  2023-05-15 11:14:43 +08:00
    1  2  
    ❮ ❯
    zhangxzh
    zhangxzh
    Aug 25, 2022
    1
    Compose for Desktop ??
    做过后端的话, 也不需要学新语言
    kkkkkkhalil
    kkkkkkhalil
    Aug 25, 2022❤️7
    2
    electron?
    xiaochong
    xiaochong
    OP
    Aug 25, 2022
    3
    typo : flutter
    xiaochong
    xiaochong
    OP
    Aug 25, 2022
    4
    @zhangxzh 去了解一下
    dreasky
    dreasky
    Aug 25, 2022
    5
    electron flutter 现在对桌面支持还不太好 还有个 rust 的 tauri
    huohei
    huohei
    Aug 25, 2022
    6
    如果想迁移到移动端,flutter 可以考虑
    Vaspike
    Vaspike
    Aug 25, 2022❤️1
    7
    推荐一楼说的 Jetbrains Compose
    在这上面我已经产出多个软件,跨平台 Kotlin 走的 jvm 生态没得说,移动端的话,这个框架本身就是 Compose Jetpapck 移植到桌面端的
    zhuweiyou
    zhuweiyou
    Aug 25, 2022
    8
    公司项目还是个人项目? 公司不要用偏门技术,招不到人来接手.
    Bijiabo
    Bijiabo
    Aug 25, 2022
    9
    建议明确一下需求,如果涉及到一些非界面相关的技术,例如音频、视频等,可能还要考虑硬件加速等场景,可能跨平台的开发相比选择特定平台相关的技术来说,更加痛苦。
    stoluoyu
    stoluoyu
    Aug 25, 2022
    10
    最近看到个 wails ,还比较新。
    ysc3839
    ysc3839
    Aug 25, 2022
    11
    只考虑 Windows 和 macOS 的话可以试试 React Native ,否则建议 Web
    respawn
    respawn
    Aug 25, 2022❤️1
    12
    .NET MAUI

    仅提供选项

    巨硬家的东西有个特色,有挺多人骂,一边骂一边用。
    nojsja
    nojsja
    Aug 25, 2022
    13
    有个新框架 tauri 可以了解一下,不过得学 rust ,界面就用 react 的 web 生态
    sardina
    sardina
    Aug 25, 2022 via iPhone
    14
    flutter
    Scirocco
    Scirocco
    Aug 25, 2022
    15
    flutter 我用下来感觉还是移动端为主,就是开发移动端顺便开发一个能用的桌面端这种感觉
    renmu
    renmu
    Aug 25, 2022 via Android❤️1
    16
    electron 就是跨端霸主
    dcsuibian
    dcsuibian
    Aug 25, 2022❤️1
    17
    /t/861083
    从功能实现上来说,那 Electron 应该是第一,毕竟 web 天生的跨平台优势。但是卡,要不是卡也就不需要别的了。

    只有追求性能才考虑其它的。如果是 Flutter on Desktop 和 React Native for Windows + macOS 。那还是选前者吧。
    1 、这俩都是移动端为主的,桌面端都还不咋样
    2 、前者是 Flutter 官方在搞,后者是巨硬在搞而不是 Facebook 本家
    3 、React Native 的原理是转成原生组件,安卓和 IOS 的差异已经是个问题了,现在 Windows 和 macOS 再来,不敢想。
    thtznet
    thtznet
    Aug 25, 2022❤️1
    18
    .NET MAUI +1
    mxT52CRuqR6o5
    mxT52CRuqR6o5
    Aug 25, 2022
    19
    RN 感觉不太行,因为桌面端的支持不是官方的,RN 源头上设计时就不会考虑桌面端的各种特性
    相比之下 flutter 的桌面端是官方做的
    lozzow
    lozzow
    Aug 25, 2022
    20
    qt ?
    theohateonion
    theohateonion
    Aug 25, 2022
    21
    tarui
    licoycn
    licoycn
    Aug 25, 2022
    22
    Wails
    Fyne
    Electron
    Tauri
    Flutter
    SingeeKing
    SingeeKing
    Aug 25, 2022
    23
    只有纯桌面端的话,tauri 不二之选
    276562578
    276562578
    Aug 25, 2022
    24
    只是桌面的话 electron ,加上移动端建议 flutter
    276562578
    276562578
    Aug 25, 2022
    25
    当然如果能 web 还是 web
    EvanQu
    EvanQu
    Aug 25, 2022❤️1
    26
    .net 的 maui?
    icyalala
    icyalala
    Aug 25, 2022
    27
    只考虑桌面端那就 Electron ,前端技术栈,非常成熟,生态完善,只是打包大。
    还要考虑移动端,那目前只有 Flutter 看上去能用,但生态不如 Electron 成熟。

    其他更不成熟的方案,我看好 Compose ,也是 skia 渲染,能保证平台一致性。至于 tauri ,那又用回系统 WebView 了。。
    murmur
    murmur
    Aug 25, 2022
    28
    你们真用过 flutter 开发的桌面 app 、
    sinnosong1
    sinnosong1
    Aug 25, 2022❤️1
    29
    Maui ,或者 Avaloina 。写 java 的 1 周内学不会 C#可以直接不要干这行了
    zhailei2011
    zhailei2011
    Aug 25, 2022
    30
    tarui+1
    xiaojun996
    xiaojun996
    Aug 25, 2022
    31
    electron
    wanguorui123
    wanguorui123
    Aug 25, 2022
    32
    electron 套壳
    zjsxwc
    zjsxwc
    Aug 25, 2022
    33
    electron
    elechi
    elechi
    Aug 25, 2022
    34
    flutter 或 Jetbrains Compose
    tarui 太新,说不准有啥坑
    maui 桌面不行,目前默认不支持 exe 生成
    churchill
    churchill
    Aug 25, 2022
    35
    有没有可能 C++ & ImGui
    跨平台+高性能
    coolair
    coolair
    Aug 25, 2022❤️2
    36
    说实话,不在乎性能可以上 electron ,对性能有要求只有 QT ,其他都不行,花里胡哨+追新技术并不适合做产品,玩玩还可以。。
    1daydayde
    1daydayde
    Aug 25, 2022❤️2
    37
    竟然只有 2 个说 Qt 的🥲
    murmur
    murmur
    Aug 25, 2022❤️2
    38
    @0312birdzhang 那毕竟 QT 是真的干活的,QT 可是有 wps 这种级别的软件撑着,我感觉 flutter 这些东西在国内完全是为了绩效而生,他没有 h5 的生态基础,没有 html 、jsx 这些遍历的语法,错过了 app 野蛮发展的时期,等 flutter 吹起来的时候,国内 app 进入减量时代,反倒是小程序嘎嘎爆杀
    LindsayZhou
    LindsayZhou
    Aug 25, 2022
    39
    我比较喜欢 QT 一点。
    LindsayZhou
    LindsayZhou
    Aug 25, 2022❤️1
    40
    @LindsayZhou 如果去问 archcn 社区的人,估计不会给你推荐 electron ,因为 wayland 的支持现在还不太好,特别是中文输入法,现在我的 chromium 的 fcitx5 中文候选框都乱跑。
    (本来想换行的,按到 Ctrl 了,所以分了两条回复)
    iamqk
    iamqk
    Aug 25, 2022
    41
    似乎有梯子是用 qt 做的,感觉 mac 下凑合用
    zjsxwc
    zjsxwc
    Aug 25, 2022
    42
    limiter
    limiter
    Aug 25, 2022
    43
    @murmur c++学习成本太高了,时间不等人,看好 flutter
    obwj
    obwj
    Aug 25, 2022
    45
    flutter
    whoami9894
    whoami9894
    Aug 25, 2022
    46
    QT 。

    @theohateonion #21 @zhailei2011 #30 @elechi #34
    一个人 typo ,两个人复制粘贴
    flowerpiggy
    flowerpiggy
    Aug 25, 2022
    47
    nw.js
    zyxk
    zyxk
    Aug 25, 2022
    48
    为什么这么多推荐 tauri 的, 且不说需要学 rust , 10 及以下系统还要装运行库, 这点就不适合小工具了吧.
    youxiachai
    youxiachai
    Aug 25, 2022
    49
    @murmur flutter 3.0.5 准备走微软应用商店流程上架了
    youxiachai
    youxiachai
    Aug 25, 2022
    50
    @murmur 我是上一年看了这篇文章后面试一下用 flutter 做桌面 app
    https://blog.whidev.com/native-looking-desktop-app-with-flutter/

    真有复杂需求 dart::ffi 其实也可以解决问题..我觉得 flutter 开发桌面端其实问题不大
    temp178
    temp178
    Aug 25, 2022
    51
    会 Java 的话,感觉可以尝试下 flutter ,dart 和 java 很像
    Kasumi20
    Kasumi20
    Aug 25, 2022
    52
    前后端分离,exe 跑服务,UI 跑在浏览器里
    WebKit
    WebKit
    Aug 25, 2022 via Android
    53
    Jetbrains Compose 不错
    treblex
    treblex
    Aug 25, 2022
    54
    manjaro gnome wayland 下,flutter dev 运行还是比 gtk 慢一点,空白窗口有差不多 1 秒
    santom
    santom
    Aug 25, 2022
    55
    如果只是简单的小工具,PWA 怎么样?
    debuggerx
    debuggerx
    Aug 25, 2022
    56
    @murmur https://github.com/debuggerx01/dde_gesture_manager
    flutter 做的客户端(还有 web 版),dart 写的后端,已经上架 deepin/UOS 的应用商店
    xiaochong
    xiaochong
    OP
    Aug 25, 2022
    57
    @debuggerx 学习一下
    duan602728596
    duan602728596
    Aug 25, 2022❤️4
    58
    根据 electron 好几年的开发经验,我推荐 electron ,原因如下:
    1. 从数据持久化上来讲,浏览器原生支持 localStorage 、sessionStorage 、IndexedDB 等,不需要在自己引入本地存储的解决方案
    2. 开启多线程比较容易,原生 WebWorker 支持
    3. 因为你使用了 react ,可以说复杂的界面的切换就很容易了(HashHistory)
    4. 打包跨平台,在 mac 上可以编译 mac 、linux 、window
    5. 可以在主线程开启子线程,启动其他服务
    6. electron 原生支持一些系统功能,比如文件选择器、多窗口等等
    7. 可以使用 electron-store 这种来存储相关配置
    反正你选择的时候也要考虑到周边的功能,有的时候这些反而会阻碍你的开发
    ysc3839
    ysc3839
    Aug 25, 2022
    59
    关于 tauri ,我觉得主要问题是要用 Rust 写后端,对前端开发者不友好。
    很多人吹 tauri 只是因为它是调用系统 WebView ,不需要自带一个 WebView ,完全没考虑到对前端开发者易用性问题。
    个人认为目前市场需要一个 Node.js+系统 WebView 的框架,但可惜并没有人开发。
    hst001
    hst001
    Aug 25, 2022❤️1
    60
    flutter desktop 目前虽说是 stable ,但有些问题还是蛮影响的,比如字体、platform view
    tauri 从 roadmap 上看,还不够成熟
    目前最成熟的应该还是 electron

    如果要考虑未来发展,那无疑是 flutter ,背靠大树
    grewer
    grewer
    Aug 25, 2022
    61
    tauri
    roundgis
    roundgis
    Aug 25, 2022 via Android
    62
    @Vaspike 調用系統 api 硬件接口方便嗎?
    AItsuki
    AItsuki
    Aug 25, 2022
    63
    electron, 几乎不用考虑别的了,如果你不想折腾的话。
    0xZhangKe
    0xZhangKe
    Aug 25, 2022
    64
    Jetpack Compose
    seakingii
    seakingii
    Aug 25, 2022❤️1
    65
    微软的.Net MAUI 可能会有比较好的发展前景,不过目前还不是很成熟,至少以下两点还不行:


    1 Windows : 不能生成单独的一个 EXE

    2 Linux : 还不能生成 Linux 的包, 目前只有微软的一个工程师在做探索


    目前已经可以生成:


    1 Windows 上 MSIX 的安装包

    2 Android

    3 iOs

    4 MacOs
    xuweifeng1987
    xuweifeng1987
    Aug 25, 2022
    66
    有 java 基础,首推 javafx 啊,分分钟就上手了
    fox0001
    fox0001
    Aug 25, 2022 via Android
    67
    本来想玩玩 QT ,只是需要 C++…
    nick0x01
    nick0x01
    Aug 25, 2022
    68
    当然是 Qt6 ,而且高分辨率适配也做的挺好了
    reallittoma
    reallittoma
    Aug 25, 2022
    69
    看下来只有一个人提到 Avalonia ,我觉得它是目前最稳定好用的类 WPF 跨平台方案了。
    duke807
    duke807
    Aug 25, 2022 via Android
    70
    純 html5
    或者 html5 + python 後台
    或者 wxWidgets
    reeco
    reeco
    Aug 25, 2022 via iPhone
    71
    你在这问不就是盲人摸象吗,有几个人开发过这玩意
    Bijiabo
    Bijiabo
    Aug 25, 2022
    72
    看了需求补充,感觉优先 Electron ,可以尝试 React Native ,绝对不要用 Flutter
    RickyC
    RickyC
    Aug 26, 2022
    73
    跨端方案

    桌面: electron
    移动端: flutter
    观望中: webview2, maui
    dixeran
    dixeran
    Aug 26, 2022
    74
    Tauri/Wails/Electron 是一类东西吧..自带浏览器和调用系统浏览器的区别,习惯哪个语言的 binding 选哪个。没有特殊理由不要选 QT ,人家大厂能组自己的控件库,个人开发者在 QT 上折腾 UI 基本上没有做得好看的。
    jones2000
    jones2000
    Aug 26, 2022
    75
    看项目预算了,钱少就上 web 。 预算充足就可以考虑 QT 什么的了。
    Vaspike
    Vaspike
    Aug 26, 2022
    76
    @roundgis #62
    我调的比较多的是串口,最好的库是: https://github.com/java-native/jssc
    其他的我觉得也问题不大
    likeme
    likeme
    Aug 26, 2022
    77
    用过 electron 开发的的桌面端软件好多,推荐 electron 。
    MeteorCat
    MeteorCat
    Aug 26, 2022 via Android
    78
    electron ,默认跨平台还得开发简单我就选他
    murmur
    murmur
    Aug 26, 2022
    79
    @reeco 网易云音乐,钉钉这些新一批跨平台桌面应用都是 electron 或者类 electron ,不是 electron 也是 cef
    不同的是

    1 、他们的 cef 或者 electron 有没有魔改过?
    2 、除了 cef 或者 electron ,别人自行或者使用的第三方库有多少?

    至于 web 部分用什么不重要,先排除一个 flutter ,用 vue 都比 flutter 开发网页应用靠谱
    99999999999
    99999999999
    Aug 26, 2022
    80
    公司用的 qt ,也是为了跨平台。二次开发用 swig 生成其它语言接口
    YUyu101
    YUyu101
    Aug 26, 2022
    81
    electron 不想折腾
    rocododd
    rocododd
    Aug 26, 2022
    82
    compose +1
    zhangxzh
    zhangxzh
    Aug 26, 2022 via Android
    83
    好厉害,qt 都出来了
    missdeer
    missdeer
    Aug 26, 2022
    84
    居然没人提到 Qt ,我刚刚搜了一下硬盘上的 Qt5Core.dll ,发现腾讯会议,企业微信,罗技,微软 OneDrive 都用到 Qt 了,远超我想像
    newmlp
    newmlp
    Aug 26, 2022
    85
    @missdeer 因为 op 不会 cpp
    marcong95
    marcong95
    Aug 26, 2022
    86
    @zyxk #48 好像微软已经通过 Windows Update 推这东西了,刚查了下,我公司的电脑也在几天前的自动装上了。家里那台应该更早,因为家里有用 365

    Microsoft 365 Apps 开始提供依赖于 Microsoft Edge WebView2 的新功能或改进功能。将从 2021 年 3 月 8 日开始安装 WebView2 Runtime 。
    wakarimasen
    wakarimasen
    Aug 26, 2022 via Android
    87
    也算是 v 站月经问题了。从你的技术栈出发最舒服的方式就是后台挂个 Java HTTP Server 然后打开 localhost:3000 里面是个 React SPA
    如果就是写个小工具足够了。
    当然这样的东西要分发就麻烦了,迁移到移动端似乎也不太可行。
    Chenhe
    Chenhe
    Aug 26, 2022 via Android
    88
    有点期待 compose desktop 。也有点期待 flutter web 。(真的很不喜欢 js/ts ,学不下去)
    debuggerx
    debuggerx
    Aug 26, 2022
    89
    @murmur 网易云音乐,钉钉 这些能叫新?牛逼。。
    移动端 flutter 是稳的,桌面和 web 不好说,但是 electron 肯定要被淘汰的
    pkwenda
    pkwenda
    Aug 26, 2022
    90
    真的强烈推荐楼主深入调研 flutter ,现在真的不错,万一以后写移动端呢
    murmur
    murmur
    Aug 26, 2022
    91
    @debuggerx 不新么,现在是减量市场,其余的东西我没有需求干嘛要安装,你做出来没用啊
    mh
    mh
    Aug 26, 2022
    92
    qt 、electron 路过
    debuggerx
    debuggerx
    Aug 26, 2022
    93
    @murmur 都是老古董了,而且在 linxu 下都有一堆问题。越是减量市场,还能保持发展的,越是说明优越性。按照你的说法,其实大家都不要写桌面程序了,LZ 也没必要选了,反正没人用
    lijy91
    lijy91
    Aug 26, 2022❤️2
    94
    我已经为各位填了一年的坑了,用 flutter desktop 的可以看看这里 https://github.com/leanflutter
    debuggerx
    debuggerx
    Aug 26, 2022
    95
    @murmur qt 、electron 、flutter 的桌面应用我都做过,都是小工具级别,都是同时保证三个桌面可用,不会乱说话。哪怕就只是做给自己用,作为开发,我也得选问题少的、写着爽的吧
    murmur
    murmur
    Aug 26, 2022
    96
    @debuggerx 有道理,所以有没有可能,跨平台是最大的问题,比如苹果他自己就不出应用,safari 和 itunes 都不给 windows 更新了,更别提 linux 支持
    debuggerx
    debuggerx
    Aug 26, 2022
    97
    @murmur 专有软件和通用软件能一样?所有还是要否定 LZ 的问题是伪命题?——跨平台开发是错误的
    murmur
    murmur
    Aug 26, 2022❤️1
    98
    @debuggerx 跨平台是个伪命题,这个词把人忽悠瘸了,应该叫复用,最多是复用多少,尤其是移动端和桌面端复用,这本身就是个难题,界面都得大改
    ufan0
    ufan0
    Aug 26, 2022
    99
    @murmur #98 深刻体会到你说的场景,个人开发起初若太重视跨平台是非常痛苦的。归根结底还是复用的多少。
    qianlifeng
    qianlifeng
    Aug 26, 2022
    100
    @lijy91 很赞, 之前就关注了
    1  2  
    ❮ ❯
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1666 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 147ms · UTC 17:15 · PVG 01:15 · LAX 09:15 · JFK 12:15
    ♥ Do have faith in what you're doing.