桌面程序开发方案汇总

#开发框架# #桌面开发框架#

desktop developing solution。


从15年入行至今已有八年多时间,开发过不少项目,大部分都是web项目,桌面项目很少,且都是小项目。当时都是用Java Swing,在部门内部使用,界面很丑,注重跨平台和稳定性,其他不重要。

这一两年来,就业环境越来越差,而且因为年龄大被裁的优先级也越来越高。打算尝试把桌面开发捡起来,增加就业面,同时试试能不能接点私活。


上面内容是背景,不重要。下面才是干货。有问题大家评论交流。

首先介绍一下我在实际项目中用过的编程语言C/C++(小项目),Java,C#,JavaScript,Python,HTML(如果这个也算的话)。没有实际项目的语言有Dart,Go,Rust,PHP。

由于实在没有精力再去深入学习一门新的语言了,所以下面的桌面方案都和之前学过的编程语言相关。

由于相关的框架太多了,不能一一拿出来介绍,这里只选择几个顶流框架整理一下,如果有不同意见,麻烦评论留言交流。

  1. Java系列

比较有名且维护比较好的框架有AWT、Swing和JavaFX。

优点:

  • 跨平台,成熟稳定。
  • 有大量开源的库随便用,不用重复造轮子,开发速度快。
  • 大公司背书,有长时效支持维护。

缺点:界面较丑。如果做成好看的界面,需要花费很多精力。javafx比其他两个好很多,但文档比较少。

典型的产品有Eclipse 系列和JetBrains系列。

总结:如果只熟悉Java语言或要和其他Java项目集成,只好凑活用了。如果熟悉其他编程语言,建议跳过这个方案。

  1. 浏览器封装系列

典型的框架就是Electron,集成nodejs和v8引擎。

优点:

由于基于浏览器开发,有大量的前端库可以使用。生态好,开发速度快。

跨平台,理论上只要Chrome能运行的平台,electron都能在上面运行。

JavaScript/TypeScript都比较简单,相信大部分开发者都或多或少使用过,上手很快。

同样有大公司背书,有长时效支持维护。

界面好看现代化,稍微用心修改,界面就不会太难看。

缺点:性能较差,使用起来软绵绵的,切换页面或窗口总要迟疑一下,没有很利索硬朗的感觉。

典型产品有:VS Code、飞书等产品。钉钉也是采用基于浏览器的解决方案,但不确定是不是electron。

总结:如果客户或老板对性能上要求不太高,可以使用这个架构。我使用electron开发了小东西,个人接受不了软绵绵的反应。建议不要高估自己对性能优化的能力,飞书和钉钉很多功能还是一卡一卡的,你觉得自己比大公司牛多少。

  1. .Net/C#系列

这是桌面开发的老面孔了,从入行开始就接触。说心里话,如果只在Windows上跑,选择这个方案至少不会差。现在也有了跨平台的方案,比如MAUI、Avalonia,大家可以深入了解一下。

典型的框架有WinFrom、WPF、MAUI和Avalonia.

优点:

  • 微软在可视化开发深耕多年,也是发家的核心本领。大绝大多数的桌面开发遇到的问题都有较好的解决方案。
  • 官方提供的库质量很高,也有丰富的第三方库。
  • 同样有大公司背书,有长时效支持维护。
  • 性能不错,当然比不过纯C/C++,使用起来没有软绵绵也没有卡顿的感觉。
  • 界面一般,不是很好看但也不丑。如果优化一下,颜值会提升很多。

缺点:早期发布的框架不支持跨平台也不开源。前几年微软已经开始这个地方发力了,开发了开源的.Net Core,目前民间的Avalonia也不错。

总结:建议使用。.Net相关的桌面开发框架从各方面都是四平八稳。C#语言入门难度不高,如果熟悉java等面向对象语言转过来就更容易了。

  1. Flutter

Flutter是桌面开发领域的新秀,在移动端领域更是长居热榜。

优点:

  • 跨平台,支持的平台更多一些,而且在不同平台上界面一致性保持较好。
  • 界面组件较为丰富,在不是很复杂的界面上游刃有余。
  • 同样有大公司背书,有长时效支持维护。

