C++相对于Java和C#而言,确实有点悲催。C#有强大的微软做后盾,Java也是被Sun养大,而C和C++由贝尔实验室发明,毕竟C++只是贝尔实验室中很普通的一项发明,并且C++的最大受益者也不是贝尔实验室,从C++ 03 到C++ 2011隔了8年时间,显然没有Java和C#及时,毕竟他们都是公司运作,并且是公司中很重要的成员。而C++的推动就只能靠开源社区啦,boost是最大的贡献者啦,然后就是linux社区、Apache等公司,再接着就是各种开源库的作者啦。
没有公司的运作,显然很多方面都比不上Java和C#。比如C#有个很著名的NOPI,操作Office毫无压力,而C++就只有几个没人维护的库,还不如用微软的COM接口。java有个很著名的JFreeChart,显示各种曲线图表都够了,但C++就没有,只有Codeproject上面有几个,不过还是达不到要求,但是商业的曲线库老板又不会买,就苦了我等码农了。Office还好,微软的接口一向好用,在现有开源代码的基础上,花个把星期就可以封装个很不错的库。而曲线图表这个东东不像按钮控件,真的很难做,难做的不是画图,而是各种曲线的管理,和各种效果功能的实现,细节问题一大堆,而C#和Java却不会遇到这种常用控件还要开发的问题。 这只是其中的两个例子而已,Alberl平时查资料的时候,也发现了C++的很多不给力(主要体现在界面方向,逻辑方向倒是非常给力),因为C++本来就只是逻辑处理,连多线程都没有,界面就更别提了,而C#和Java都是一整套开发框架,所以非常省事。注意啦,这里不是劝大家不要用C++,而是说C++真的需要做很多事情。对C++开源库的牢骚完毕^_^
The GUI Toolkit, Framework Page
User interfaces occupy an important part of software development. This page provides a comprehensive reference on toolkits for building graphical user interfaces (GUIs), with emphasis on resources for
Free Software (
Open Source). This page focuses on personal computers but also references some offerings for embedded products.
Note to people using the geocities.com site: if you see the site down due to bandwidth limit being exceeded, please consider using the other site listed below GUI Toolkit developers: please let
me know of news/changes to your projects/products so I can update this page accordingly.
This page resides in
http://www.geocities.com/SiliconValley/Vista/7184/guitool.html and
http://www.atai.org/guitool/
Page created April 17, 1997 (86). recent changes
Thanks to
Alejandro de Garate for improving the layout of this page
.© Copyright 1997-2003, 2005 (
ROC Years 86-92, 94,96), by Li-Cheng (Andy) Tai. See
copyright for details. Last updated May 13, 2007 (96)
Free toolkits: C/C++ Java other languages | commercial toolkits: C/C++ Java | Related links | copyright
GPL: GNU General Public License
LGPL:GNU Library/Lesser General Public License
PD: Public Domain
BSD: BSD or X11-like license (commonly allowing you todo whatever you want provided the original copyright notice is kept and credit given)
Art: The Perl Artistic License
MPL: Mozilla Public License
=========================================================================
有几个小伙伴看完啦? 看完的老板会多发年终奖哟^_^
由于这里不仅介绍了C++,还介绍了其他语言,那我们就挑少的先讲吧。
一、C#
其中C#的库是最少的,只有Mono和DotGNU两个,而其中的
Mono就是逆天了的跨平台C#库啦,很多人感慨如果C#这么方便的语言可以在linux上用就爽歪歪啦,这不,Mono不仅可以在linux PC机上运行,还可以在Android上运行,谁说微软不跨平台了!
Alberl之前只是听说.NET拖拖控件就可以做出很漂亮的界面,结果发现连直线、圆形都可以直接拖上去,没想到有这么方便! 在向8年.NET经验的同事请教了之后,发现.NET简直完爆VC++的那一系列界面(如MFC、WTL),MFC要好多个步骤才能搞定布局、自适应窗口大小、改变背景色、控件透明等等,但是在.NET上都是动动鼠标、右键完事。哎,说真的,搞得Alberl当时都惊呆了!!!
如果只是开发普通样式的界面,真的不用考虑MFC了! 不过话说回来,如果要开发出QQ、金山那样的界面,.NET也是需要做很多事情的,虽然只要花时间就可以完成(而MFC是花时间也不一定能完成的,还需要有比较高的水平),但如果VC++用上开源界面库的话,就比.NET要爽很多啦~
二、Python、Lua、Perl
这几个脚本语言也有人去折腾界面,其中wxPython还被标记成【good】,可见也是做得很不错的。
三、Java
Java的界面库也有十多款,其中SWT被标记成【good】,介绍说是标准的工具,Eclipse的一部分。(Alberl对GWT比较眼熟,可能是记错了)
四、SDL
小伙伴们会发现有很多SDL字样,那么SDL是何物呢? 还记得第一篇教程吗? 那个ffmpeg播放视频就是用的SDL。 SDL在多媒体和游戏领域可是非常出名的哦。VLC的播放也可以用SDL哦~
五、C++
可以看到,C#和Java的界面库很少,而C++的多到看不完,难道是C++很强大? 错,同一类型的开源库越多,就说明这个方向越弱。而C#和Java的界面库之所以这么少,是因为他们的界面库已经能满足目前绝大部分需求了,无需其他界面库了。而C++却一直没有一个好点的界面库,所以总是有大牛觉得其他界面库不好用,于是就有了各种各样的界面库,并且十多年过去了,还没有定论,哪一种界面库都没能一统天下。
不过C++的界面库是分linux和Windows的,两个平台的形势大不一样。
linux
linux下面就简单多了,由于其应用大部分都没有界面的,有界面的要求也不是很高,所以现有的开源库已经能够满足需求了,而在上述这么多开源库中,只有QT被标记为【Best】,可见QT是非常被认可的。而linux下就以QT最为权威了,而WxWidgets、GTK、GTK+、Fltk也比较著名,linux嵌入式下miniGUI最为著名(终于看到中国人的开源项目被世界认可了^_^),其他的很多界面库就不提了,总之,linux下面,有这些界面库已经够用了。
windows商业库
那么windows下的形势就完全不同啦,不仅开源库很多,而且商业库也很多,其中不仅有大公司的商业库,也有很多小公司的商业库,竞争非常激烈,不过微软是其中的巨头!上述列表中提到的OWL、VCL、CLX都是Delphi里面的,Delphi已经被淘汰了。而MFC被列在第一位,其他商业库基本没听说过,可见MFC是唯一的知名商业库,已经打败了其他商业库一统天下了。
而其中并没有列出win32,可以说把win32和MFC混为一谈也没什么不可以。既然混为一谈的话,那么也就是说这些东西都是建立在win32的基础上,那么刚刚说的小公司的商业库就不能说是界面库的竞争者了,而Alberl说的这些小公司指的是国内所谓DirectUI的公司,从上述列表来看,都是以平台来做比较的,而那些DirectUI公司都没有自己的平台,都是建立在win32的基础上,所以根本都没资格排到这里来。所以这些DirectUI公司,其实可以和BCG、XTP这些公司并为一列,那就是说他们不是平台,而是建立在win32这个平台上的一堆库而已。
BCG、XTP都称自己是控件库公司,建立在win32或者MFC之上;而天朝公司一向喜欢故弄玄虚,炒作概念,号称是一个界面平台,搞得好像他们有自己的平台一样,其实他们还是建立在win32的平台上,还是要靠微软,还是windows编程。而所谓的适用于多种编程语言,并不是他们的库有多么NB,因为只要是标准的dll,就可以被任何支持dll的语言调用,但在他们的宣传中,让人感觉就是:好像dll本身不能被多种语言调用一样,好像是被他们改进之后才有这个功能一样o(╯□╰)o。
好吧,商业公司中当然是BCG、XTP最为著名啦,他们都是建立在win32或者MFC之上,作为一个辅助而已。
windows开源库
虽然上面列举了上百款开源库,并且很多都是跨平台的,但除了QT在windows上闯出了名气以外,其他几个还是只能在linux称王。不得不说微软的产品线做的非常完善,不然早就被linux那一堆跨平台打垮了。也不得不说windows的占有率非常之高,导致很多公司只做windows平台,压根不需考虑linux,所以那些所谓的跨平台对很多公司真的是一点吸引力都没有!(智能手机大量流行之后除外,也就是2011年之后)
其实呢,这些界面库在国外应该是够用啦,看看国外那些杀毒软件,在国内比起来简直是土鳖界面,但在国外却是比较好看的界面。像MSN、GTalk、Skype,界面也是一般般啦,用用MFC、自绘控件、商业库(BCG、XTP),也是很容易做出来的。不过MSN是DirectUI,国内火爆的炒作DirectUI也提到了MSN,其实微软技术这么牛,平台都是自己做的,技术根本就不是问题啦,所以微软的某个东西用的什么技术成功了,不代表我们就能成功,我们能和微软去比么... 那说说GTalk、Skype吧,不过Alberl没安装过着两款应用,所以无从说起,还请网友们提供测评信息~O(∩_∩)O~
那再说说火狐系列吧,从火狐浏览器、Thunderbird等一系列火狐产品,都是用的自主开发的XUL,并且效果都不错! 那我们也去用XUL? 不过Alberl也不知道有没有其他公司用XUL,还请网友们提供信息。并且XUL是人家自己开发的,有问题了随时可以解决。咱们要是出了问题,找谁解决,去哪找资料?
看来windows下的界面库还真是windows一统天下了,还真得靠win32提供的消息机制了。不过好消息还是有的,即使要靠win32平台,也有很多不错的界面库。并且还有更多的不靠win32平台的开源库。由于本节只是介绍C++ Native界面库,所以Web界面库以及依赖win32的界面库将在下一个教程中介绍~O(∩_∩)O~
需要提醒的是,Alberl并没有一一去对比上面列举的上百款界面库,只是挑了一些著名的库做介绍,并且介绍也都是道听途说的,没有亲自验证,还请各位网友对Alberl的介绍持怀疑态度,如果有哪位网友对其中的界面库有过深入的了解,希望能提供一些信息。
最后感叹一下:哎,怎么老外动不动就自己开发框架呀,怎么咱们动不动就到处找别人的框架呀o(╯□╰)o
==================================================
这里只是对比界面库哦~
曲线控件我一直用codeproject上的那几个:
1、功能最强大,但是很多bug,需要自己修改,目前用的这个
http://www.codeproject.com/Articles/1993/Scientific-charting-control
2、最稳定,功能也能满足大部分需求,已维护7年
http://www.codeproject.com/Articles/14075/High-speed-Charting-Control
3、最炫,有Alpha通道,很多功能都不错,用在项目里从未崩溃过
http://www.codeproject.com/Articles/317712/An-MFC-Chart-Control-with-Enhanced-User-Interface
以上作者都是MVP,从业十年以上,并且有些连续很多年都是MVP。
在国内的开源库中,大神的曲线控件确实算得上第一,鉴于大神已经坚持到了3.0,这个在国内也是很少见了,所以我看好大神,因为开源库最重要的是维护。
如果大神有心继续为开源做贡献的话,除了上述开源库之外,还有JAVA的JFreeChart、.Net也有一款很好的开源库。
只有C++被晾到了一边,所以大神的这个工作还是很有意义的,还有各种商业库功能也很强大,而且有XX版,所以希望大神在继续做控件的时候能够考虑到这些因素。
建议大神可以去codeproject发表一篇文章,看看老外们的反响~O(∩_∩)O~