跨平台的桌面应用开发,技术框架选择

个人的需求:

  1. 能够快速开发;毕竟生产力很重要。
  2. 打包后的体积不能太大;用户大部分是普通客户,不会安装基础环境。
  3. 跨平台;日常主要还是用mac做为主力开发机,所以强烈需要跨平台。

入围技术

  1. flutter
    flutter现在已经能全平台支持了;不仅是android,ios,现在web和桌面应用也都能支持的很好。
  2. electronic
    基于nodejs的,vscode就是采用electronic作为底层实现的,而且用html+css开发,开发效率确实会很快。
  3. wxPython和pyqt
    两者类似,都是用python语言开发。前者是对wxWidgets的封装,后者是对大名鼎鼎的qt的封装。
  4. java的ui实现
    java的ui框架有swing,但是不更新了,还有javaFX和eclipse的swt。
  5. Tauri
    采用rust语言的底层实现,界面开发也可以使用html+css。
    Tauri 是一个框架,用于为所有主要桌面平台构建小巧、快速的二进制文件。开发人员可以集成任何可编译为 HTML、JS 和 CSS 的前端框架,以构建他们的用户界面。应用程序的后端是一个基于 Rust 的二进制文件,带有一个前端可以与之交互的 API。

总结

最后根据我个人的需求做筛选和最终决定:

  1. flutter 符合
    用flutter开发过一个app,总体开发效率蛮高的,需求1和3都能很好的满足,
    但是helloword的demo最终在我的mac mini m1芯片的电脑打包出来的软件大小45m,稍微偏大了一点。
  2. electronic 不符合
    electronic需求在1和3都能很好的满足,但是hellowrod打包的包大小在202m,太大了,不符合。
  3. wxPython和pyqt 不符合
    虽然没有最终打成可执行的包,但是包大小应该都不大,但是api不是太熟悉,相对html的快速开发,生产力还是欠缺很多,不符合。
  4. java的ui实现 不符合
    工作中一直是java,也断断续续用swing和swt开发过很多小工具,自己用都ok,开发效率也没问题。但是给普通客户用,加上jdk后,大小还是挺大的,不符合。
  5. Tauri符合
    Tauri的原理electronic和类似,两者最大的区别: 一个是采用了rust语言,还有就是用了系统默认的浏览器内核,这样应用体积就不会膨胀。helloword打包后果然只有10m,而且开发还是能用html+css技术,效率非常高。
    用tauri开发了一个笔记浏览软件验证了下,效果蛮好的,符合。

因为打算开发些小的桌面应用,给普通客户使用,所以最终从flutter和tauri之间选择了tauri,唯一可能就是资料不是太多,但是因为大部分界面开发都是用到了html技术,也没大问题。
后续就用笔记浏览软件再好好验证下tauri。