作者:曹江华
Linux应用的广泛发展使其越来越受到广泛关注。Linux如此受欢迎,不仅仅因为它是免费的,而且还有以下原因:
? Linux是一个真正的抢占式多任务、多线程、多用户的操作系统。
? Linux性能稳定,功能强劲。
? Linux具有广泛的平台适应性。它在基于Intel公司的x86(也包括A MD、VIA、IDT)的计算机、基于Alpha的计算机,以及苹果、Sun、SGI等公司的计算机上都有相应的发行版本,甚至在AS/400上也能找到相应的版本,还可以在许多PDA和掌上电脑以及嵌入式设备上运行。
? 目前,已有为数不少的应用程序可以在Linux上运行。大多数为SCO Unix开发的应用程序都能在Linux上运行(借助于iBCS软件包),甚至还比在SCO Unix上运行速度更快。借助Dosemu,可以运行许多DOS应用程序,而借助Wabi或Wine,还可以运行许多为Windows设计的软件。
当然,Linux的优点决不止于此。它的出现为我国软件产业赶超世界先进水平提供了极好的机遇,也为我国软件产业反对微软的垄断提供了有力的武器。
Linux的迅速发展随着计算机网络的发展而扩大的。Linux可以说就是网络的代名词。目前Linux主要用于服务器端。在Internet上有很多服务器都在使用Linux。但是,一个操作系统要想得到普及,并占据一定的市场份额,必须要使非计算机专业人士都可以轻松使用这种系统。而Linux作为一种类Unix操作系统,对它的操作一般都是通过复杂的Shell命令进行的。因而,必须有一种简便易学的图形用户接口(Graphics User Interface)GUI,使用户使用鼠标就可以完成大多数工作。
在Linux中,GUI由以下几个部分组成:
? 窗口系统――组织显示屏上的图形输出并执行基本的文本和绘图功能。
? 窗口管理器――负责对窗口的操作(比如最小化、最大化、关闭按钮的形状,窗口边框外观等)以及输入焦点的管理。
? 工具包――带有明确定义的编程界面的常规库。
? 风格――指定应用程序的用户界面外观和行为。
LINUX诞生不久,自由软件社区的计算机专家就开始了KDE项目,目的是提供一个开放源代码的图形用户接口和开发环境。该项目取得了极大的成功,KDE成为许多Linux发布版本的首选桌面环境。GNU/Linux项目因此而得到蓬勃发展。但是,KDE是基于Troll Technologies公司的Qt库的。Qt库是一个跨平台的C++类库,可以用于多种Unix、Linux、Win32等操作系统。Qt并不是遵从GPL或LGPL协议的软件包。1997年由墨西哥国立自治大学的Miguel de Icaza领导的项目组开始了Gnome开发计划。Gnome是GNU Network Object Model Environment(GNU,网络对象模型环境)的缩写。该项目进展很快,由于Gnome项目的成功,1998年11月Qt库的开发者Troll公司宣布修改许可证协议,Qt库也成为自由软件。
1998年发布了Gnome1.0。现在,Gnome已成为一个强劲的GUI应用程序开发框架,并且可以在任何一种Unix系统下运行。Gnome使用的图形库是Gtk+――最初为了编写GIMP而创建的一套构件库,它是基于LGPL创建的,可以用它来开发开放源代码的自由软件,也可以开发不开放源代码的商用软件。Gnome的界面与KDE的界面是类似的(Gnome的目的之一就是创建一套类似KDE的桌面环境),熟悉KDE的用户无需学习就能够使用Gnome。由于以上几个原因,Gnome已经成为大多数Linux发布版本的首选桌面环境。
从用户的角度看,Gnome是一个集成桌面环境和应用程序的套件。从程序员的角度看,它是一个应用程序开发框架(由数目众多的实用函数库组成)。即使用户不运行Gnome桌面环境,用Gnome编写的应用程序也可以正常运行,但是这些应用程序是可以很好地和Gnome桌面环境集成。Gnome桌面环境包含文件管理器,它用于任务切换、启动程序以及放置其他程序的“面板”、“控制中心”(包括配置系统的程序以及一些小东西)等。这些程序在易用的图形界面背后隐藏了传统的UNIX Shell。Gnome的开发结构使开发一致的、易用的和可互相操作的应用程序成为可能。
在Linux下开发GUI程序的首要问题是采用什么样的图形库。Gtk+(GIMP Tool Kit,GIMP工具包)是一个用于创造图形用户接口的图形库它被称为GIMP工具包,因为它最初用于开发“通用图片处理程序”(General Image Manipulation Program,GIMP),Gtk已在大量软件项目,包括Gnome中得到了广泛应用。Gtk+是在Gdk(GIMP Drawing Kit,GIMP绘图包) 的基础上创建的.因为Gtk +和Gnome是用C语言编写的,所以在开发Linux下的GUI程序时使用C语言是非常方便的。如果用C++语言开发基于Gtk +应用程序,可以使用一个名为Gtk的函数库。一般的Linux发布版本中都提供了C编译器gcc或egcs。使用gcc或egcs可以编译C和C++源代码,编译出的目标代码质量非常好,编译速度也很快。各种C编译器都要使用一些C语言实用函数。为了保证程序的可移植性,gcc没有使用通用的C函数库,而是使用一种称为glib的函数库。glib也是Gtk+的基础。它包含一些标准函数的替代函数(如字符串处理函数)和基本数据结构的实现(单向链表、双向链表、树、哈希表等)。glib中所包含的函数消除了某些函数的安全漏洞,使其更加可靠,在不同平台上移植也更加方便。
GTK是用于实现图形用户接口的函数库。在Linux平台上,GUI(图形用户接口)使用的是称为X窗口(XWindow)的系统。X窗口系统是1984年由美国麻省理工学院开发的。在Linux上使用的X窗口系统是一种称为XFree86 的X版本。X窗口系统与Microsoft Windows的图形用户接口有所不同,它是基于客户/服务器的。X服务器在计算机上运行,控制监视器、鼠标和键盘。X客户通过网络与服务器通讯。X服务器为X客户提供图形显示服务。也就是说,X客户和X服务器可能在同一台计算机上运行,也可能在不同的计算机上运行。X窗口系统带有一套低级的库函数,称为Xlib。Xlib提供了许多对X窗口的屏幕进行操作的函数。当然,使用Xlib函数在屏幕上创建构件是很复杂的。GTK要在屏幕上绘制各种构件,就需要与X服务器打交道。但是GTK提供的构件库并未直接使用Xlib,而是使用了一个称为GDK的库。
GDK的意思是GIMP Drawing Toolkit,即GIMP绘图工具包。差不多每个Gdk函数都是一个相应Xlib函数的封装。但是Xlib的某些复杂性(和功能)被隐藏起来了。这样是为了简化编程,使Gdk更容易移植到其他窗口系统(有一个在Windows平台上的Gdk版本)。