2022 年, desktop app 开发(macos, windows, Linux )的跨平台框架是什么?
本人 JAVA 后端,有一些 react 的前端经验。打算开发一个 mac os 的小工具 app ,想了解下目前的跨平台框架对 desktop 的支持咋样?
fluter
react native
其他
关心几点:
成熟度和活跃性,未来发展
通用性,能否向 mobile ( ios ,android )和 tv ( tvOs 等)迁移
能沿用现在技术栈最好,也不很排斥新语言。感谢!
补充:
- 个人项目
- 目前无太复杂音视频功能,比较基本
目前的推荐情况:
electron 3
tauri 4
flutter 3
Jetbrains Compose 2
wails 2
.NET MAUI 4
React Native 1
目前看起来 flutter 的推荐最多。
还有提到 PWA 的,这个目前成熟了吗?
Compose for Desktop ??
做过后端的话, 也不需要学新语言
electron?
typo : flutter
去了解一下
electron flutter 现在对桌面支持还不太好 还有个 rust 的 tauri
如果想迁移到移动端,flutter 可以考虑
推荐一楼说的 Jetbrains Compose
在这上面我已经产出多个软件,跨平台 Kotlin 走的 jvm 生态没得说,移动端的话,这个框架本身就是 Compose Jetpapck 移植到桌面端的
公司项目还是个人项目? 公司不要用偏门技术,招不到人来接手.
建议明确一下需求,如果涉及到一些非界面相关的技术,例如音频、视频等,可能还要考虑硬件加速等场景,可能跨平台的开发相比选择特定平台相关的技术来说,更加痛苦。
最近看到个 wails ,还比较新。
只考虑 Windows 和 macOS 的话可以试试 React Native ,否则建议 Web
.NET MAUI
仅提供选项
巨硬家的东西有个特色,有挺多人骂,一边骂一边用。
有个新框架 tauri 可以了解一下,不过得学 rust ,界面就用 react 的 web 生态
flutter
flutter 我用下来感觉还是移动端为主,就是开发移动端顺便开发一个能用的桌面端这种感觉
electron 就是跨端霸主
/t/861083
从功能实现上来说,那 Electron 应该是第一,毕竟 web 天生的跨平台优势。但是卡,要不是卡也就不需要别的了。
只有追求性能才考虑其它的。如果是 Flutter on Desktop 和 React Native for Windows + macOS 。那还是选前者吧。
1 、这俩都是移动端为主的,桌面端都还不咋样
2 、前者是 Flutter 官方在搞,后者是巨硬在搞而不是 Facebook 本家
3 、React Native 的原理是转成原生组件,安卓和 IOS 的差异已经是个问题了,现在 Windows 和 macOS 再来,不敢想。
.NET MAUI +1
RN 感觉不太行,因为桌面端的支持不是官方的,RN 源头上设计时就不会考虑桌面端的各种特性
相比之下 flutter 的桌面端是官方做的
qt ?
tarui
Wails
Fyne
Electron
Tauri
Flutter
只有纯桌面端的话,tauri 不二之选
只是桌面的话 electron ,加上移动端建议 flutter
当然如果能 web 还是 web
.net 的 maui?
只考虑桌面端那就 Electron ,前端技术栈,非常成熟,生态完善,只是打包大。
还要考虑移动端,那目前只有 Flutter 看上去能用,但生态不如 Electron 成熟。
其他更不成熟的方案,我看好 Compose ,也是 skia 渲染,能保证平台一致性。至于 tauri ,那又用回系统 WebView 了。。
你们真用过 flutter 开发的桌面 app 、
Maui ,或者 Avaloina 。写 java 的 1 周内学不会 C#可以直接不要干这行了
tarui+1
electron
electron 套壳
electron
flutter 或 Jetbrains Compose
tarui 太新,说不准有啥坑
maui 桌面不行,目前默认不支持 exe 生成
有没有可能 C++ & ImGui
跨平台+高性能
说实话,不在乎性能可以上 electron ,对性能有要求只有 QT ,其他都不行,花里胡哨+追新技术并不适合做产品,玩玩还可以。。
竟然只有 2 个说 Qt 的🥲
那毕竟 QT 是真的干活的,QT 可是有 wps 这种级别的软件撑着,我感觉 flutter 这些东西在国内完全是为了绩效而生,他没有 h5 的生态基础,没有 html 、jsx 这些遍历的语法,错过了 app 野蛮发展的时期,等 flutter 吹起来的时候,国内 app 进入减量时代,反倒是小程序嘎嘎爆杀
我比较喜欢 QT 一点。
如果去问 archcn 社区的人,估计不会给你推荐 electron ,因为 wayland 的支持现在还不太好,特别是中文输入法,现在我的 chromium 的 fcitx5 中文候选框都乱跑。
(本来想换行的,按到 Ctrl 了,所以分了两条回复)
似乎有梯子是用 qt 做的,感觉 mac 下凑合用
qt 就是买授权比较费钱,wps 这种肯定买了授权的
i0.wp.com/embeddeduse.com/wp-content/uploads/2021/04/cost-qt-comm-lgpl-3.png?resize=1024%2C412&ssl=1
c++学习成本太高了,时间不等人,看好 flutter
embeddeduse.com/2021/04/18/using-qt-5-15-and-qt-6-under-lgplv3/
flutter
QT 。
#21 #30 #34
一个人 typo ,两个人复制粘贴
nw.js
为什么这么多推荐 tauri 的, 且不说需要学 rust , 10 及以下系统还要装运行库, 这点就不适合小工具了吧.
flutter 3.0.5 准备走微软应用商店流程上架了
我是上一年看了这篇文章后面试一下用 flutter 做桌面 app
blog.whidev.com/native-looking-desktop-app-with-flutter/
真有复杂需求 dart::ffi 其实也可以解决问题..我觉得 flutter 开发桌面端其实问题不大
会 Java 的话,感觉可以尝试下 flutter ,dart 和 java 很像
前后端分离,exe 跑服务,UI 跑在浏览器里
Jetbrains Compose 不错
manjaro gnome wayland 下,flutter dev 运行还是比 gtk 慢一点,空白窗口有差不多 1 秒
如果只是简单的小工具,PWA 怎么样?
github.com/debuggerx01/dde_gesture_manager
flutter 做的客户端(还有 web 版),dart 写的后端,已经上架 deepin/UOS 的应用商店
学习一下
根据 electron 好几年的开发经验,我推荐 electron ,原因如下:
- 从数据持久化上来讲,浏览器原生支持 localStorage 、sessionStorage 、IndexedDB 等,不需要在自己引入本地存储的解决方案
- 开启多线程比较容易,原生 WebWorker 支持
- 因为你使用了 react ,可以说复杂的界面的切换就很容易了(HashHistory)
- 打包跨平台,在 mac 上可以编译 mac 、linux 、window
- 可以在主线程开启子线程,启动其他服务
- electron 原生支持一些系统功能,比如文件选择器、多窗口等等
- 可以使用 electron-store 这种来存储相关配置
反正你选择的时候也要考虑到周边的功能,有的时候这些反而会阻碍你的开发
关于 tauri ,我觉得主要问题是要用 Rust 写后端,对前端开发者不友好。
很多人吹 tauri 只是因为它是调用系统 WebView ,不需要自带一个 WebView ,完全没考虑到对前端开发者易用性问题。
个人认为目前市场需要一个 Node.js+系统 WebView 的框架,但可惜并没有人开发。
flutter desktop 目前虽说是 stable ,但有些问题还是蛮影响的,比如字体、platform view
tauri 从 roadmap 上看,还不够成熟
目前最成熟的应该还是 electron
如果要考虑未来发展,那无疑是 flutter ,背靠大树
tauri
調用系統 api 硬件接口方便嗎?
electron, 几乎不用考虑别的了,如果你不想折腾的话。
Jetpack Compose
微软的.Net MAUI 可能会有比较好的发展前景,不过目前还不是很成熟,至少以下两点还不行:
1 Windows : 不能生成单独的一个 EXE
2 Linux : 还不能生成 Linux 的包, 目前只有微软的一个工程师在做探索
目前已经可以生成:
1 Windows 上 MSIX 的安装包
2 Android
3 iOs
4 MacOs
有 java 基础,首推 javafx 啊,分分钟就上手了
本来想玩玩 QT ,只是需要 C++…
当然是 Qt6 ,而且高分辨率适配也做的挺好了
看下来只有一个人提到 Avalonia ,我觉得它是目前最稳定好用的类 WPF 跨平台方案了。
純 html5
或者 html5 + python 後台
或者 wxWidgets
你在这问不就是盲人摸象吗,有几个人开发过这玩意
看了需求补充,感觉优先 Electron ,可以尝试 React Native ,绝对不要用 Flutter
跨端方案
桌面: electron
移动端: flutter
观望中: webview2, maui
Tauri/Wails/Electron 是一类东西吧..自带浏览器和调用系统浏览器的区别,习惯哪个语言的 binding 选哪个。没有特殊理由不要选 QT ,人家大厂能组自己的控件库,个人开发者在 QT 上折腾 UI 基本上没有做得好看的。
看项目预算了,钱少就上 web 。 预算充足就可以考虑 QT 什么的了。
#62
我调的比较多的是串口,最好的库是: github.com/java-native/jssc
其他的我觉得也问题不大
用过 electron 开发的的桌面端软件好多,推荐 electron 。
electron ,默认跨平台还得开发简单我就选他
网易云音乐,钉钉这些新一批跨平台桌面应用都是 electron 或者类 electron ,不是 electron 也是 cef
不同的是
1 、他们的 cef 或者 electron 有没有魔改过?
2 、除了 cef 或者 electron ,别人自行或者使用的第三方库有多少?
至于 web 部分用什么不重要,先排除一个 flutter ,用 vue 都比 flutter 开发网页应用靠谱
公司用的 qt ,也是为了跨平台。二次开发用 swig 生成其它语言接口
electron 不想折腾
compose +1
好厉害,qt 都出来了
居然没人提到 Qt ,我刚刚搜了一下硬盘上的 Qt5Core.dll ,发现腾讯会议,企业微信,罗技,微软 OneDrive 都用到 Qt 了,远超我想像
因为 op 不会 cpp
#48 好像微软已经通过 Windows Update 推这东西了,刚查了下,我公司的电脑也在几天前的自动装上了。家里那台应该更早,因为家里有用 365
Microsoft 365 Apps 开始提供依赖于 Microsoft Edge WebView2 的新功能或改进功能。将从 2021 年 3 月 8 日开始安装 WebView2 Runtime 。
也算是 v 站月经问题了。从你的技术栈出发最舒服的方式就是后台挂个 Java HTTP Server 然后打开 localhost:3000 里面是个 React SPA
如果就是写个小工具足够了。
当然这样的东西要分发就麻烦了,迁移到移动端似乎也不太可行。
有点期待 compose desktop 。也有点期待 flutter web 。(真的很不喜欢 js/ts ,学不下去)
网易云音乐,钉钉 这些能叫新?牛逼。。
移动端 flutter 是稳的,桌面和 web 不好说,但是 electron 肯定要被淘汰的
真的强烈推荐楼主深入调研 flutter ,现在真的不错,万一以后写移动端呢
不新么,现在是减量市场,其余的东西我没有需求干嘛要安装,你做出来没用啊
qt 、electron 路过
都是老古董了,而且在 linxu 下都有一堆问题。越是减量市场,还能保持发展的,越是说明优越性。按照你的说法,其实大家都不要写桌面程序了,LZ 也没必要选了,反正没人用
我已经为各位填了一年的坑了,用 flutter desktop 的可以看看这里 github.com/leanflutter
qt 、electron 、flutter 的桌面应用我都做过,都是小工具级别,都是同时保证三个桌面可用,不会乱说话。哪怕就只是做给自己用,作为开发,我也得选问题少的、写着爽的吧
有道理,所以有没有可能,跨平台是最大的问题,比如苹果他自己就不出应用,safari 和 itunes 都不给 windows 更新了,更别提 linux 支持
专有软件和通用软件能一样?所有还是要否定 LZ 的问题是伪命题?——跨平台开发是错误的
跨平台是个伪命题,这个词把人忽悠瘸了,应该叫复用,最多是复用多少,尤其是移动端和桌面端复用,这本身就是个难题,界面都得大改
#98 深刻体会到你说的场景,个人开发起初若太重视跨平台是非常痛苦的。归根结底还是复用的多少。
很赞, 之前就关注了
现在不知道什么情况,本来打算睡个觉起来东西就编译好了,早上起来发现电脑是全新的重启了?为啥重启呢?---好像是自动更新了,msmmp “累积更新”,说明 Windows 自己…
近期搬家,想弄一个自己下班后可以“再学习”的书桌,想看看各位的书桌,工作台是怎么布置 最主要的就是显示器了,挺纠结的。要大的还是小的。现在在公司里面用的 未来视野 mini 那…
各位 V2EX 上的大佬,请问这是用的什么技术? 拿到行业内的一个产品测试,对方要求提供一个服务器,将服务器 SSH 交给对方后,对方技术在服务器上一通操作部署后,服务器已经无…