使用 GTK+ 绑定进行快速应用程序开发

发表于:2007-05-25来源:作者:点击数: 标签:
了解可用于通过语言绑定加速 GTK+ 开发 的各个选项。在本文中,您将了解可用于更快进行高 质量 应用程序创建的语言和工具。 C 编程语言是一种很不错的编程语言,受到我们很多人的青睐。但这种语言并不一定是所有情况下都适用的 解决方案 ,当然也不是创建以
了解可用于通过语言绑定加速 GTK+ 开发的各个选项。在本文中,您将了解可用于更快进行高质量应用程序创建的语言和工具。

C 编程语言是一种很不错的编程语言,受到我们很多人的青睐。但这种语言并不一定是所有情况下都适用的解决方案,当然也不是创建以下这种当今最常见的应用程序类型的方法:面向最终用户的图形用户界面(graphical user interface,GUI)应用程序。当不关心数字运算功能或直接接触计算机的底层细节方面的功能时,这些功能突然就变成了障碍,会浪费掉您的开发人员的很多宝贵的时间。

由于这个原因,人们创建了很多不同的工具来帮助开发人员将精力集中在编写重要的代码上,而不需要受不必要的细节和烦人的语言底层的困扰。这些工具包括高级语言、集成开发环境(integrated development environment,IDE)和各种用于简化和自动化常见任务的实用工具。本文并不会尝试深入探讨所有这些主题;本文只提供使用基于 GTK+ 的工具集时可用的各种不同选项的概述。

绑定

GTK+ 团队认识到使用不同工具的需求,开始着手创建可方便而快速地绑定到其他语言的库。我所说的语言绑定 是一种特定类型的粘附构件,允许编程语言向编程人员提供本机接口,而实际将所有工作委托给采用另一种语言编写的基础库。此处,导致麻烦的 C 的底层本性使其成为那些高级绑定基础的理想之选,因为几乎所有此类语言都能与 C 进行通信。





回页首


“更亲密的”接触

可以与 GTK+ 交互的语言非常多——每个绑定集都是独立的项目,具有自身的支持级别和完整性(有关详细信息,请参阅参考资料)——但其中的一些语言值得进行更为深入的讨论,这其中的原因可能是因为其出众的质量和受欢迎程度,也可能仅是为了说明如何使用差异很大的语言来进行 GTK+ 编程。

Python

最受欢迎的绑定是 Python 集,由 PyGTK 项目开发。得益于其作品的卓越质量和使用 Python 语言总体上给人带来的愉悦的感觉,PyGTK 成为了知名度最高的绑定,同时也是到目前为止唯一正式包含到核心 GNOME 桌面版本中的绑定。这意味着 Python 已被认为是非常不错,非常受欢迎,可以允许将采用 PyGTK 编写的应用程序(以及 PyGTK 本身)加入 GNOME 资产范围内,而不用将其作为第三方组件对待。当然,这并不意味着其他绑定不好,但如果喜欢使用 Python,您也一定会喜欢使用 PyGTK。

除了 GTK+ 库的基本集之外,Python 还全面覆盖了 GNOME 开发平台的各个方面。因此,在编写应用程序时,可以使用 GNOME 平台的所有共享工具,从而进一步提高您的开发效率。

C# 和 Microsoft NET

雷蒙德巨人 Microsoft® 的开发部门提供的最新产品 .NET 在 Microsoft Windows® 之外的平台上也很受欢迎(这得益于 Mono 项目提供的免费实现)。不过,您可能惊奇地发现,这项技术具有非常强的适应能力。事实上,.NET 方面最受欢迎的 GUI 工具集很大程度上不能算是 Microsoft 自己的 WinForms,而是 GTK+。由于 Gtk# 绑定集随缺省 Mono 分发版本一起提供,而且 GTK+ 本身的质量出众,因此 GTK+ 快速成为希望使用新 .NET 平台开发桌面的程序员的新宠。另外,由于 .NET 的效率非常高,因此很多新应用程序都采用 C# 和 GTK+ 进行编写,包括一些影响很大的应用程序,如 Beagle 项目(该项目允许快速有效地对计算机上存储的所有信息进行搜索)。

请注意,尽管其名称是 Gtk#,其中也包含了很多用于 GNOME 库的相应粘附构件,允许在必要时使用 GNOME 平台(如果您的操作系统上存在 GNOME 库)。Gtk# 也可以移植到 Windows,因此不必花太多的时间进行移植工作。

Haskell

现在我们讨论另一个完全不同的部分。懒功能语言 Haskell 与目前已讨论的任何语言都不相同,后者都使用命令型语法。正是由于完全不同的方法,Haskell 才能在很多应用程序中提供无以匹敌的简洁性和表达力,在那些要求进行数学推理的应用程序中,这一点更是表现突出。由于这个原因,它是您的工具库中一个非常有用的工具,通过使用 Gtk2Hs 项目的成果,您能够将精干的数学运算过程打包为同样精干的用户界面(user interface,UI)。

功能语言当然很有趣,但却不是表述用户交互的好方法,因此 Gtk2Hs 支持各种绑定(支持的最高版本为 GTK+ V2.8),包括很多重要工具,如 libglade、相应文档和一个与很多传统语言类似的友好单体应用程序编程接口(application programming interface,API)。此外,由于 GTK+ 采用了引用计数模式,因此可采用类似于 Haskell 的方式使用 Gtk2Hs,而不用显式地管理内存,这一点与其他一些 Haskell 的 GUI 库(如 wxHaskell)不同。

