接触桌面应用开发已有一段时间了,对这个领域的相关技术有了一个大体的了解。今天记录一下以作梳理,同时和大家讨论交流。
不管哪个领域范畴,根据不同的角度或标准划分,就有不同的分类。今天我从绘制GUI组件的角度进行汇总。整体上分为三类:
- 一类是基于原生组件的框架,也就是直接或封装每个操作系统平台提供的组件;
- 第二类是自绘组件的框架,也就是利用底层的绘制技术,例如skia、opengl等;
- 第三类是基于web技术的框架,虽然这一类应该也属于自绘框架大类,但现在已发展壮大,所以单独列出来介绍。
第一类框架在早期阶段出现的比较多,由于计算硬件和底层技术的限制,大部分GUI框架基于操作系统的组件,比较有名的框架有MFC、wxWidgets、wpf等框架。
第二类框架在原生框架发展的中期出现,由于几大操作系统平台的份额划分已基本稳定,桌面应用如果要扩大用户量,对跨平台框架的需求也越来越大。例如java语言的出现,一次编写,处处运行的口号极大的吸引着开发者,有名的GUI框架有QT、Avalonia、GTK、Flutter、Javafx、Compose Multiplatform等框架。
第三类框架是2015年天才工程师Ryan Dahl,把JavaScript的Chrome V8运行时提取出来,加上基础的JavaScript库构建了nodejs,从此JavaScript脱离浏览器的篱笆,开创了一个有一个优秀的框架,在桌面端的框架有Electron、Tauri。
目前第二类和第三类框架越发壮大,开发跨平台的应用越来越容易。如果对性能和资源要求比较高的应用场景,建议选择c/c++开发的GUI框架,例如QT。否则建议选择web类型的GUI框架,界面开发快速且美观;第三方类库丰富,拿来使用即可。最主要优势是能快速验证可行性,节省试错成本。
写到最后,上面的有名的框架几乎都来自国外公司,忍不住又要吐槽一下国内的大公司,尤其是某迅,利用桌面应用起家,距今已有几十年,赚得盆满钵,对国内的软件技术的发展几乎毫无贡献。至今也不愿开发一个自主的GUI框架,更别说开发新的编程语言了,厚着脸皮利用electron技术进行重构,无力吐槽。