缺点:需要学习Dart语言,有一定的成本;Flutter进入桌面领域不久,桌面组件不是丰富,很多需要自己开发;带有浓浓的移动端风格。

总结:目前不太建议使用,由于组件不够丰富,开发起来可能会遇到阻碍。如果对Flutter比较熟悉,开发过移动端,那可以尝试开发桌面端,试错成本也不高。

  1. QT系列

这也是常常进入大家视野的框架了,本人使用过,体验确实很赞,平时遇到的问题在网上基本上都有解决方案。

主要分为两大块,直接基于QT开发,用C/C++写代码;基于python的PyQt或PySIde。

优点:

  • 和.Net/C#一样,在桌面开发领域深耕多年,平时遇到的问题都有解决方案。
  • 有丰富的组件,基本不需要自己二次开发组件。
  • 性能优秀,不用怀疑。
  • 文档丰富,在国内外网站上都有很多资料。
  • 跨平台,包括Windows、macos和Linux,移动端也支持,但不太好用。

缺点:和其他框架相比而言对商业应用不太友好(如果想免费使用,需要保证不能改源码并声明使用了qt架构等);如果基于C/C++开发,涉及到语言的复杂性,成本稍高;如果基于python开发,打包比较复杂,打包后启动较慢(亲测,也可能是打包的方法不对)

总结:如果对C/C++熟悉,结合这个框架,在桌面端是无敌存在,性能无敌,界面也算好看。反之,则不太建议使用,尤其对个人开发者,容易出现bug,还不容易找到,会拖累开发进度。

  1. Delphi

Delphi在1995年推出,最初基于Parscal语言进行开发,具有拖拽组件直接开发的优势,吸引了大量的开发者。

优点:

  • 使用简单,能够拖拽组件,开发速度快。
  • 组件和文档也很丰富。
  • 跨平台,目前已经支持Windows、Linux、MacOS、iOS、Android平台。
  • 性能优秀,和其框架相比不落下风。

缺点:

  • 商业收费且价格较贵,使用破解版可能会缠上官司(在网上有很多相关案例)
  • Delphi/Object Parscal语言相比没有C#、C/C++那么流行,可能会影响跳槽其他领域的工作。当然多学一门语言也不是坏事。

总结:如果您大部分工作内容和界面相关,使用Delphi能大大节省时间,建议尝试一下。


以上是简单对目前顶流的桌面端架构做了一个简单梳理,总体来说,各有优势,开发者还是要根据业务和自身情况选择。

相关文章

aardio + Python 可视化快速开发桌面程序,一键生成独立 EXE

网络上大家分享的 aardio + Python 混合开发的文章很多,不得不说 aardio 与 Python 混合开发是真的简单 !快速入门推荐几个快速上手教程:aardio + Python 快速...

Python小白逆袭!7天吃透PyQt6,独立开发超酷桌面应用

Python GUI编程:PyQt6从入门到实战的全面指南在Python的庞大生态系统中,PyQt6作为一款强大的GUI(Graphical User Interface,图形用户界面)编程框架,为开...

python tkinter桌面应用gui库基础介绍

编程总离不开桌面应用,python内置了一个标准的GUI库,可以很方便的开发桌面应用程序,就是tkinter库。要使用tkinter直接用 import tkinter 导入库就可以了,无需额外安装。...

用python怎么做最简单的桌面计算器

有网友问,用python怎么做一个最简单的桌面计算器。如果只强调简单,在本机运行,不考虑安全性和容错等的话,你能想到的最简单的方案是什么呢?我觉得用tkinter加eval就够简单的。现在开整。首先创...

用bun+webview做一个桌面程序

许多web程序员缺乏桌面程序的开发经验,比如使用VC++或者.NET之类的去开发桌面程序。近些年出现一个用chrome+nodejs+html制作桌面程序,就是大名鼎鼎的electron,其实elec...

用Python打造一个简洁美观的桌面计算器

最近在学习 Python GUI 编程,顺手用 Tkinter 实现了一个简易桌面计算器,功能虽然不复杂,但非常适合新手练手。如果你正在学习 Python,不妨一起来看看这个项目吧!项目背景Tkint...