跨平台的桌面应用开发,技术框架选择
个人的需求:
- 能够快速开发;毕竟生产力很重要。
- 打包后的体积不能太大;用户大部分是普通客户,不会安装基础环境。
- 跨平台;日常主要还是用mac做为主力开发机,所以强烈需要跨平台。
入围技术
- flutter
flutter现在已经能全平台支持了;不仅是android,ios,现在web和桌面应用也都能支持的很好。 - electronic
基于nodejs的,vscode就是采用electronic作为底层实现的,而且用html+css开发,开发效率确实会很快。 - wxPython和pyqt
两者类似,都是用python语言开发。前者是对wxWidgets的封装,后者是对大名鼎鼎的qt的封装。 - java的ui实现
java的ui框架有swing,但是不更新了,还有javaFX和eclipse的swt。 - Tauri
采用rust语言的底层实现,界面开发也可以使用html+css。
Tauri 是一个框架,用于为所有主要桌面平台构建小巧、快速的二进制文件。开发人员可以集成任何可编译为 HTML、JS 和 CSS 的前端框架,以构建他们的用户界面。应用程序的后端是一个基于 Rust 的二进制文件,带有一个前端可以与之交互的 API。
总结
最后根据我个人的需求做筛选和最终决定:
- flutter 符合
用flutter开发过一个app,总体开发效率蛮高的,需求1和3都能很好的满足,
但是helloword的demo最终在我的mac mini m1芯片的电脑打包出来的软件大小45m,稍微偏大了一点。 - electronic 不符合
electronic需求在1和3都能很好的满足,但是hellowrod打包的包大小在202m,太大了,不符合。 - wxPython和pyqt 不符合
虽然没有最终打成可执行的包,但是包大小应该都不大,但是api不是太熟悉,相对html的快速开发,生产力还是欠缺很多,不符合。 - java的ui实现 不符合
工作中一直是java,也断断续续用swing和swt开发过很多小工具,自己用都ok,开发效率也没问题。但是给普通客户用,加上jdk后,大小还是挺大的,不符合。 - Tauri符合
Tauri的原理electronic和类似,两者最大的区别: 一个是采用了rust语言,还有就是用了系统默认的浏览器内核,这样应用体积就不会膨胀。helloword打包后果然只有10m,而且开发还是能用html+css技术,效率非常高。
用tauri开发了一个笔记浏览软件验证了下,效果蛮好的,符合。
因为打算开发些小的桌面应用,给普通客户使用,所以最终从flutter和tauri之间选择了tauri,唯一可能就是资料不是太多,但是因为大部分界面开发都是用到了html技术,也没大问题。
后续就用笔记浏览软件再好好验证下tauri。