什么编程语言比较适合开发桌面应用程序

什么编程语言比较适合开发桌面应用程序,第1张

对于编程,没有最好的语言,只有最合适的语言。下面谈谈常见的PC桌面端开发语言。

C/C++系列

C++系列最大的优点就是运行效率高,不过缺点也是很麻烦的,上手难度大。下面介绍介绍两种有官方背书的,开发过程中经常用到的C++界面库,至于Duilib、BCG等第三方开源库这里不再介绍。

1、Qt

C++开发界面首选开源库。在C++领域,有GUI的地方都有Qt,有嵌入式的地方一般也有它,金融、工业、电力、视频监控等行业也有它。集跨平台支持,文档齐全,API设计优雅诸多优点于一身。

它不仅仅是一套界面库,更封装了多线程、访问数据库、图像处理、音频视频处理、网络通信、文件 *** 作等接口。

常见的多玩的YY,金山的WPS,以及网络抓包神器Wireshark等都是使用Qt开发而成,下面附一张使用QSS实现的界面换肤效果图。

Qt

2、MFC

俗话说,MFC==没饭吃,虽然现在2020年都已经过完了,但是还是有大量的公司在使用MFC这一上古技术来开发界面,它并没有灭绝。不过大多数项目处于维护态了。新项目我想很少有公司会采用MFC来开发了。

MFC

如果你是在校学生,不建议深究MFC相关技术,了解其大致思想即可。

如果你已经参加工作,不幸处于维护MFC老项目之中,那么建议工作之余多学习其他技术,早日跳槽脱坑。

C#

简单易上手,想要开发效率,C#绝对是Windows界面开发的王者,背靠微软这一强大后盾,为开发者提供所见即所得的开发模式,即使是新手也可以通过简单的拖拽来开发出带有图形界面的可视化软件,不仅可以开发PC客户端,更能开发Web端。最大的缺点是要安装framework组件。

C#

JS系列

曾梦想一统天下(Web、移动端、PC端)的JS,推出了Electron,为开发者提供PC客户端开发,更有VSCode、Atom、FacebookMessenger这样的成熟案例。不过最大的缺点就是开发出来的东西体积太大了,运行效率偏低。

Electron

Python

没错,就是那个曾经火遍大江南北的Python,它不仅可以写爬虫,更能来开发界面。

借助于PyQT,你也可以快速完成图形化界面开发工作。下图是某大神高仿的网易云音乐的开源项目「FeelUOwn」,使用PyQT开发而成,号称是一个符合Unix哲学的跨平台的音乐播放器。目前该作品已在Github上开源。

FeelUOwn

以上就是我的观点,喜欢就点个赞吧!

windows平台下c#是开发桌面应用程序的很好选择

C#语言可以轻松实现桌面程序的开发,利用vs开发工具,拖动控件就可以很快的完成一个软件界面,但然要做到好看,炫酷,还需要借助其他的界面库,或者自己重绘控件。

C#的功能全面,可以轻松调用office组件,windows组件,windowsapi函数,各类数据库连接调用。

C#可以很方便的调用工控设备,如plc,可以轻松 *** 作plc,读取,写入数据等。

c#可以开发windows等其他多平台游戏,使用unity3d,开发机器视觉使用emgucvopencv等。

基本上windows平台上的软件都可以制作。

但是c#能做的c++都可以做,不过c++的难度较大,不适合新手。

C#开发Windows系统桌面首选。

跨平台C++很著名的库Qt。

不过现在有了nodejs这种脱离浏览器基于chrome的V8引擎的技术,现在可以HTML+CSS+JavaScript开发跨平台的桌面运用,配合前端双向绑定的vue,react,angular等快速开发,高效率,炫丽,框架electron或者nwjs。

Java高手是怎么炼成的,你猜。

他们说当你精通这25个学习点,一切都水到渠成了。

01

