本人 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 ,原因如下:

  1. 从数据持久化上来讲,浏览器原生支持 localStorage 、sessionStorage 、IndexedDB 等,不需要在自己引入本地存储的解决方案
  2. 开启多线程比较容易,原生 WebWorker 支持
  3. 因为你使用了 react ,可以说复杂的界面的切换就很容易了(HashHistory)
  4. 打包跨平台,在 mac 上可以编译 mac 、linux 、window
  5. 可以在主线程开启子线程,启动其他服务
  6. electron 原生支持一些系统功能,比如文件选择器、多窗口等等
  7. 可以使用 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 深刻体会到你说的场景,个人开发起初若太重视跨平台是非常痛苦的。归根结底还是复用的多少。

很赞, 之前就关注了