给开发者带来的惊喜

GNOME 2.22 开发平台提供了一系列稳定的基础组件提供给独立软件的开发者们用以开发第三方应用程序。GNOME 和它的平台同时允许创造运行在 GNOME 之上的自由软件和专有软件。

GNOME 平台的库文件保证在余下的 GNOME 2.x 版本中的 API 和 ABI 是稳定的。GNOME 桌面的库文件并没有此保证,但是多数都保持了从版本到版本的一致性。

6.1. GVFS 和 GIO

GVFS 是一个带有诸如 SFTP, FTP, DAV, SMB, ObexFTP 等协议后台的用户空间虚拟文件系统。GVFS 是 GNOME-VFS 的替代品。GNOME-VFS 将不再被赞成使用,开发者也不应在新的应用程序中继续使用。

GVFS 包含两个部分:

  • GIO,作为 GLib的一部分的新共享库,提供了 针对 GVFS 的 API;同时
  • GVFS 本身,是一个包含多种文件系统和协议(如SFTP, FTP, DAV, SMB 和 ObexFTP)支持的后台软件包。

GVFS/GIO 致力于提供一个现代的,易用的 VFS 系统。它的目标是提供一些列 API 给开发者,以是他们不再使用原始的 POSIX IO 访问。它提供了一个更高级的以文件为中心的接口,而不仅仅是 POSIX IO 的复制品。除了文件的读写支持外,GIO 还提供了文件监视工具,异步 IO,和文件名完成功能。

GVFS 通过运行一个单独的主守护进程 (gvfsd) 来工作,它保证了对当前的 GVFS 挂载的跟踪。每一个挂在都有独立的守护进程。(一些挂载也会同时共享一个进程,但多数情况下不会这样。) 客户端通过一个联合 D-Bus 会话来与这些挂载通信(在会话总线上,但是使用点对点 D-Bus),同时用一个用户协议来进操作文件内容。通过进程进行后台传递大大简化了程序的依赖关系,使整个系统更加健壮。

GVFS 也提供了在 ~/.gvfs/ 提供了一个 FUSE 挂在点,这样可以使得 GVFS 挂载可以被传统的使用标准 POSIX IO 的应用程序使用。

不同于 GNOME-VFS,GVFS 中的连接是有状态的。这意味着用户仅仅需要输入一次密码,而不是每次成功的连接都需要一次次地重复输入。

因为转为使用 GVFS,自动挂载和自动运行现在已经直接由 Nautilus 完成而不再使用 gnome-volume-manager。

关于使用 GIO 的 API 的文档可以在网上获得,同时也有从POSIX IO 和 GNOME-VFS 到 GIO 的迁移指南。

6.1.1. 退步

尽管 GVFS 修正了原来的 GNOME-VFS 中的大量问题,但是现在仍有一些特性倒退了。主要的不足是缺少 fonts:// 和 themes:// 目标地址。

这些问题将会被尽快修复。还有一些应用程序还正在被移植到 GVFS 之上。这些移植工作的状态可以在已在线备案的里找到。

6.2. Anjuta IDE

Anjuta IDE 现在是 GNOME 开发套件的一部分。Anjuta 是一个与 GNOME 整合的 IDE,为开发者提供了很多特性,例如整合了调试器,Glade UI 编辑器和一个 Valgrind 界面。

图 9Anjuta 的任务列表。