Java 语言

回到命令型语言,Java™ 编程语言方面(最受欢迎的环境之一)也表现非常出色。Java-GNOME 项目提供了一个稳健的绑定集,该绑定集涵盖了最新版本的 GTK+ 和 GNOME 库。具体来说,Java 语言方面添加了通过 Eclipse Standard Widget Toolkit (SWT) 使用 GTK+ 的选项。如果您使用 Java 语言创建桌面应用程序,这无疑是个好消息,因为您也能方便地使用 GTK+ 了。

有关语言绑定的一般性说明

使用绑定编写 GTK+ 代码时,请记住,虽然提供了库的所有常见功能,在某些特定区域可能并没有提供对采用 C 能进行的所有操作的全面支持(具体取决于所使用的语言的成熟度和具体特性)。特别要注意,脚本语言的新类派生存在一定的问题,对使用其可完成的具体任务进行了一定的限制。不过,各个语言组正在努力解决这些问题,您应当参考相应语言绑定的文档,以了解有哪些限制(如果有)。

为了帮助跟踪和使用恰当的绑定版本,已专门启动了 GNOME Language Bindings 项目。目前有四种语言(Python、Java 语言、C++ 和 Perl)在该项目中有绑定,这可确保这些语言编写的程序将始终以可预测的方式运行,且会包含最新的 GNOME 开发平台版本(包括 GTK+ 的最新版本)。显然,其他语言也可以涵盖这些版本,但对于项目中的这些语言,其完整性和及时性方面有更强的保证。





回页首


工具

除了使用相应语言来满足您的需求外,同样重要的是,要使用最适合您的代码编写工作的工具。此类工具能以更智能的方式直接支持目标语言,或可以自动化或简化重复的任务,从而可以大幅度缩减开发时间和成本。

UI 设计

在所有可用工具当中,GTX+ 编程中最重要的工具可能就是 libglade 了。通过使用 libglade(请参阅“GTK+ fundamentals, Part 2:How to use GTK+”),您可以大大增强代码的易读性、易维护性、模块性和简洁性——所有这些好处都是通过将指定 UI 的外观的视觉任务和编写代码(即应用程序逻辑)的过程分离来实现的。

由于该工具极其明显的重要性,语言绑定开发人员正在进行相关的工作,以在其语言中支持 libglade(虽然目前尚未将其包含在基础 GTK+ 库中)。因此,只要可以选择使用 GTK+,您就可以确定所选择的语言将支持 libglade。

要使用 libglade,必须为其创建接口描述文件。可以使用若干应用程序来完成此任务,第一个此类程序就是原来的 Glade2(该库的名称就是源于此)。不过,由于当前稳定版本 Glade2 的一些限制和 Glade3 开发工作方面的延迟,促成了一些替代 UI 编辑器的创建。目前,这其中最为成熟的是 Gazpacho(请参阅参考资料),该程序是作为 Glade3 设计理念的 Python 实现编写的。Gazpacho 也支持 libglade 的纯 Python 重实现版本,该版本针对 PyGTK+ 应用程序的需求进行了重新定制。

IDE

另一种支持工具类别是各种类型的 IDE,专门设计用于在开发的所有阶段提供全面的帮助。各种 IDE 均针对特定语言定制,通常可以为程序员提供极大的帮助。在这方面,Mono/.NET 具有良好的支持,这其中既包括 .NET 的原始创建者 (Microsoft) 提供的支持,也包括以 Mono 项目为核心的社区提供的支持,后者开发了一个相关的 IDE,称为 MonoDevelop。由于 Gtk# is 是 Mono 和 MonoDevelop 的创建者选择的 GUI 工具集,因此为其提供了良好的现成支持;不过,对于使用 Microsoft 系列工具的程序员,可以通过在 Microsoft Visual Studio® IDE 中进行相应的定义来方便地安装自定义程序包。

类似地,Java 程序员则可以使用 Eclipse 项目提供的异常出色的免费 IDE。要获得 GTK+ 代码的支持,除了将库导入到项目中外,还需要进行其他一些工作。可以在 Java-GNOME 项目页面(请参阅参考资料)上找到有关如何设置的详细说明。

不再简单地进行替换

除了简单地切换各种语言外,还可以采取各种方法来提高工作效率。最有用的技术之一来自选择合适的工具做合适的事情 这一古老规则的实际应用,采用嵌入 技术。

在此设置中,核心应用程序——通常具有非常严格的性能要求——采用低级语言编写(如 C 语言),以尽可能地利用硬件。不过,该应用程序随后会在不同的高级语言中公开扩展接口,以便方便简单地对该接口的行为进行增强和自定义。

通过使用嵌入脚本,通常可以同时最好地利用这两方面,获得精干且性能上佳的核心和方便的可扩展性。非常适合采用嵌入技术的语言是 Python,该语言的最初编写目的就在于此。有关此类组合如何工作的最好示例,请参阅 Nautilus 和 Epiphany(都是 GNOME 项目)如何向 Python 程序公开其扩展 API 的说明。由于 Python 的简洁性特征,您可以成功创建虽寥寥数行却非常有用的扩展。

原文转自:http://www.ltesting.net