在桌面开发上,我已经尝试过许多框架和组合,比如Qt/PyQt,Electron,Flutter,Winform. 如今跨平台风气正盛,包括MAUI,Flutter以及Kotlin MultiPlatform(KMP)等等都风头正盛. 但我的理解是作为个人开发,很多时候并不需要写跨平台的桌面应用,不如写原生的.
目前我的理解是:
- 需要仔细思考产品跨平台的必要性,跨平台并不是free launch.
- C++的桌面程序框架也有很多,但许多人因为语言问题放弃了,着实可惜.由于c++的高性能和gl图形库诞生许多简单的GUI,比如awesome-dear-imgui和raylib
- Qt框架不只是GUI,拿他跟其他UI库比较不公平.它提供了包括网络库在内的功能,而这本身就是C++相比其他现代语言在标准库和生态的差距. 此外Qt还有结合JS的QML,QWebEngine一堆技术.
- 使用Web技术开发桌面应用的开发体验仍然有待提升,目前React Native发展正盛,也是得益于前端的蓬勃生态.
- c++、Rust编写程序有相对更高的性能,可以写成库供其他语言的UI应用调用.
- 微软目前还是在基于XAML的桌面应用开发上发力,MAUI和WinUI3是微软主推的,在win11以及将来都是windows桌面开发重点,Avalonia也很不错
- Lazarus可以用于C++桌面应用的快速开发,此外还有C++ builder社区版试用C++ Builder社区版
- Flutter,KMP(包括jetpack compose)以及SwiftUI的写法类似(移动端应用写法),不同与xaml也不是同于new对象. 它们都是从移动端技术向跨平台应用发展折射到桌面开发的,一些技术栈和思想和做Qt、Winform的人可能不太相同(Web技术也是).
这里我从WPF入手学一点基础,由此可以向WinUI3,Uno,MAUI以及Avalonia桌面应用开发发展(后三者是跨平台框架).