你需要精通面向对象分析与设计(OOA/OOD)、涉及模式(GOF,J2EEDP)以及综合模式。你应该了解UML,尤其是class、object、interaction以及statediagrams。

02

你需要学习Java语言的基础知识以及它的核心类库(collections、serialization、streams、networking、multithreading、reflection、event、handling、NIO、localization以及其他)。

03

你应该了解JVM、classloaders、classreflect以及垃圾回收的基本工作机制等。你应该有能力反编译一个类文件并且明白一些基本的汇编指令。

04

如果你将要写客户端程序,你需要学习Web的小应用程序(applet),必需掌握GUI设计的思想和方法,以及桌面程序的SWING、AWT、SWT。你还应该对UI部件的JavaBEAN组件模式有所了解。JavaBEANS也被应用在JSP中以把业务逻辑从表现层中分离出来。

05

你需要学习Java数据库技术,并且会使用至少一种persistence/ORM构架,例如hibernate、JDO、CocoBase、TopLink、InsideLiberator(国产JDO红工厂软件)或者iBatis。

06

你还应该了解对象关系的阻抗失配的含义以及它是如何影响业务对象与关系型数据库的交互,和它的运行结果。还需要掌握不同的数据库产品运用,比如Oracle、MySQL、SQLserver。

07

你需要学习Servlets、JSP,以及JSTL(StandardTagLibraries)和可以选择的第三方TagLibraries。

08

你需要熟悉主流的网页框架,例如JSF、Struts、Tapestry、Cocoon、WebWork,以及他们下面的涉及模式,如MVC/MODEL2。

09

你需要学习如何使用及管理Web服务器,例如tomcat、resin、Jrun,并且知道如何在其基础上扩展和维护Web程序。

10

你需要学习分布式对象以及远程API,例如RMI和RMI/IIOP。

11

你需要掌握各种流行中间件技术标准和与Java结合实现,比如Tuxedo、CROBA,当然也包括JavaEE本身。

12

你需要学习最少一种的XMLAPI,JAXP(JavaAPIforXMLProcessing)、JDOM(JavaforXMLDocumentObjectModel)、DOM4J或JAXR(JavaAPIforXMLRegistries)。

13

你应该学习如何利用Java的API和工具来构建WebService。例如JAX-RPC(JavaAPIforXML/RPC)、SAAJ(SOAPwithAttachmentsAPIforJava)、JAXB(JavaArchitectureforXMLBinding)、JAXM(JavaAPIforXMLMessaging)、JAXR(JavaAPIforXMLRegistries)或者JWSDP(JavaWebServicesDeveloperPack)。

14

你需要学习一门轻量级应用程序框架,例如spring、PicoContainer、Avalon,以及它们的IoC/DI风格(setter,constructor,interfaceinjection)。

15

你需要熟悉不同的J2EE技术,例如JNDI(JavaNamingandDirectoryInterface)、JMS(JavaMessageService)、JTA/JTS(JavaTransactionAPI/JavaTransactionService)、JMX(JavaManagementeXtensions),以及JavaMail。

16

你需要学习企业级JavaBeans(EJB)以及它们的不同组件模式:Stateless/StatefulSessionBeans、EntityBeans(包含Bean-ManagedPersistence[BMP]或者Container-ManagedPersistence[CMP]和它的EJB-QL),或者Message-DrivenBeans(MDB)。

17

你需要学习如何管理与配置一个J2EE应用程序服务器,如WebLogic、JBoss等,并且利用它的附加服务,例如簇类,连接池以及分布式处理支援。你还需要了解如何在它上面封装和配置应用程序并且能够监控、调整它的性能。

18

你需要熟悉面向方面的程序设计以及面向属性的程序设计(这两个都被很容易混淆的缩写为AOP),以及他们的主流Java规格和执行。例如AspectJ和AspectWerkz。

19

