跳转到内容

Vala 编程/简介/历史

来自 Wikibooks,开放世界中的开放书籍

语言特性

[编辑 | 编辑源代码]

Vala 的语法类似于 C#,但进行了修改以更好地适应 GObject 类型系统。Vala 支持以下现代语言特性:

  • 接口
  • 属性
  • 信号
  • Foreach
  • Lambda 表达式
  • 局部变量的类型推断
  • 泛型
  • 非空类型
  • 辅助内存管理
  • 异常处理
  • 类型模块(插件)

Vala 旨在允许访问现有的 C 库,尤其是基于 GObject 的库,而无需运行时绑定。使用 Vala 库所需的一切只是一个 API 文件,其中包含用 Vala 语法编写的类和方法声明。Vala 目前附带了 GLib 和 GTK+ 的实验性绑定。计划在稍后阶段提供针对完整 GNOME 平台的生成绑定。

从用 C 编写的应用程序中使用用 Vala 编写的类和方法并不困难。Vala 库只需要安装生成的头部文件,然后 C 应用程序就可以像往常一样访问 Vala 库的基于 GObject 的 API。由于 Vala 解析器是用库编写的,因此也应该很容易编写绑定生成器来访问来自例如 C# 编写的应用程序的 Vala 库,以便在生成绑定时可以使用所有编译时信息。

为什么选择 Vala?

[编辑 | 编辑源代码]

许多开发者希望使用高级编程语言编写 GNOME 应用程序和库,但由于各种原因无法或不想使用 C# 或 Java 或 Python 或 Ruby 或 Perl 或 Lua 或 Haskell 或 Erlang 或 C++……,因此他们只能使用 C,而没有对 GObject 类型系统的语法支持。Vala 编译器允许开发者快速编写复杂的面向对象代码,同时保持标准的 C API 和 ABI,并保持较低的内存需求。

C# 和 Java 库无法像本机 GObject 库那样从 C 和其他语言中使用,并且不能作为 GNOME 平台的一部分被接受。托管应用程序通常还具有更高的内存需求,这在某些情况下是不可接受的。

Vala 编译器 (valac) 从 Vala 源文件生成 C 源文件和头文件,就像您直接用 C 编写库或应用程序一样。从 C 应用程序使用 Vala 库与使用任何其他基于 GObject 的库没有区别。不会有 vala 运行时库,并且应用程序可以将其生成的 C 代码与它们的 tarball 一起分发,因此用户没有额外的运行时或构建时依赖项。

注意事项

[编辑 | 编辑源代码]
华夏公益教科书