桌面端开发都用什么语言?这些语言的优劣势对比有哪些?
▍桌面端开发都用什么语言?这些语言的优劣势对比有哪些?
现代跨平台gui其实很多了,大部分人第一印象就是qt,但是跨平台gui框架已经发展这么久了,对于cs架构的应用来说qt其实不再是第一首选。下面分析下现代开源跨平台框架阶梯:
第一阶梯:综合起来的话应该首选JAVA上手简单,而且美观稳定,完全开源,生态不错轮子也不少(背后有三百万勇士支持),性能也很强大,体积也比较小。虽然c++的性能上限更高,但是实际上JAVA当前的性能完全够用。而且JAVAfx绝对是当前设计最先进的gui框架之一。
第二阶梯:qt系列(PythonQt等),Delphi。无论是性能,美观还是稳定性都是强无敌,可惜的是不够开源,所以总是有些遗憾,不然绝对跨平台的不二选择。
第三梯队:Electron系列,轮子多界面好看,完全开源,就是性能是可见的差,主要是刚打开应用的时候,运行稳定后会好很多。属于能用但是使用场景受性能局限。
第四阶梯:就是gtk,wxWidgets,flutter这系列的跨平台框架,这些框架在跨平台上或多或少会遇到一些展示不一致的问题和兼容问题,但是只要技术够好时间够多也是不错的选择,缺点是界面功能可能不够炫酷且几乎解决不了。
最终结论,在不考虑使用成本的情况下直接qt就行了(Delphi极度尴尬),想做大做强商用拥抱开源还是JAVA吧。
▍桌面端开发都用什么语言?这些语言的优劣势对比有哪些?
QT、WPF、PyQt、Electron 桌面应用解决方案
C++的 QT
背景
Qt是一个1991年由Qt Company开发的跨平台C++图形用户界面应用程序开发框架。它既可以开发GUI程序,也可用于开发非GUI程序,比如控制台工具和服务器。Qt是面向对象的框架,使用特殊的代码生成扩展(称为元对象编译器(Meta Object Compiler, moc))以及一些宏,Qt很容易扩展,并且允许真正地组件编程。2008年,Qt Company科技被诺基亚公司收购,Qt也因此成为诺基亚旗下的编程语言工具。2012年,Qt被Digia收购。2014年4月,跨平台集成开发环境Qt Creator 3.1.0正式发布,实现了对于iOS的完全支持,新增WinRT、Beautifier等插件,废弃了无Python接口的GDB调试支持,集成了基于Clang的C/C++代码模块,并对Android支持做出了调整,至此实现了全面支持iOS、Android、WP,它提供给应用程序开发者建立艺术级的图形用户界面所需的所有功能。基本上,Qt 同X Window上的 Motif,Openwin,GTK 等图形界 面库和 Windows 平台上的MFC,OWL,VCL,ATL 是同类型的东西。
优势
非常多的跨平台Desktop Application是基于QT编写的,它不仅能够保证跨平台,而且能够将运行效率最大化。Qt适合一些性能要求高的桌面应用,如果你只打算做桌面端的话。或者是一些特殊的场景,比如你要做个类似绘声绘影的视频编辑器,做个类似word之类的桌面应用,那你用electron要么是没法做,要不就是体验非常烂。实际应用上,比如wps,yy语音,VirtualBox,以及部分adobe的桌面工具都是Qt做的。C# 的WPF和WinForm
Winform
大多数人开发CS程序都是基于Winform去做的,它的有点在于简单、高效,但是它的缺点在于,如果你想深入的美化UI,需要耗费很大的力气,对于目前主流的CSS样式表来讲,美化Winform的界面以及自定义控件是需要耗费更多的时间的。写的程序如果需要改界面牵扯很大。代码的编辑可能会导致更多的错漏出现而不自知。大工程改界面更甚。wpf
优势
wpf需要学习xaml,有全新的ui描述语言,特别是可以通过模板的嵌套实现复杂的元素,通过style实现类似css的功能,通过比winform完善的多的数据绑定机制实现业务逻辑可以专心对数据而不是界面进行开发。学习wpf可以更方便过度到其他xaml相关技术,这是微软目前广泛使用的技术,比如接下来的windows通用应用。采用mvvm(model、view、viewmodel)来写,任你界面改翻天,后台代码不受任何影响。WPF不能运行在其他操作系统,并且在XAML中编写样式表,通用性还是不如HTML强,从学习应用的范围来讲,还是HTML更好一些。与分辨率无关WPF是基于矢量绘图的,因此它产生的图形界面能够支持各种分辨率的显示设备,而不会像WinForm等在高分辨率的现实设备上产生锯齿。硬件加速技术WPF是基于Direct3D创建。在WPF应用程序中无论是2D还是3D的图形或者文字内容都会被转换为3D三角形、材质和其他Direct3D对象,并由硬件负责渲染,因此它能够更好的利用系统的图像处理单元GPU,从硬件加速中获得好处。绚丽的展示效果,WPF(Windows Presentation Fundation)顾名思义其强大的图形化API为程序提供了超乎想象的图形效果; XAML的引入,使得美工和程序可以实现分离,使得定制化主题/外观/行为更加方便也易于维护;强大的 “数据绑定”功能,使得MVVM得以实现,成为“属性驱动”,而非WinForm的“事件驱动”;属性的更改可以自动获得,甚至动过转换器触发各种展示/行为的变更;Style可以让你应用不同的样式到不同的控件,而且易于管理Python的PyQt
PyQt5是python的一个GUI框架,存在界面设计器QtDesigner工具,可便捷的采用拖拽方式进行页面构造。然后通过工具将UI文件生成对应的python代码。
优势:
跨平台效果好,完美支持Mac、Windows、UNIX等多种系统;学习简单,面向对象的特性体现的比其他框架明显,在命名,继承,类的组织等方面保持了优秀的一致性,代码写起来比较优雅。功能强大,基本能实现QT能实现的所有功能文档丰富,PyQt使用者众多,同时可直接参考QT文档,对后期开发更加方便拥有QT Designer和QSS支持,界面效果更好pyqt5是双重许可,开发者可以在GPL和商业许可之间进行选择学完PyQt5之后只要再学习C++就能完成Qt开发转行,一举两得配合Django实现CS和BS全技能开发长期维护是很多程序员选择框架的重要标准,毕竟一个项目的运行周期可能很长,如果框架不能及时支持,后期带来的麻烦会很多开源免费,稳定性和安全性都好使用信号和槽机制,界面设计和业务代码分离开发JavaScript的 electron
特点:
Electron是由Github开发,用HTML,CSS和JavaScript来构建跨平台桌面应用程序的一个开源库。 Electron通过将Chromium和Node.js合并到同一个运行时环境中,并将其打包为Mac,Windows和Linux系统下的应用来实现这一目的。Electron适合一些偏业务的应用,对性能没有很多要求,主要是业务逻辑和UI展示,比较轻量级的应用。因为Electron可以一份代码同时得到网页版和桌面版,所以如果你的应用还需要网页版,那么Electron可以极大地节省你的开发和维护成本。比如钉钉,slack,现在越来越多的偏业务型(并不是需要高性能的专业工具)应用开始使用Electron来做了。优点开源的核心扩展比较容易,目前是基于 node 6.x,加之现在 gyp 已经非常人性化了,使得c++ 和 js 搞基非常容易。界面定制性强,原则上只要是Web能做的他都能做。是目前最廉价的跨平台技术方案,HTML+JS 有大量的前端技术人员储备,而且有海量的现存web UI 库。大多都很靠谱。相对其他跨平台方案(如 QT GTK+ 等),更稳定,bug少, 毕竟只要浏览器外壳跑起来了,里面的问题不会太多 ,当然我也遇到过一些暗坑。 方便热更新。下载覆盖完事。当然这是所有脚本共有的优点。缺点: 1.卡,启动慢,这可能是webkit的锅。毕竟一个浏览器要支持的功能确实有点多。 2.除了主进程 你可能还需要启动一些辅助进程来完成工作。而每当你新开一个进程,起步价就是一个nodejs的内存开销! 3.丢帧,这个最严重,可我已习惯了native 的丝滑. mac下感觉还可以 win下有点够呛。 4.打出来的包太大。(很显然,即便是一个空包,也至少包含了一个浏览器的体积)
▍桌面端开发都用什么语言?这些语言的优劣势对比有哪些?
目前,最优的选择有四个:
1.如果只在win下使用,.net form是不二选择,可谓是又快又好,企业应用或定制开发都是相当好的,初学者也可以入手。
2.electron,跨平台。需要会前端,必须熟悉js、css和html。属于前端人员大杀器,如果是初学者,需要一下子学三样东西,再加上electron的进程间通信,可能会被搞懵。
3. qt5,可以使用qml(js语法)进行UI编程,但是需要懂c艹,但是写软件相当快,还可以写安卓、ios、Linux、嵌入式中的应用。
4.flutter,刚刚正式支持win平台的软件开发。谷歌出的这个东西,适合没有基础的初学者,因为是一个全新的体系,全新的语言,写ios、安卓非常高效,之后还会兼容h5。如果是初学者可以跟着走,值得尝试。但是新东西总有一些坑。
正式项目跨平台建议electron或qt,只用win平台强烈建议微软自己的net。个人技术尝试建议flutter。
▍桌面端开发都用什么语言?这些语言的优劣势对比有哪些?
我就说一种:
所有的windows桌面程序语言,都是基于微软提供的API接口编写的,而能让程序员直接调用windowsAPI的基础语言,必然有C语言的一席之地。其他所有的桌面程序语言,像什么C#,C++,python,Js等等,都是用C语言调用windows接口写出一个大概的程序框架,供后来的语言使用者进行二次开发,来实现桌面程序的设计。
从某种意义上来说,如果把安装了windows操作系统的电脑,看做一台独立且完整的机器比如cpu,那么使用C语言通过调用系统API来编写桌面程序,就相当于直接使用汇编语言操作Cpu。所以在操作系统层面,这种方式写出来的程序性能是最好的,没有之一。当然,还可以通过直接对硬件编程,获得更好的性能,但那对程序员的技术要求会极高,而且还必须考虑硬件兼容性,能写那种程序的人,其实在某种程度上就已经具备写操作系统的能力了。
不可否认,使用C语言直接调用系统接口来编写桌面程序,这不是一条轻松的路线,甚至可以说它遍布荆棘也不为过。无数人半途而废改换门庭,转投其他更为轻松的高级语言。如果你选择这条路,你必须做好心理准备,这段路程中的艰难困苦将会超出你的想象!然而你也必须要明白,一旦你在这条路上学有所成,你会发现计算机的世界竟然如此简单!几乎没有任何人可以在你面前装逼!你,就是这么牛逼!
在我的理解中,使用C语言直接调用windows API编写桌面程序的方式,是渔。而采用其他高级语言编写桌面程序的方式,是鱼。
目前,摆在你面前的,既有鱼,也有渔,你会怎么选呢?
你是选择做某种高级语言的追随者,还是想成为各种高级语言的创造者?
心有多大,世界就有多大!努力吧骚年!听说你想去星辰大海?[机智]
▍桌面端开发都用什么语言?这些语言的优劣势对比有哪些?
还可以用delphi,其firemonkey框架发布8年时间,支持跨平台:win,安卓,ios,macos,linux,后续支持webassembly,界面是控件拖拽布局所见即所得,开发效率较高。编译生成的是机器码,编译速度快,调试方便,其生成机器码运行效率较高,支持x86,arm的32位64位处理器。支持跨平台3D界面,蓝牙通讯,定位,重力,摄像等,支持多种SQL,NoSQL数据库。单个开发工具实现前后端开发,跨平台开发。适合个人和小公司用一套工具实现大部分开发需求。
------------------
推荐阅读:
一次交8万,到退休一个月给1600块钱退休费合适吗,现在40岁?