你需要熟悉对不同有用的API和framework等来为你服务。例如Log4J(logging/tracing),Quartz(scheduling),JGroups(networkgroupcommunication),JCache(distributedcaching),Lucene(full-textsearch),JakartaCommons等等。

20

你应该熟练掌握一种JavaIDE例如sunOne、netBeans、IntelliJIDEA或者Eclipse。(有些人更喜欢VI或EMACS来编写文件。随便你用什么了)

21

Java(精确的说是有些配置)是冗长的,它需要很多的人工代码(例如EJB),所以你需要熟悉代码生成工具,例如XDoclet。

22

你需要熟悉一种单元测试体系(JNunit),并且学习不同的生成、部署工具(Ant,Maven)。

23

你需要熟悉一些在Java开发中经常用到的软件工程过程。例如RUP(RationalUnifiedProcess)andAgilemethodologies。

24

你还需要紧跟Java发展的步伐,比如现在可以深入的学习Webwork20。

25

你必需要对实际项目的开发流程有所了解,至少要有两个有实际应用价值的项目,而不是练习项目!因为现在企业看重的是你有没有实际的开发经验,真正开发经验的体现就是你做的项目,也就是有实际应用的项目!

其实你的问题一开始就问错了,即然你问了,我就随便说说好了。

MVC 是一种设计风格,并不是一种具体手法。每个人写代码都有自己习惯的一种设计风格。MVC 是应用程序开发常用的一种风格,实际上并不适合 PHP,因为 PHP 的工作环境注定了它很难做出像样的控制器,也就是 Controll 。

MVC 本来的设计风格是:整个系统由一个程序启动,再根据用户 *** 作调用各个处理模块,根据数据结果来决定显示成什么样给用户看。就像我们平时用的各种程序的主界面。这样程序员创建好主程序以后,只要把注意力集中在开发各个子功能上就可以了。。

可是 php 大多数情况下工作于 web 环境,有“页”的概念,每次执行都是一个新的请求。这就注定了很难实现真正的 MVC,因为用户看到页面时,PHP 已经执行完了,不可能再切换去调另一个 模型M 和 视图V 。

目前自称 MVC 的各种框架。也只不过是用一个程序判断请求,加载不同的功能块。只能称之为“单点入口”,在思路上是“请求相同的部份,而包含不同的部份”。这个入口程序实际上啥也没做,所以算不上是 MVC。反而 JS 开发的富客户端更接近一些。由一个 JS 主程序,跟据用户请求决定调用哪些数据,再把界面改变成什么样。

设计风格是前人总结出来的东西,在当前语言,当然环境,当前思维方式下。比较容易继续思考的一种设计方式。MVC 只不过是其中一种,而且并不是最适合 PHP 的一种。偏偏被炒作得好像标准似的。。

如果你一定要, 就去看一下 “PHP 单点入口实现”吧,已经是比较接近的东西了。如果一次性的控制器也能算控制器的话……

NET中的配置文件是有层次结构的,不仅包括webconfig文件,同时还有更高级别的配置文件。比如说计算机级别的配置文件machineconfig,当MVC应用程序运行时,该文件中的配置将应用于本机的所有 NET 应用。而更多具体的配置文件以及各自的作用,我们可以去秒秒学上看看,上面有比较详细的图文介绍。从最高级往最低级的配置文件,大致结构如下:

1)machineconfig:当运行MVC应用程序时,首先从machineconfig配置文件开始,该配置文件控制着运行在同一台计算上的所有NET应用程序的基础设置,包括桌面应用程序、Windows服务、web应用程序等,随后我们将进行相应的讲解。

2)根webconfig:同样还有一个machine级别的webconfig配置文件,也成为根webconfig,在healthMonitoring设置中可以看到。该配置将应用于所有的 ASPNET 应用。

3)父webconfig:这种情况出现在当应用程序部署在另一个ASPNET Web应用程序下时,就会有父webconfig配置文件,此时配置文件就有着继承的关系。

