本人 JAVA 后端,有一些 react 的前端经验。打算开发一个 mac os 的小工具 app ,想了解下目前的跨平台框架对 desktop 的支持咋样?
关心几点:
能沿用现在技术栈最好,也不很排斥新语言。感谢!
1
zhangxzh 2022-08-25 11:21:31 +08:00
Compose for Desktop ??
做过后端的话, 也不需要学新语言 |
2
hex2en 2022-08-25 11:22:19 +08:00 7
electron?
|
3
xiaochong OP typo : flutter
|
5
dreasky 2022-08-25 11:34:55 +08:00
electron flutter 现在对桌面支持还不太好 还有个 rust 的 tauri
|
6
huohei 2022-08-25 11:38:38 +08:00
如果想迁移到移动端,flutter 可以考虑
|
7
Vaspike 2022-08-25 11:38:38 +08:00 1
推荐一楼说的 Jetbrains Compose
在这上面我已经产出多个软件,跨平台 Kotlin 走的 jvm 生态没得说,移动端的话,这个框架本身就是 Compose Jetpapck 移植到桌面端的 |
8
zhuweiyou 2022-08-25 11:40:04 +08:00
公司项目还是个人项目? 公司不要用偏门技术,招不到人来接手.
|
9
Bijiabo 2022-08-25 11:42:51 +08:00
建议明确一下需求,如果涉及到一些非界面相关的技术,例如音频、视频等,可能还要考虑硬件加速等场景,可能跨平台的开发相比选择特定平台相关的技术来说,更加痛苦。
|
10
stoluoyu 2022-08-25 11:54:27 +08:00
最近看到个 wails ,还比较新。
|
11
ysc3839 2022-08-25 11:59:39 +08:00
只考虑 Windows 和 macOS 的话可以试试 React Native ,否则建议 Web
|
12
respawn 2022-08-25 12:09:28 +08:00 1
.NET MAUI
仅提供选项 巨硬家的东西有个特色,有挺多人骂,一边骂一边用。 |
13
nojsja 2022-08-25 12:11:49 +08:00
有个新框架 tauri 可以了解一下,不过得学 rust ,界面就用 react 的 web 生态
|
14
sardina 2022-08-25 12:13:13 +08:00 via iPhone
flutter
|
15
Scirocco 2022-08-25 12:16:56 +08:00
flutter 我用下来感觉还是移动端为主,就是开发移动端顺便开发一个能用的桌面端这种感觉
|
16
renmu 2022-08-25 12:22:02 +08:00 via Android 1
electron 就是跨端霸主
|
17
dcsuibian 2022-08-25 12:43:35 +08:00 1
/t/861083
从功能实现上来说,那 Electron 应该是第一,毕竟 web 天生的跨平台优势。但是卡,要不是卡也就不需要别的了。 只有追求性能才考虑其它的。如果是 Flutter on Desktop 和 React Native for Windows + macOS 。那还是选前者吧。 1 、这俩都是移动端为主的,桌面端都还不咋样 2 、前者是 Flutter 官方在搞,后者是巨硬在搞而不是 Facebook 本家 3 、React Native 的原理是转成原生组件,安卓和 IOS 的差异已经是个问题了,现在 Windows 和 macOS 再来,不敢想。 |
18
thtznet 2022-08-25 12:50:29 +08:00 1
.NET MAUI +1
|
19
mxT52CRuqR6o5 2022-08-25 12:54:37 +08:00
RN 感觉不太行,因为桌面端的支持不是官方的,RN 源头上设计时就不会考虑桌面端的各种特性
相比之下 flutter 的桌面端是官方做的 |
20
lozzow 2022-08-25 13:04:07 +08:00
qt ?
|
21
theohateonion 2022-08-25 13:13:05 +08:00
tarui
|
22
licoycn 2022-08-25 13:22:25 +08:00
Wails
Fyne Electron Tauri Flutter |
23
SingeeKing 2022-08-25 13:22:58 +08:00
只有纯桌面端的话,tauri 不二之选
|
24
276562578 2022-08-25 13:23:01 +08:00
只是桌面的话 electron ,加上移动端建议 flutter
|
25
276562578 2022-08-25 13:23:19 +08:00
当然如果能 web 还是 web
|
26
EvanQu 2022-08-25 13:33:29 +08:00 1
.net 的 maui?
|
27
icyalala 2022-08-25 13:46:19 +08:00
只考虑桌面端那就 Electron ,前端技术栈,非常成熟,生态完善,只是打包大。
还要考虑移动端,那目前只有 Flutter 看上去能用,但生态不如 Electron 成熟。 其他更不成熟的方案,我看好 Compose ,也是 skia 渲染,能保证平台一致性。至于 tauri ,那又用回系统 WebView 了。。 |
28
murmur 2022-08-25 13:48:38 +08:00
你们真用过 flutter 开发的桌面 app 、
|
29
sinnosong1 2022-08-25 13:50:45 +08:00 1
Maui ,或者 Avaloina 。写 java 的 1 周内学不会 C#可以直接不要干这行了
|
30
zhailei2011 2022-08-25 13:52:34 +08:00
tarui+1
|
31
xiaojun996 2022-08-25 14:49:42 +08:00
electron
|
32
wanguorui123 2022-08-25 14:52:40 +08:00
electron 套壳
|
33
zjsxwc 2022-08-25 15:03:45 +08:00
electron
|
34
elechi 2022-08-25 15:15:43 +08:00
flutter 或 Jetbrains Compose
tarui 太新,说不准有啥坑 maui 桌面不行,目前默认不支持 exe 生成 |
35
churchill 2022-08-25 15:22:47 +08:00
有没有可能 C++ & ImGui
跨平台+高性能 |
36
coolair 2022-08-25 15:25:02 +08:00 2
说实话,不在乎性能可以上 electron ,对性能有要求只有 QT ,其他都不行,花里胡哨+追新技术并不适合做产品,玩玩还可以。。
|
37
0312birdzhang 2022-08-25 17:06:52 +08:00 2
竟然只有 2 个说 Qt 的🥲
|
38
murmur 2022-08-25 17:11:47 +08:00 2
@0312birdzhang 那毕竟 QT 是真的干活的,QT 可是有 wps 这种级别的软件撑着,我感觉 flutter 这些东西在国内完全是为了绩效而生,他没有 h5 的生态基础,没有 html 、jsx 这些遍历的语法,错过了 app 野蛮发展的时期,等 flutter 吹起来的时候,国内 app 进入减量时代,反倒是小程序嘎嘎爆杀
|
39
LindsayZhou 2022-08-25 17:13:12 +08:00
我比较喜欢 QT 一点。
|
40
LindsayZhou 2022-08-25 17:16:49 +08:00 1
@LindsayZhou 如果去问 archcn 社区的人,估计不会给你推荐 electron ,因为 wayland 的支持现在还不太好,特别是中文输入法,现在我的 chromium 的 fcitx5 中文候选框都乱跑。
(本来想换行的,按到 Ctrl 了,所以分了两条回复) |
41
iamqk 2022-08-25 17:19:48 +08:00
似乎有梯子是用 qt 做的,感觉 mac 下凑合用
|
42
zjsxwc 2022-08-25 17:20:28 +08:00
|
44
zjsxwc 2022-08-25 17:21:21 +08:00
|
45
obwj 2022-08-25 17:24:30 +08:00
flutter
|
46
whoami9894 2022-08-25 17:26:20 +08:00
|
47
flowerpiggy 2022-08-25 17:26:32 +08:00
nw.js
|
48
zyxk 2022-08-25 17:28:36 +08:00
为什么这么多推荐 tauri 的, 且不说需要学 rust , 10 及以下系统还要装运行库, 这点就不适合小工具了吧.
|
49
youxiachai 2022-08-25 17:30:48 +08:00
@murmur flutter 3.0.5 准备走微软应用商店流程上架了
|
50
youxiachai 2022-08-25 17:35:05 +08:00
@murmur 我是上一年看了这篇文章后面试一下用 flutter 做桌面 app
https://blog.whidev.com/native-looking-desktop-app-with-flutter/ 真有复杂需求 dart::ffi 其实也可以解决问题..我觉得 flutter 开发桌面端其实问题不大 |
51
mejee 2022-08-25 17:39:52 +08:00
会 Java 的话,感觉可以尝试下 flutter ,dart 和 java 很像
|
52
Kasumi20 2022-08-25 18:00:27 +08:00
前后端分离,exe 跑服务,UI 跑在浏览器里
|
53
WebKit 2022-08-25 18:18:17 +08:00 via Android
Jetbrains Compose 不错
|
54
treblex 2022-08-25 18:27:58 +08:00
manjaro gnome wayland 下,flutter dev 运行还是比 gtk 慢一点,空白窗口有差不多 1 秒
|
55
santom 2022-08-25 18:34:49 +08:00
如果只是简单的小工具,PWA 怎么样?
|
56
debuggerx 2022-08-25 18:48:50 +08:00
@murmur https://github.com/debuggerx01/dde_gesture_manager
flutter 做的客户端(还有 web 版),dart 写的后端,已经上架 deepin/UOS 的应用商店 |
58
duan602728596 2022-08-25 18:54:46 +08:00 4
根据 electron 好几年的开发经验,我推荐 electron ,原因如下:
1. 从数据持久化上来讲,浏览器原生支持 localStorage 、sessionStorage 、IndexedDB 等,不需要在自己引入本地存储的解决方案 2. 开启多线程比较容易,原生 WebWorker 支持 3. 因为你使用了 react ,可以说复杂的界面的切换就很容易了(HashHistory) 4. 打包跨平台,在 mac 上可以编译 mac 、linux 、window 5. 可以在主线程开启子线程,启动其他服务 6. electron 原生支持一些系统功能,比如文件选择器、多窗口等等 7. 可以使用 electron-store 这种来存储相关配置 反正你选择的时候也要考虑到周边的功能,有的时候这些反而会阻碍你的开发 |
59
ysc3839 2022-08-25 19:00:57 +08:00
关于 tauri ,我觉得主要问题是要用 Rust 写后端,对前端开发者不友好。
很多人吹 tauri 只是因为它是调用系统 WebView ,不需要自带一个 WebView ,完全没考虑到对前端开发者易用性问题。 个人认为目前市场需要一个 Node.js+系统 WebView 的框架,但可惜并没有人开发。 |
60
hst001 2022-08-25 19:13:56 +08:00 1
flutter desktop 目前虽说是 stable ,但有些问题还是蛮影响的,比如字体、platform view
tauri 从 roadmap 上看,还不够成熟 目前最成熟的应该还是 electron 如果要考虑未来发展,那无疑是 flutter ,背靠大树 |
61
grewer 2022-08-25 19:21:06 +08:00
tauri
|
63
AItsuki 2022-08-25 19:41:32 +08:00
electron, 几乎不用考虑别的了,如果你不想折腾的话。
|
64
0xZhangKe 2022-08-25 19:52:24 +08:00
Jetpack Compose
|
65
seakingii 2022-08-25 21:19:08 +08:00 1
微软的.Net MAUI 可能会有比较好的发展前景,不过目前还不是很成熟,至少以下两点还不行:
1 Windows : 不能生成单独的一个 EXE 2 Linux : 还不能生成 Linux 的包, 目前只有微软的一个工程师在做探索 目前已经可以生成: 1 Windows 上 MSIX 的安装包 2 Android 3 iOs 4 MacOs |
66
xuweifeng1987 2022-08-25 21:42:56 +08:00
有 java 基础,首推 javafx 啊,分分钟就上手了
|
67
fox0001 2022-08-25 21:46:54 +08:00 via Android
本来想玩玩 QT ,只是需要 C++…
|
68
nick0x01 2022-08-25 22:37:25 +08:00
当然是 Qt6 ,而且高分辨率适配也做的挺好了
|
69
reallittoma 2022-08-25 22:39:52 +08:00
看下来只有一个人提到 Avalonia ,我觉得它是目前最稳定好用的类 WPF 跨平台方案了。
|
70
duke807 2022-08-25 22:42:12 +08:00 via Android
純 html5
或者 html5 + python 後台 或者 wxWidgets |
71
reeco 2022-08-25 23:35:32 +08:00 via iPhone
你在这问不就是盲人摸象吗,有几个人开发过这玩意
|
72
Bijiabo 2022-08-25 23:52:45 +08:00
看了需求补充,感觉优先 Electron ,可以尝试 React Native ,绝对不要用 Flutter
|
73
RickyC 2022-08-26 00:25:14 +08:00
跨端方案
桌面: electron 移动端: flutter 观望中: webview2, maui |
74
dixeran 2022-08-26 00:46:32 +08:00
Tauri/Wails/Electron 是一类东西吧..自带浏览器和调用系统浏览器的区别,习惯哪个语言的 binding 选哪个。没有特殊理由不要选 QT ,人家大厂能组自己的控件库,个人开发者在 QT 上折腾 UI 基本上没有做得好看的。
|
75
jones2000 2022-08-26 01:02:03 +08:00
看项目预算了,钱少就上 web 。 预算充足就可以考虑 QT 什么的了。
|
76
Vaspike 2022-08-26 08:49:22 +08:00
|
77
likeme 2022-08-26 08:53:55 +08:00
用过 electron 开发的的桌面端软件好多,推荐 electron 。
|
78
MeteorCat 2022-08-26 09:07:36 +08:00 via Android
electron ,默认跨平台还得开发简单我就选他
|
79
murmur 2022-08-26 09:13:47 +08:00
@reeco 网易云音乐,钉钉这些新一批跨平台桌面应用都是 electron 或者类 electron ,不是 electron 也是 cef
不同的是 1 、他们的 cef 或者 electron 有没有魔改过? 2 、除了 cef 或者 electron ,别人自行或者使用的第三方库有多少? 至于 web 部分用什么不重要,先排除一个 flutter ,用 vue 都比 flutter 开发网页应用靠谱 |
80
99999999999 2022-08-26 09:19:24 +08:00
公司用的 qt ,也是为了跨平台。二次开发用 swig 生成其它语言接口
|
81
YUyu101 2022-08-26 09:20:11 +08:00
electron 不想折腾
|
82
rocododd 2022-08-26 09:26:27 +08:00
compose +1
|
83
zhangxzh 2022-08-26 09:29:02 +08:00 via Android
好厉害,qt 都出来了
|
84
missdeer 2022-08-26 09:31:10 +08:00
居然没人提到 Qt ,我刚刚搜了一下硬盘上的 Qt5Core.dll ,发现腾讯会议,企业微信,罗技,微软 OneDrive 都用到 Qt 了,远超我想像
|
86
marcong95 2022-08-26 09:38:55 +08:00
@zyxk #48 好像微软已经通过 Windows Update 推这东西了,刚查了下,我公司的电脑也在几天前的自动装上了。家里那台应该更早,因为家里有用 365
Microsoft 365 Apps 开始提供依赖于 Microsoft Edge WebView2 的新功能或改进功能。将从 2021 年 3 月 8 日开始安装 WebView2 Runtime 。 |
87
angrylid 2022-08-26 09:40:56 +08:00 via Android
也算是 v 站月经问题了。从你的技术栈出发最舒服的方式就是后台挂个 Java HTTP Server 然后打开 localhost:3000 里面是个 React SPA
如果就是写个小工具足够了。 当然这样的东西要分发就麻烦了,迁移到移动端似乎也不太可行。 |
88
Chenhe 2022-08-26 09:42:56 +08:00 via Android
有点期待 compose desktop 。也有点期待 flutter web 。(真的很不喜欢 js/ts ,学不下去)
|
89
debuggerx 2022-08-26 09:44:03 +08:00
@murmur 网易云音乐,钉钉 这些能叫新?牛逼。。
移动端 flutter 是稳的,桌面和 web 不好说,但是 electron 肯定要被淘汰的 |
90
pkwenda 2022-08-26 09:47:24 +08:00
真的强烈推荐楼主深入调研 flutter ,现在真的不错,万一以后写移动端呢
|
92
mh 2022-08-26 09:54:02 +08:00
qt 、electron 路过
|
93
debuggerx 2022-08-26 09:56:41 +08:00
@murmur 都是老古董了,而且在 linxu 下都有一堆问题。越是减量市场,还能保持发展的,越是说明优越性。按照你的说法,其实大家都不要写桌面程序了,LZ 也没必要选了,反正没人用
|
94
lijy91 2022-08-26 09:57:03 +08:00 2
我已经为各位填了一年的坑了,用 flutter desktop 的可以看看这里 https://github.com/leanflutter
|
95
debuggerx 2022-08-26 09:59:38 +08:00
@murmur qt 、electron 、flutter 的桌面应用我都做过,都是小工具级别,都是同时保证三个桌面可用,不会乱说话。哪怕就只是做给自己用,作为开发,我也得选问题少的、写着爽的吧
|
96
murmur 2022-08-26 10:01:39 +08:00
@debuggerx 有道理,所以有没有可能,跨平台是最大的问题,比如苹果他自己就不出应用,safari 和 itunes 都不给 windows 更新了,更别提 linux 支持
|
98
murmur 2022-08-26 10:12:23 +08:00 1
@debuggerx 跨平台是个伪命题,这个词把人忽悠瘸了,应该叫复用,最多是复用多少,尤其是移动端和桌面端复用,这本身就是个难题,界面都得大改
|
100
qianlifeng 2022-08-26 10:25:55 +08:00
@lijy91 很赞, 之前就关注了
|