(声明:Alberl以后说到开源库,一般都是指著名的、或者不著名但维护至少3年以上的。那些把代码一扔就没下文的,Alberl不称之为开源库,只称为开源代码。这里并不是贬低,像Alberl前面那个系列的教程《
2013 duilib入门简明教程
》,还有本系列教程,还有前面介绍的CodeProject,基本上都是代码往上面一扔,就不用再怎么维护的。这些都称之为开源代码,其实开源代码对新手的帮助更大,因为很简明的说明了代码用法~O(∩_∩)O~)
前面两个教程已经对制作界面的几种方式
进行了比较,
权威界面库已经比较过了,那么接下来就是上一个教程介绍的那三种方式。
而上一个教程已经说的很明确了,用那三种
必须得依靠开源库!(或者像腾讯这样有实力的公司自己开发)
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++开源库的牢骚完毕^_^
还记得第二个教程给出了数十款播放器的对比吗? 同样有NB的老外给C++的界面库也做了详细对比,同样也有上百种~O(∩_∩)O~
下面请看正文(格式支持不好,推荐看原文。可能很少小伙伴会看完,不过最后面有Alberl的分析哦~):
The GUI Toolkit, Framework Page
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)
GPL: GNU General Public LicenseFree toolkits: C/C++ Java other languages | commercial toolkits: C/C++ Java | Related links | copyright
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
Free Toolkits (including both Free (in the GNU sense) and no-cost ones)
C/C++ oriented
(unless explicit stated with "C API", all toolkits in this table provide APIs in C++)Name | Comments | license | Unix X11+ | UnixX11+Motif | MS Win 95/98 | MS Win NT/2000/ XP/Vista | MS Win 3.1 | OS/2 PM | MacOS | NextStepOpenStep MacOS X | other platforms |
---|---|---|---|---|---|---|---|---|---|---|---|
|
in C++ see interesting development methodology for more info Unix version built on gtk+ |
|
|
|
| y |
| ||||
|
|
|
| ||||||||
aedGUI | a cross-plataform, easy-to-use, non-intrusive C++ GUI library that runs on top of SDL | LGPL | (via SDL) | (viaSDL) | (via SDL) | (via SDL) | (viaSDL) | (via SDL) | (via SDL) | (via SDL) | (via SDL) |
Agar | a high-level graphical C application framework aimed primarly at 2D/3D games and simulations. Agar applications are portable to a variety of platforms thanks to theSDL.support for SDL 2D and OpenGLrendering. Thread safe | BSD | y (via SDL) | (viaSDL) | y (via SDL) | y (via SDL) | (viaSDL) | (via SDL) | y (viaSDL) | y (via SDL) | other platforms supported by SDL |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| ||||||||
OpenAmulet ( discounted?) |
|
|
|
|
|
| |||||
|
|
|
| ||||||||
|
Gtk--. |
|
| ||||||||
Fresco (new) |
Berlin renamed to Fresco in 2002, taking on the name of the old GUI toolkit Fresco |
| |||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
CLX | (Component Library for Cross-platform)Cross-platform library for, and part of, Delphi,Kylix and CBuilder - Based on top of Qt, Linux only | GPL | y | ||||||||
|
|
|
|
|
|
|
|
|
|
|
|
C++/Tk, cpptk | C++ interface to the Tk library tries to provide not only the Tk functionality, but also its wayof writing code, based on the syntax used in Tcl/Tk. | BSD | y | y | y | y(?) | |||||
CroPL | a C++ application framework and utility library for single-source Mac/Windows applications | non-profit use only | | | y | y | | | y | y | |
|
|
| |||||||||
|
|
|
| ||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| ||||||||
|
|
|
|
|
|
| |||||
|
|
|
|
| |||||||
|
|
|
| ||||||||
|
|
|
|
|
| y |
| y | Microwindows/NanoGUI/Nano-X | ||
|
|
|
|
|
|
|
| ||||
also see Berlin as the new Fresco |
( another info page) development stopped, succeeded by Berlin |
|
|
|
|
| |||||
|
|
|
| ||||||||
|
|
|
|
|
| ||||||
|
|
| |||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| ||||||||
|
|
|
| ||||||||
|
|
|
| ||||||||
|
|
|
| ||||||||
|
|
|
|
|
|
|
| ||||
|
(ftp) (mailing list) ( gtk--,a C++ wrapper)(Gtkkitand Gtoolkit , ObjectC wrappers) (wxGTK, WxWindows port to gtk+ (C++ API)) (gtkv,Vport to gtk+ (C++ API)) (VDK , SDPGTK, Inti, other C++ wrappers) glade, grad, epingle,UI builders for gtk+ and gtk-- libglade , a library for gtk/ GNOME allowing GUI built at run time from specifications in configuration files in XML format, without the need to recompile program |
|
|
|
| in progress |
| ||||
gnomemm (gnome--) |
related: gnomemm, c++ bindings for GNOME |
|
| ||||||||
GuiToolkit | "a class set which allow You to build applications with new Microsoft interface style .It includes more than 50 of MFC classes" | no cost use | | | y | y | | | | | |
|
|
|
| ||||||||
|
|
|
| ||||||||
ivtools |
Interviews (ftp) was an early advanced toolkit whose development stopped around 1993. conceptual successor is Fresco. |
|
| ||||||||
|
|
|
| ||||||||
|
|
|
|
|
|
|
|
| |||
|
|
|
| ||||||||
|
JAVA and C, provides the JAVA AWT Toolkit to non object oriented Languages like C, Fortran, Pascal, Ada and even Basic |
|
|
|
|
| |||||
JUCE | an all-encompassing C++ class library for developing cross-platform applications | GPL | y | y | y | ||||||
|
|
|
|
| |||||||
|
|
|
| ||||||||
|
|
|
| ||||||||
|
"a small enough library that one person can understand it all." |
|
|
|
|
|
| ||||
|
|
|
| ||||||||
libgx | a lightweight, non-intrusive, public-domain C++ widget library for writing X11 applications | public domain | y | ||||||||
|
|
|
| ||||||||
|
|
Art(?) |
| ||||||||
|
|
|
|
|
|
|
|
| |||
|
|
|
| ||||||||
MacZoop | C++ API. Framework on top of Carbon API. | MacZoop license | y | y | |||||||
|
|
|
|
|
|
| |||||
|
|
|
|
|
|
| |||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
OpenMotif |
|
|
|
| |||||||
|
|
|
| ||||||||
|
|
|
| ||||||||
NGL, NUI | LGPL |
|
|
|
|
|
|
|
|
| |
|
|
|
| ||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |||||
|
|
|
| ||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| ||
PicoGUI | "a new Graphical User Interface architecture designed with embedded systems in mind. ... includes low-level graphics and input, widgets, themeing, layout, font rendering, network transparency, and debugging features." Also can be an alternative windowing system (when running on framebuffers) | GPL/LGPL |
| y | y |
|
| Linux frame buffer, numerous embedded devices (see this list) | |||
|
|
|
|
| |||||||
|
KDevelop , EBuilder, Qt Architect ,QtDesigner and QtEZ, UI buildersfor Qt Qwt, additional GUI components for Qt for scientific appl (see this link for info on integration withMotif) |
QPL( Qt 2.x series, X11 version) QPL and GPL(Qt 2.2 and later, X11 version) (Windows and MacOS X) (GPLed) |
|
|
| y(GPLed) |
| ||||
SmartWin | a small sized, extremely type safe, no overhead what so ever, fully template based C++ GUI library for Windows API (formerly known as Win 32 API). | GPL plus additional permissions | y (?) | y | |||||||
|
|
|
|
|
|
|
|
|
|
| |
|
|
|
|
|
| ||||||
Taronja | information in Spanish... no English info available. | BSD | y (?) | ? | |||||||
|
|
|
|
|
|
|
| y | |||
|
|
|
| ||||||||
Trixul | Trixul is an XML and JavaScript GUI toolkit that supports MacOS X, Linux, and Windows environments directly via Cocoa, Gtk+, and .NET native implementations. JavaScript code can call C++ directly. | BSD | y (on top ofgtk+) | | | y (on top of .Net Forms) | | | | y | |
Willows Toolkit |
|
|
|
|
|
|
|
|
|
|
|
Ultimate++ | C++ toolkit that "achieves significant reduction of code complexity for most applications when compared to other development platforms" | BSD | y | y | y | ||||||
|
|
|
|
|
|
|
|
|
| ||
|
|
|
| ||||||||
|
|
|
|
|
|
|
|
|
| ||
|
|
|
|
| |||||||
|
|
|
|
| |||||||
VCF | Visual Component Framework, "a simple to use cross platform GUI framework, with many of the advanced design features of Java and Java's Swing, and Borland's Visual Component Library.Also provides advanced RTTI/Introspection features common in languages like Object Pascal, Objective C, Smalltalk, and Java, but not typically found in C++" | BSD | in development | | y | y | | | | in development | |
| The Virtual X Class Library. API strongly linked to the Win32 API. | LGPL | y |
|
|
| |||||
|
|
|
|
| |||||||
|
|
|
|
| |||||||
wGui | a simple, platform independent dialog manager library usingSDL | LGPL | (via SDL) | (viaSDL) | (via SDL) | (via SDL) | (viaSDL) | (via SDL) | (via SDL) | (via SDL) | (via SDL) |
|
is a modern framework that takes advantage of templates, multiple inheritance, STL, and exceptions. is designed around the notionof |
|
|
|
|
|
|
|
| ||
|
|
|
|
|
|
| y | ||||
|
|
|
|
|
|
|
|
| |||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |||||||
|
( WxGTK, gtk+ port) |
LGPL ( wxxt1.6xonly) WxWidgets license (version 3.0, actually LGPL plus exceptions) |
|
|
|
|
|
|
|
| also on top of MicroWindows, and MGL |
|
|
|
| ||||||||
|
|
|
| ||||||||
|
note another toolkit has the samename |
|
| ||||||||
|
note another toolkit has the samename |
|
| ||||||||
|
|
|
| ||||||||
|
|
|
|
| |||||||
|
"Xmt++ is to provide a C++ Model-View-Controller framework implementation based on Xmt. This framework makes it easier to integrate a Motif GUI to an application and maintain design integrity." |
|
| ||||||||
|
|
|
|
| |||||||
|
standards (e.g., XML, RDF, HTML, CSS, DOM, JavaScript) and technologies (e.g., Gecko, XPConnect) to minimize platform-specific code." May built on top ofgtk+ and Xt for X11 |
|
|
|
|
|
|
|
| y | BeOS |
|
|
| |||||||||
|
|
|
|
|
|
|
|
| |||
|
|
|
|
|
|
|
|
|
| ||
|
|
|
|
|
|
| |||||
|
framework. supports 24 platforms (including MS DOS and Unix text mode) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| y |
|
|
|
|
| ||||||||
|
|
|
|
|
|
XP/Vista |
|
|
|
MacOS X |
|
to top
Java oriented
- Biss-AWT (GPL-like license)
- SAWT
- GWT (Gadget Windowing toolkit), licensed under LGPL,from DTAI Inc. (nolonger available?)
- Koala Toolkit (license)
- SubArctic,not an AWT clone but a toolkit based on advanced research (license)
- FrescoJavaport (only supports Java 1.0.2)
- Mica, from SoftwareFarm ( license)
- Marimba's FreeBongo
- dog.gui ,a lightweight, high-performance Java GUI toolkit which can serve as a replacement for the AWT (license: MozillaPublic License)
- SWANK,a GUI toolkit implemented in Java, to be used with Jacl, a Tcl intrepreterin Java (BSD-style license)
- JAPI, a non-OO, procedural toolkit built on top of AWT, and accessible from Pascal, C and Fortran, for Windows and Unix
- Epeios, for Unix and Windows, GPLed.
- SWT, The Standard Widget Toolkit, part of Eclipse project, for Windows, Mac, QNX and Unix (Motif, gtk and Qt) (CPL license)
- Buoy, a "transparent wrapper" around Swing
- XUI, a toolkit for building Java applications with Java and XML, release under an MPL like license.
- java-gnome, GNOME Java binding (LGPL)
- QtJava, Qt Java binding (GPL)
- wx4J, wxWidgets Java binding (BSD-style license)
Ada
- GtkAda , Ada binding for gtk+,for X11 and Windows ( GPLed plus exceptions )
- X11Ada ,X11 and Motif bindings forAda
- VisualAda Developer, RAD environment for Ada
- GWindows , GUI framework for Ada on Windows (GPL/LGPLplus exceptions )
- Windex, Ada wrapper for the Win32 API ( GPLplus exceptions)
- JEWL, Simple GUI framework for rapid development of GUI programs ( GPL)
- Claw, Ada framework for the Windows API, demo version
- JAPI,binding for Java AWT (LGPLed)
- RAPID, Rapid Ada Portable Interface Design tool,. generates Ada code using a platform independent GUI library. (Current implementations utilize the TASHbinding to Tcl/Tk, the GNAT to JVM compiler, the Microsoft .NET framework, or GtkAd)
BASIC
LISP
- Garnet, GUI development environment for Common Lisp. No longer supported.
- XIT
- Winterp, a rapid development tool for GUI applications with a small object-orientedLISP interpreter ( XLisp-Plus) (BSD-stylelicense)
- Newlisp includes Tk binding (GPLed)
Tcl
- Tk,the standard widget set for Tcl, for X11, MS Windows, and MacOS.
- itcl ([incrTcl]), with itk ([incrTk]) and [ incr Widgets] ,object-oriented extension to the Tcl language and associated mega-widgetset and GUI framework.
- BLT extensionto the Tk toolkit.
- Tix, the Tk InterfaceExtension.
- TclMotif, Motif binding for Tcl.
- BWidgets ,"a professional look&feel Toolkit. Everything is native so noplatform compilation, no compiled extension library needed. In Pure Tcl/Tk.For Unix, Windows and Mac." ( LGPLed)
- Tcl-gtk , gtk+ binding for Tcl
- PicoGUI
Pascal
- EFLIB, "extended function library"
- Free Pascal's gtk+bindings
- BlackBox Component Framework, successor to Oberon/F, using Component Pascal, for Win32 and Mac ( free for education use only)
- WOL, Framework for windowed programming under Windows and Linux (GTK) with Free Pascal. (GPLed)
- JAPI,binding for Java AWT (LGPLed)
- Lazarus, (LCL or Lazarus Class Libraries) the class libraries for Free Pascal that emulate Delphi, currently built on top og gtk+ (LGPLed)
Modula 2
- Dialog Machine and RAMSES (Research Aids for Modeling and Simulation of Environment Systems) "providesthe basis for highly portable programming of interactive applications,since it makes a minimum of assumptions on the properties of the underlyingoperating system and the hardware", available for MacOS, Atari ST (GEM),PC (GEM, MS Windows, Windows NT) and Unix (SUN and IBM RISC). RAMSES is Mac only. Both no cost freeware.
Perl
- XForms4Perl ,XFormsperl binding.
- pTk,perl/Tk, tkPerl, Tk binding for Perl.
- PerlQt, perl bindings for Qt . (LGPLed)
- Perl bindings for gtk+
- plFLTK , Perl bindingsfor Fltk (LGPLed) (discounted)
- FLTK.pm, Perl bindings for Fltk version 2
- wxperl,WxWidfgets Perl binding
- Prima, "an extensible Perl toolkit for multi-platform GUI development. Supported platforms include Linux, Windows NT/9x/2K, OS/2, and UNIX/X11 workstations" (BSDed)
- PicoGUI
Python
- Tkinter, Tk-based GUI toolkit for Python, part of standard of Python distribution. Tk-based Additions, bindings under Pythin:
- Pmw (Python MegaWidgets) (also extra contributions)
- TIDE (Tix)
- Rivet,Tk binding for Python
- wxPython , WxWidfgets Python binding
- vkApp,a Python GUI application framework, and PythonX Extension, Python interface to X11 and Motif.
- WPY, a MFC-based GUI class library for Python, for MS Win95/NT and Unix/X11 using Tk.
- Python-Gtk andpygtk (gnome-python) ,Python bindings for gtk+andGNOME
- pyFLTK , Python bindingfor Fltk (LGPLed)
- FXPy, Python binding for FOX (LGPLed)
- Python X Library, X11 client-side API implemented purely in Python (GPLed)
- PicoGUI
- pyQT, Qt binding for Pytbon
- PyKDE,Python bindings for KDE
- pygame, SDL binding
- Jython provides access to Java GUI facilities
- JTKinter, port of tk to Jython
- JPI Java Python Interface (project dead)
Javascript
- Vexi written in Java, Vexi applications are written in a combination of XML and JavaScript (core GPLed, widgets LGPLed)
Scheme (including Guile)
- MrED,a WxWindows -based toolkit for scheme, for X11,MS Win95/NT, and MacOS
- STk,a scheme interpreter with access to Tk
- guile-gtk,Guile bindings for gtk+ (GPLed)
- guile-fltk, Guile binding for Fltk (LGPLed)
Oberon
- Visual Oberon, a collection of GUI classes for Oberon-2, for X11 ( GPLed).
Smalltalk
Prolog
- XPCE (GPLed ), for SWI-Prolog
S-Lang
Pike
Lua
- lua-gtk and lua-gnome , Lua's gtk+ and GNOME bindings
- lua-FLTK, Lua FLTK binding
- wxLua, WxWindows binding for Lua
- tkLua, tk binding
- IUP (Portable User Interface), a highly portable toolkit for Lua and C, for Windows and X11/Motif.
Others
- CoderForm, a presentation and layout manager for .NET desktop applications, allowing creating the GUI from any .Net language
Commercial Toolkits
C/C++ oriented
Name |
|
|
|
|
XP/Vista |
|
|
|
MacOS X |
|
|
|
|
|
|
|
|
| |||
|
|
|
|
|
|
| ||||
|
|
|
|
|
| |||||
CLX | (Component Library for Cross-platform) Cross-platform library for Delphi , Kylix and CBuilder - Based on topof Qt, works on Win32 and GNU/Linux (x86) | y | y | y | ||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
CroPL | a C++ application framework and utility library for single-source Mac/Windows applications | | | y | y | | | y | y | |
Framework | rich DOS-based business application development environment, orginated from Ashton-Tate's Framework product, with FRED. Object-Function-Based, Text-Aware, rapid application development Language | |||||||||
|
( companyout of business) |
|
|
|
|
|
| |||
|
|
|
|
|
|
|
| |||
JX | a full-featured C++ application framework and widget library (SDK) for use with the X Window System | y | ||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |||
|
|
|
|
|
| |||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
y
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| included with Metrowerk's Mac OS compilers. |
|
|
| ||||||
|
|
|
|
|
|
|
| |||
|
developing and deploying scientific and engineering applications without writing any GUI code. Support Visual C++ and Compaq Visual Fortran. |
|
|
|
| |||||
|
|
|
|
|
|
| ||||
|
|
|
|
|
|
|
|
| ||
|
|
| ||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |||||||
|
|
|
|
|
|
|
| y | ||
|
|
|
|
|
|
| ||||
|
|
|
|
|
|
|
|
Java Oriented
- Sun/ Javasoft's AWT
- Sun/ Javasoft's IFC and JFC (Swing) withvariable look
- Microsoft'sAFC
- Borland/Inprise 's JBCL(JavaBeans Component Library) (part of JBuilder)
- Xelfi Technologies 's Xelfi(30 day free evaluation, low cost registration required for longer use)
- Visix's Vibe Foundation Classes (powerful GUI framework ispart of a complete Java development system Vibe) ( company out of business)
- SL-GMS , a framework for providing dynamic graphics in Pure Java applications
- UITools, "a toolkit for building graphical user interfaces (GUI) for simulation programs," like these tasks commonly done with MatLab and FORTRAN.
- Bambookit, XML-based User Interface, Java-based thin client platform that can be accessed anywhere, with any browser
C#
- WinForm, the standard C# GUI class library/framework.
Ada
Fortran
- Winteracter, a modern GUI toolset for the Fortran 90/95 programming language, for Windows and Linux
Pascal (including Delphi)
- VCL(Visual Component Library), the GUI foundation for Inprise/Borland'spopular RAD tool Delphi, forWin 3.1/95/98/NT, "object-oriented component framework delivers the only truecomponent architecture with over 200 visual and non-visual components thatare completely reusable and extendable"
- CLX, Cross-platform library for Delphi , Kylix and CBuilder - Based on top of Qt, works on Win32 and GNU.Linux (x86)
- O2, OO framework for Delphi, including user interface layer
Fortran
- SancsGUI, for Compaq Visual Fortran, An object-oriented modeling and simulation environment for developing and deploying scientific and engineering applications without writing any GUI code. For 32-bit Windows.
Misc
- XPCE, GUI system for Prolog, Lisp and C++.
- MetaCard, a Hypercard-typescript language with integrated GUI library, for Unix/X11 and MS Win 3.1/95/NT.
Related Links
Other GUI Toolkit Pages
- the FSU Toolkit Page
- BradMyers'sUser Interface Software Tools page
- Steve Baum's GUIpage
- Laura Michaels'sPortableScreen Library Resources page
- The Platform Independent GUI FAQ
- Karim Ratib's" http://www2.iro.umontreal.ca/~ratib/code/gui.htm#gui"
- Scientific applicationson Linux's X11 Libraries & Toolkits page
- SunWorld 'soverview of GUI toolkits by Cameron Laird and Kathryn Soraiz.
- Themes.org , a web site dedicatedto GUI themes (variable look and feel)
X Windows/Motif
- MW3: Motif on the WorldWide Web: a monster list of Motif and X Window-related resources, includingGUI libraries and tools. Now motifdeveloper.com
- Kenton Lee's TechnicalX Window System and OSF/Motif WWW Sites: another rich list of X Window/Motifresources.
Alternative Windowing Systems
- Fresco (Berlin), an attempt to provide an alternative to X Windows.Also listed as a free GUI toolkit
- MiniGUI, small windowing system for embedded applications
- Microwindows (NanoGUI), small windowing system for embedded applications, for DOS, MS Windows, Unix, Linux SVGAlib, Linux kernel framebuffer (MPLed/GPLed)
- DirectFB, a thin library that provides hardware graphics acceleration, input device handling and abstraction, integrated windowing system with support for translucent windows and multiple display layers on top of the Linux Framebuffer Device. (LGPLed)
- PicoGUI
- Y Widnow System
Papers on GUI
- "GUI Fragmentation is the Greatest Weakness of Unix", arguing for good GUIstandards for Unix systems in responce to attacks by Microsoft Windows.
Drag and Drop protocols
Commercial Java Systems
- Vibe, a complete Java deployment system including tools fromcompiler to custom virtual machine. ( company out of business)
Organizations for Free Software
- Free Software Foundation
- Linux International
- Software in the Public Interest (Debian GNU/Linux)
- X.org Foundation, the revitalized organization, successor to the orginal X Consortium, maintaining the X Window System.
- Free Standards Group, the organization responsible for setting standards in Free OSes. parent of the Linux Standards Base
- The XFree86 Project, Inc. Producer of the XFree86 , the X Windowserver for PC based UNIX and UNIX-like systems, role generally replaced by X.org
- The Open Source Initiative, organization for promoting the "Open Source" concept
- OpenOffice Foundation , the organization managing the OpenOffice project
- GNOME Foundation , the organization for GNOME
- KDE League, for the KDE project.
Important Free Software Projects
- GNU
- Linux , alsoknown as GNU/Linux ,GPLed Unix clone
- XFree86
- Netscape Communicator and Netscape Navigator (Mozilla), the once most popular web browser in the world, becomes free software on March 31, 1998.
- Arena,the free browser formally developed by the World Wide Web Consortium, now supported by Yggdrasil.
- Amaya , the free browser/editordeveloped by the World Wide Web Consortium
- FreeBSD , BSD-derivedfree Unix
- OpenBSD , BSD-derivedfree Unix
- NetBSD , BSD-derivedfree Unix
- OpenOffice , formerly StarOffice, now the free software office suite project support by Sun and in association with GNOME as the GNOME Office.
- Eclipse, Java-based open extensible IDE.
Free Object-oriented Componet Software Framework
- OpenDoc,the famous Apple/ IBM invention, maybe someday free software. (C++ API)
- OpenParts,KDE's component framework with ideas from OpenDoc
- Bonobo, GNOME's component framework
Free Java Systems/Compilers
- JDK(Java Development Kit), from Sun / Javasoft.( Linux version )(SGI version)
- Kaffe , a Java virtual machine from TransVirtual ,and just-in-time compiler, works on most Unix's, MS Win 95, NextStep and Amiga (GPLed).
- Japhar , a free JVM from the Hungry Programmers ,the offical GNU Java VM (LGPLed).
- Guavac, a GPLed Java source-to-bytecode compiler written in C++.
- Jikes, a Java source-to-bytecode compiler, faster Javac replacement
- Jump, a Java source-to-bytecode compiler with non-standard Java language extension,10 to 30 times faster than Javac
- j2c, a Java class file-to-C translator
- Toba, a Java class file-to-C translator, for standalone applications (not applets).
- gcj, the GNU Java compiler
Free C# Systems/Compilers
- Mono, an effort to create an Open Source implementation of the .NET Development Framework. Includes: a compiler for the C# language, a runtime for the Common Language Infrastructure and a set of class libraries (GPLed plus exceptions for linking)
- DotGNU, including Portable.NET, an effort to create an alternative to Microsoft .NET, including C# compiler and run-time libraries. (GPLed plus exceptions for linking)
Library Binding Generation Tool
- SWIG (Simplified Warpper and Interface Generator), "a program development tooldesigned to make it easy to build scripting language interfaces to C/C++ programs."
GUI Toolkit Implementation Utility Libraries
- libsigc++,"a library implements a full callback system for use in widget libraries,abstract interfaces, and general programming." (LGPLed)
Graphical Desktop Environments
- CDE, Common Desktop Environment, the commercially standard Unix desktop
- KDE , the K(ool) Desktop Environment, based on Qt.
- GNOME, GNU Network Object Model Environment, based on gtk .
- XFCE , a lightweight desktopenvironment for various UNIX systems, based on gtk
- GNUStep , the free softwareimplementation of the OpenStep desktop environment
- FLEK, an application framework "environment" based on Fltk
- Equinox Desktop Environment, based on Fltk
Others
- Mesa, a 3D graphics library providing an Open GL API, licensed under BSD (X11)-style license and now part of XFree86
- GLUT,the OpenGL Utility Toolkit, a window system independent toolkit for writingOpenGL programs
- vtk , The VisualizationToolkit (C++ API) ( license)
- GIMP , the GNU Image Manipulation Program, a Photoshop-style painting program, licensedunder GPL.
- FilmGIMP, a fork of GIMP for movie editing.
- ImageMagick, a set of powerful image manipulation/processing programs. Functions availableto other programs via a rich API.(BSD-stylelicense)
- libart (alt site), GNOME/RaphLevien's advanced 2D graphics library (LGPLed)
- Zodius, a C++, easy-to-use 2D graphics library (BSD-style license)
- Cario, a LGPLed/MPLed "vector graphics library designed to provide high-quality display and print output. Currently available output targets include the X Window System, OpenGL (via glitz), Quartz, win32, in-memory image buffers, PNG images, PostScript, and PDF files. Some of these backends are still experimental. Cairo is designed to produce identical output on all output media while taking advantage of display hardware acceleration when available (eg. through the X Render Extension or OpenGL)." Possibly the standard 2D graphic API on free OSes.
- AGG (Anti-grain geometry, a powerful C++-based advanced 2d graphics rendering library (BSD-style license)
- SDL (SimpleDirectMedia Layer) library, providing direct video framebuffer accessfor fast rendering, supports Linux, Win95/98/NT/2000, BeOS, MacOS, Solaris,IRIX, and FreeBSD. ( LGPLed)
- OpenGL (Sample Implementation), now free software.
- OpenInventor , advanced object-oriented 3D graphics framework, now free software. offering a comprehensive solution to interactive graphics programming problems. It presents a programming model based on a 3D scene database that dramatically simplifies graphics programming. (LGPLed)
- SATIN and Quill, Java-based gesture toolkit that allow ink gesture inputs to drive GUIs (BSD licensed)
- A list of Drawing and Design Programs
Companies developing/supporting FreeSoftware
Other Free Software websites
- free-soft.org , aweb site providing general Free Software/Open Source information
- The Free Software Bazaar
- advogato.org , general discussion site for free software developers
If you think anything is incorrect orwant to provide more information for inclusion in this page, please contact(via e-mail)
Copyright
© Copyright 1997-2003, 2005, 2007 AD ( ROC Years 86-92, 94, 96), by Li-Cheng (Andy) Tai, All rights reserved. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
All trademarks are the property of their respective owners.
page created Apr 19, 1997 (86)
有几个小伙伴看完啦? 看完的老板会多发年终奖哟^_^
由于这里不仅介绍了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