大家好,感谢邀请,今天来为大家分享一下腾讯QQ为什要自研UI框架,而不用QT/MFC的问题,以及和为什么不建议做qt和mfc开发的一些困惑,大家要是还不太明白的话,也没有关系,因为接下来将为大家分享,希望可以帮助到大家,解决大家的问题,下面就开始吧!
本文目录
vs开发与qt开发哪个好
跨平台开发QT更好;windows开发vs更好。
VS是一个IDE,适用于多种语言的开发(C++,VB,C#,java,.net等),这里主要讲C++方面。在开发C++时,VS相当于VC++(其中vs2008的vc部分是叫vc9),使用的是VC++的编译器即cl.exe(MSVC编译器指的也是它).
QT是一个类似于MFC的类库,是跨平台C++图形用户界面应用程序开发框架。为了方便使用QT,引入了QtCreator。QTCreator是一个IDE,包括编辑器,编译器,调试器,设计器即Qtdesigner。QtCreator使用的编译器是MingW,MingW也相当于一个IDE,只是它封装了编译器gcc.exe,使用QtCreator开发程序是使用的编译器就是gcc.exe。
mfc值得学习吗
首先说一下什么是mfc,即微软基础类库(简称MFC)是微软公司提供的一个类库(classlibraries),以C++类的形式封装了WindowsAPI,并且包含一个应用程序框架,以减少应用程序开发人员的工作量。其中包含大量Windows句柄封装类和很多Windows的内建控件和组件的封装类。
有人戏称mfc是没饭吃,确实现在大部分企业都不怎么会考虑使用这个框架,首先用mfc框架做界面很麻烦,很折腾人(亲身经历),而且做出的界面也不好看。但是mfc仍然是一个伟大的创造,在上个世纪九十年代应用十分广泛,现在一些做工控上位机的企业可能会用到它。就本身学习而言可以去掌握mfc的思想,从就业而已,不推荐深入学习。
为什么一提到java的swing和awt组件,大家都不建议学
早期的java主要是应用在web开发方面,所以从实用的角度出发,确实可以略过AWT和Swing的学习。在移动端开发流行之后,AWT和Swing又成为一个必修的内容了,因为做Android开发如果有一定的AWT基础是比较好的,很多概念是统一的。
为了描述这个问题,我们首先要了解到底什么是AWT,什么是Swing,以及它们与Android开发有什么联系。
AWT与Swingjava语言第一个支持图形界面开发的API就是AWT,在AWT中定义了java图形界面的很多核心概念,所以要了解java的图形界面开发方式一定要从了解AWT开始。下面分别介绍一下AWT中的三个核心概念:容器、组件、布局。
图形容器是存放图形元素的场所和环境,java中把容器分为顶级容器和次顶级容器。顶级容器可以单独显示、次顶级容器不能单独显示。顶级容器的代表是Frame,次顶级容器的代表是Panel。
图形组件是具体的图形应用元素,比如Button(按钮)、TextField(文本框)、Label(标签)、Choice(下拉列表)等等,每一个图形组件代表一种具体的图形应用元素。
布局的作用是安排图形组件在容器中的排列样式,常见的布局方式有BorderLayout、FlowLayout和GridLayout等。其中BorderLayout是Frame的默认布局管理器,FlowLayout是Panel的默认布局管理器。
具体的图形开发根据不同的界面设计采用不同的容器、布局和组件进行搭配组合,复杂的图形组件遵循顶级容器嵌套次顶级容器的方式来完成。
Swing与AWT相比较最大的优点是轻量级方式,Swing不依赖于本地操作系统,所以在样式上能够进行统一。在写法上采用了在AWT的类名基础上增加一个大写的J字符,比如在AWT中的Frame改为JFrame,Button改为JButton等等。
在实际的开发中比较推荐使用Swing的方式,一个原因是Swing的组件在外观上更具备科技感,另一个原因是它占用的资源较AWT更少。
事件处理说到AWT和Swing一定要说一下图形组件的事件处理方式,Java中的事件处理方式采用了监听的方式,也可以称为“代理”的方式。事件处理类通过实现具体的接口来完成对应的事件处理,比如ActionEvent对应的ActionListener接口;KeyEvent对应的KeyListener接口;MouseEvent对应的MouseListener接口和MouseMotionListener接口;WindowEvent对应的WindowListener接口等等。
这种处理方式让图形界面类和事件处理类进行了有效的分离,在代码处理上更加方便和灵活,在Swing的很多组件中也遵循了MVC的结构,让代码更加容易模块化。
总的来说java中的事件处理并不复杂,通过一定的实验就能完全掌握,所有这并不是学习的负担。
AWT与Android开发的关系传统的java图形处理方式并不完全适用于Android开发,在Android开发中通常采用配置文件的方式来完成Activity的创建,当然也可以使用代码的方式来完成Android的界面开发。
不管使用哪种方式来创建Android界面,大体的概念是一致的,比如布局、组件等等,只不过名称上有所区别,比如AWT中的Flowlayout对应于Android的布局是LinearLayout等,虽然名称不同但是概念是一致的。
事件处理方式也是大体一致,不过android开发中提供了基于回调的事件处理方式,这种方式在做一些简单的事件处理时比较方便。
所以如果将来要从事Android开发还是建议系统地学习一下AWT或Swing。
关注我,学习更多关于java开发的内容。
腾讯QQ为什要自研UI框架,而不用QT/MFC
很高兴回答这个问题。
腾讯QQ为什么要自研UI框架,而不用QT/MFC?我来谈谈我的看法。
战略上任何企业都不希望自己受制于别人。用别人现成的UI框架,虽然短期内可以减少开发成本,提升产品上市速度,但长此以往会对这个框架产生依赖性,一旦该框架收费了或者禁止使用了,企业还是要从头自己开发一套。
QT虽然有商业版本也有开源版本,但即便选择了开源版本来开发当前的产品,几年之后如果QT不开源了,那么现有的产品如何继续升级维护?就像去年谷歌取消华为安卓许可证一样,幸好华为还有鸿蒙作为PlanB,不然真是要被打回原型了。而且QT免费版的Licesence是基于LGPL的,只能以动态库的形式使用,而不能以静态库的方式链接进程序,限制也非常多。MFC则更是完全基于微软的那一套API。微软是如此封闭的一套生态,如果采用MFC就完全把自己和微软绑定在一起了。所以任何一个企业,如果有长远的目光,又有足够的财力的话,肯定都会选择自研UI框架,而不是在别人的UI框架上开发自己的产品的。
技术上使用别人的UI框架开发,没有自研框架得心应手。别人的UI框架一般都需要做本地化修改才能适应自身产品的需求。
比如QT里面如果有很多自身产品用不到的特性,那就需要裁剪,否则运行起来会消耗过多的系统资源。又比如QT或者MFC的UI控件以及动画效果不满足产品的设计,则需要重新开发一套控件。再比如QT或者MFC的运行性能不达标,就需要做各种优化等等。既然有这么多问题,对于腾讯这样一个软件实力雄厚的企业,还不如自研UI框架,做到如臂指使,自己想怎么开发就怎么开发。
企业内部KPI机制的影响。自研UI框架并应用到产品的话能产生KPI。所以很多企业内部也会用自研的框架做产品的更新迭代,产品成功与否先不论,起码KPI是有了,年终总结PPT上面也能写上某某产品使用了自研的UI框架,汇报的时候多有面子。不过腾讯大概率不会是这个原因才自研UI框架的,这里只是提出一种可能性。
综上,腾讯作为国内互联网企业的Top1,战略上不能用别人的UI框架,财力和技术实力上也能够确保自研UI框架成功,并使用于自身QQ产品。
以上就是我的一点看法,希望能帮助到你,谢谢。
关于腾讯QQ为什要自研UI框架,而不用QT/MFC到此分享完毕,希望能帮助到您。