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

桌面端技术选型求指导

  •  
  •   windpinw · 3 天前 · 4759 次点击

    先说背景,公司要做的,小工具辅助客户的级别,商业软件,非大型项目。

    1. 核心逻辑部分已经有十分完备的 java 实现(可以从公司主项目抄过来)
    2. 希望尽量轻量化。
    3. 目前在考虑桌面端的框架。 JavaFx: 不考虑,社区不好,支持少 Swing: 最容易和逻辑部分结合,比较担心 UI 方面能否实现较好的效果,或者 effort 是不是比较大 Electron: UI 不担心,但是逻辑处理的部分需要用 js 重构一次,后续的迭代大概率还要继续参考主项目的代码 进行重构。除非独立部署一个 java web 服务器让逻辑部分单独出来。 Native 类的 C++/C#:主项目就是用这些写的,开发负担比较重,估计不考虑。除非有很好的解决方案。

    广泛吸纳意见,希望看看我上面的想法有哪些是过虑的,或者各位有什么建议都可以说说。 如有表达不到位的地方还请指出

    第 1 条附言  ·  2 天前
    -----------------------------
    感谢大家的意见,目前看到的意见大概有:

    1. Kotlin Compose
    2. Electron 单独起 java 服务
    3. JavaFx 内嵌 webview
    4. Native

    另外再补充一点,小工具以读,展示内容为主,写,输入的操作不多。

    关于这些方案我周末再研究一下,下周跟老大开会确定,有定论我会更新一下。
    67 条回复    2021-11-28 10:37:48 +08:00
    kujio
        1
    kujio   3 天前
    如果会 android 的话,可以考虑试试 kotlin compose
    xuxuxu123
        2
    xuxuxu123   3 天前
    我的想法就是 Electron ,然后 java 器 web 服务
    ryougifujino
        3
    ryougifujino   3 天前
    https://github.com/JetBrains/compose-jb

    这个如何,使用 Kotlin ,和 Java 的互操作性不用担心。
    luchong
        4
    luchong   3 天前
    WPF
    kujio
        5
    kujio   3 天前
    kotlin compose Ui 组件可以参考这个:https://github.com/Gurupreet/ComposeCookBook
    UI 组件很全,自定义也很灵活,
    Otho
        6
    Otho   3 天前   ❤️ 2
    Electron + gRpc + Java
    bjzhou1990
        7
    bjzhou1990   3 天前   ❤️ 1
    可以考虑 Flutter ,Desktop 版本也算比较成熟了
    maichael
        8
    maichael   3 天前
    没有跨系统的需求的话不要使用 Electron 和 Flutter 等
    yazinnnn
        9
    yazinnnn   3 天前
    compose
    bsg1992
        10
    bsg1992   3 天前
    duan602728596
        11
    duan602728596   3 天前
    我的想法和 2L 一样,推荐使用 Electron 。然后建议使用 react 或者 vue 全家桶开发单页应用。
    用 Electron 的优点就是跨平台,系统的能力有 Node 和 chromium 来解决,编译可以跨平台且直接分发。
    这是我个人写的基于 Electron 的项目( https://github.com/duan602728596/48tools ),里面有一堆功能,直接编译到 5 个平台,你可以参考一下。
    MasterMonkey
        12
    MasterMonkey   3 天前 via iPhone
    @Otho 我支持这个
    happinessnch
        13
    happinessnch   3 天前
    重表现,用 Electron
    重交互、多系统调用,用 Native ( QT ,WPF ,WinForm 等)
    makelove
        14
    makelove   3 天前
    除非有特别的硬性需求否则无脑上 Electron,最近几年被证明的最佳 UI 方式, java 就单独起个进程就行最好别搞二套逻辑
    darknoll
        15
    darknoll   3 天前
    这年头好看>效率,当然用 Electron
    juzisang
        16
    juzisang   3 天前   ❤️ 1
    可以试试 https://github.com/tauri-apps/tauri
    体积小,也是 webview 套壳,个人感觉实现比 Electron 规范和优雅很多
    ysc3839
        17
    ysc3839   3 天前
    JavaFX WebView 或者 JCEF ? https://bitbucket.org/chromiumembedded/java-cef
    这两个方案类似 Electron 跨平台,可以用 Web 做界面,但是后端不跟 js 强绑定,可以直接用 Java 代码做后端。(前端当然还得写 js)
    IsaacYoung
        18
    IsaacYoung   3 天前 via iPhone
    electron 吧
    xiaoyanbot
        19
    xiaoyanbot   3 天前
    nw.js
    pengtdyd
        20
    pengtdyd   3 天前
    @bjzhou1990 目前 Flutter Desktop 不推荐使用
    zjsxwc
        21
    zjsxwc   3 天前 via Android
    这种 electron 与 java 全都要?
    https://github.com/jreznot/electron-java-app
    Buges
        22
    Buges   3 天前 via Android
    已经用 Java 写好了,那肯定继续用 Java 。
    啥情况都无脑推 electron 的,是内存太多没地方用吗?
    nojsja
        23
    nojsja   3 天前
    之前一直写 electron ,现在正在学习和尝试 tauri+rust
    amai0w0
        24
    amai0w0   3 天前 via Android
    @bjzhou1990 现在用 Flutter 开发 Windows 桌面程序的都是真勇士,Desktop 应该还没发正式版吧
    jlkm2010
        25
    jlkm2010   3 天前
    JavaFX WebView
    MakHoCheung
        26
    MakHoCheung   2 天前
    小工具的话用 jfx 没啥问题吧,直接上 java17 ,可以 jlink 成一个自包含的应用,如果类库不怎么多反射的话还可以用 gluon substrate 编译成原生二进制程序。当然楼主一开始就否了 jfx ,我这回复多余的
    nicevar
        27
    nicevar   2 天前
    给什么人用?如果只是少量用户很单一,什么选型都不重要,但是用户复杂的话,不要用 Electron 这种,开发出来了可能会被拒绝使用,体积大效率低,很多开发者喜欢用 Electron 开发,但是做出来的软件自己都不用。
    Flutter 就更不要用了,这种不成熟的东西用起来就是坑,现在连 Android 上开发出来的软件问题都很多,编辑框的问题到现在还没解决
    ashong
        28
    ashong   2 天前 via iPhone
    chromium + js + c++
    akira
        29
    akira   2 天前   ❤️ 1
    Native 类的 C++/C#:主项目就是用这些写的

    主项目用这个写,说明你们主要的技术栈就是这个了,那还换啥语言啊
    mirage13
        30
    mirage13   2 天前
    用 qt 啊
    kun775
        31
    kun775   2 天前   ❤️ 1
    windows 桌面应用无脑 winform 或 wpf 就 OK 了
    skinny
        32
    skinny   2 天前
    别信什么 Electron 体积大效率低什么的说法,一般应用根本到不了那个瓶颈,除非你的 UI 代码和知乎微博那些桌面网页代码一样实在烂得没边
    ming159
        33
    ming159   2 天前   ❤️ 1
    C#吧,Winform ,拖拽个界面。使用 HTTP 协议与 Java 通信交换数据,例如 Flurl ;
    然后 Java 端内置一个 Jetty 作为 web 服务;

    缺点: 仅适用于 Windows ,无法跨平台;界面稍微不注意会很丑
    优点: 快,Java 端逻辑可以完全复用。
    youxiachai
        34
    youxiachai   2 天前
    @amai0w0 flutter 2.5 desktop 已经发正式了....
    youxiachai
        35
    youxiachai   2 天前
    @nicevar 不是写着商业项目吗.... Electron 感觉完美...美团饿了么商家端程序都是这个..
    sgissb1
        36
    sgissb1   2 天前
    Electron 就可以了,界面这一块不该投入太多去搞。h5 做界面多快啊。
    newmlp
        37
    newmlp   2 天前
    Electron 看看客户接不接受,不接受就 Qt ,基本靠谱的桌面开发就这两个了
    newmlp
        38
    newmlp   2 天前
    @skinny 千万别用自己的环境去想象客户的环境,有些人还用是古董机器,electron 可能都启动不了。。。
    darknoll
        39
    darknoll   2 天前
    @newmlp 还有一个 cef 也是靠谱的,就是资料太少
    caryyu
        40
    caryyu   2 天前
    如果主项目已经有了前端展示,直接上 Electron ,移植到桌面。
    youxiachai
        41
    youxiachai   2 天前
    @newmlp 我用 win 10 的 atom 都跑过 electron.... 在怎么古董也不至于此吧...能给几十万甚至上百万的项目的,不至于吧
    hez2010
        42
    hez2010   2 天前 via Android
    可以用 Avalonia 开发跨平台 GUI: https://github.com/AvaloniaUI/Avalonia
    newmlp
        43
    newmlp   2 天前
    @youxiachai 什么奇葩环境和用户都有,没遇到是你运气好
    heytap
        44
    heytap   2 天前
    尽管很多人吐槽 但我还是得推下 electron
    WenhaoWu
        45
    WenhaoWu   2 天前 via Android
    自己开发 electron ,但是很抗拒 electron 的 app +1 。BTW, Flutter 的桌面端至少在 Mac 上比 Electron 流畅
    auroraccc
        46
    auroraccc   2 天前
    商业软件不推荐 flutter 或者 tauri 。。
    icyalala
        47
    icyalala   2 天前
    论社区当然是 Electron ,和其他方案不是一个级别的,但前提是重构 /重写。
    如果不想重写,想复用 Java 栈,那还是考虑下 JavaFX 吧。
    icyalala
        48
    icyalala   2 天前
    至于上面说的 Flutter ,如果愿意承担 Dart 重写的成本,那还不如用回 Electron 呢。
    Accessing
        49
    Accessing   2 天前   ❤️ 1
    JavaFx 没你想的那么糟糕,实际上这个工具很不错。你如果觉得不行,那你就给出哪个地方具体不行的理由,而不是笼统的说生态不好之类的。当你这么做之后,你可能会发现完全可以满足自己的需要。
    s127
        50
    s127   2 天前
    如果没有复杂的界面布局,没有高性能显示要求(大量绘图、3D 图等),仅仅是一个小工具,建议上 javaFX 。既然公司核心是 java ,自然不缺 java 开发人员。javaFX 入门用不了几天,官方文档也还不错。后期如果有其他非 win 系统部署,迁移更容易。
    silencelixing
        51
    silencelixing   2 天前
    Electron 和 QT ,对样式要求高就用 electron ,对流畅图要求高就用 qt ,当然如果两者都要求高的话,那可以考虑考虑 flutter (🤪)
    ainimuyan
        52
    ainimuyan   2 天前
    如果是对项目负责,当然延续 Java 使用 JavaFX ,除非你对其他桌面技术非常非常熟悉,重写或翻译逻辑非常快。
    如果你出于个人原因想搞点别的技术,建议整个小项目自己玩。
    longear
        53
    longear   2 天前
    nw.js 到底行不行, 用过的人来说一说
    iikebug
        54
    iikebug   2 天前
    @longear nw.js 比 electron 唯一的优势是源码加密
    3dwelcome
        56
    3dwelcome   2 天前
    electron+1 ,毕竟前端 npm 轮子多多。

    你用 Native 只能写点简单的页面,复杂的组件还要自己造轮子,多累。
    abcbuzhiming
        57
    abcbuzhiming   2 天前
    @skinny Electron 就是体积大效率低,怎么,烂还不准人说是把? Electron 这东西唯一的好就是对"开发者友好",尤其是对前端出身的开发者友好,做出来的东西,性能和原生差几条街,用户的机器不当钱,吃 CPU 内存没有上限。想吹 Electron ,麻烦等用原生程序成长起来的那一代使用者死光了再说

    想用 Electron ,我不反对,反正这东西,程序员用起来是很爽,骂娘的都是用户
    skinny
        58
    skinny   2 天前
    @abcbuzhiming 行,这就扣上吹 Electron 帽子了,你爱用 native 就用 native ,SB
    3dwelcome
        59
    3dwelcome   2 天前
    @abcbuzhiming

    “做出来的东西,性能和原生差几条街,用户的机器不当钱,吃 CPU 内存没有上限。”

    那要看具体是做什么了,以前有不少 V2 开发者提问,为什么十几万的树节点,在 vue 里拖动那么卡。

    我只能说,网页端确实不适合处理这种超大数据的应用。

    可是普通的小工具小应用,用 JS 写写,还是异常方便的。
    iikebug
        60
    iikebug   2 天前
    @abcbuzhiming Electron + 原生插件绑定,效果不会差的,纯 js 的性能确实不太行
    wdwwtzy
        61
    wdwwtzy   2 天前   ❤️ 1
    我觉得桌面开发首选 C#,其他的你都会踩到各种各样的坑
    superchijinpeng
        62
    superchijinpeng   2 天前
    Kotlin Compose
    creanme
        63
    creanme   2 天前   ❤️ 1
    WPF ?不太喜欢 Electron
    dk7952638
        64
    dk7952638   2 天前
    @auroraccc 为什么?是因为授权许可吗?
    yolee599
        65
    yolee599   1 天前 via Android
    Electron 不好用,体积大还吃配置,推荐的应该都是写 web 的程序员
    wxw752
        66
    wxw752   1 天前
    Electron 和 WPF 都敲过,投 Electron 一票
    whi147
        67
    whi147   11 小时 22 分钟前 via iPhone
    @darknoll 我 github 有一套开源的 cef 做底子,h5 做界面的 demo
    关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2466 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 14:00 · PVG 22:00 · LAX 06:00 · JFK 09:00
    ♥ Do have faith in what you're doing.