4)webconfig:最后才是应用程序中的webconfig文件,通过该文件,可以修改计算机级别的machineconfig配置文件或者根webconfig配置文件,即使管理员可以锁定阻止更改值的选项。

既然开始选择了Java,那么C#是最自然的选择,特别是在已经用Java做了部分工作的情况下。

这时系统架构、设计模式等都基本可以原封不动的搬过来,很多代码也可以很容易转成C#。

而且C#毕竟是完全从新设计的现代语言,从语言到库都是博采众长,优美而不失强大,语言表达能力强,库也比较容易上手。

另外它调用API,COM组件,DLL都很方便,便于团队合作和使用第三方代码,这是它在Windows平台下比Java好用的一个很重要的方面。

它的不利之处主要在于运行效率不高(和Java差不多)和部署不方便(要求用户装netframework)。

按理说既然开始是Java程序,这两点都应该不成问题。

但如果确实对这两点有要求的话,还是选择VC或Delphi的好,这时我可能会选VC,而像楼主这样的Delphi高手这时估计会选择Delphi。

使用文本框,用户可以展示、输入或编辑文字和数字。

思考以下问题:

虽然文本框具有非常灵活这一优点,但它们的缺点是具有最小值的约束。可编辑文本框的限制有:

除了长度限制和可选的旋转控制外,文本框没有任何视觉线索来提示其有效值或格式。这意味着必须要依靠标签将这些信息传递给用户。如果用户输入的文本无效,则必须使用错误提示告知用户错误原因。

一般来说, 应该尽可能多地使用限制性控件。 文本框这类的非限制性控件是最后的选择。即便如此,在考虑限制性时,也要考虑全球不同地区用户的需求。例如,适用于美国邮政编码的限制性控件并不能全球化使用,而非限制性文本框则可以适用于任何邮政编码格式。

文本框是一个有多种使用方式的灵活控件:

数据输入框 :一个用来输入或编辑短字符串的单行、非限制性文本框。

带辅助控件的输入框 :用于输入或编辑字符串的单行非限制性文本框,附带一个帮助用户选择有效值的命令按钮。

文本输入框 :用来编辑或输入长字符串的非限制性多行文本框。

数字输入框 :一种只能键入或编辑数字的单行文本框,可以附带一对方便鼠标 *** 作键入的旋转控件。

数据输出 :不带边框的单行只读文本框,用来展示短的字符串。与静态文本不同,当数据比控件宽时,使用文本框显示的数据可以滚动、选中和复制。

文字输出 :用来展示大段只读文字的多行文本框。

因为文本框通常不会限制为仅接受有效值,所以需要对用户的输入进行确认,并且对可能出现的错误进行处理。在以下几种情形下验证输入问题:

更多详细规则,请参见 错误信息 和 气球状提示 相关章节。

输入提示是作为默认值放置在文本框中的一段标签文字或者简短提示。和其他静态文本不同,输入提示会在用户键入内容或者获取输入焦点的瞬间消失。

使用输入提示的场景有:

1屏幕空间很有限,使用标签或说明文字不合适,如在工具栏上。

2提示符主要用于简洁地表明文本框的用途。它不能是用户在使用文本框时需要查看的关键信息。

不要使用输入提示指示用户输入特定文字或点击按钮。例如,输入提示不能是“请输入文件名”或者“点击发送”。

使用输入提示时需要注意:

文本框的长度是预期输入文本长度的视觉线索。当设计文本框大小时:

当提到文本框时:

示例: 在 密码 框中键入密码,然后单击 确定

以上就是关于什么编程语言比较适合开发桌面应用程序全部的内容,包括:什么编程语言比较适合开发桌面应用程序、Java高手是怎样炼成的、什么是MVC以及PHP怎样实现MVC等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9612224.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-30
下一篇 2023-04-30

发表评论

登录后才能评论

评论列表(0条)

保存