Vala 编程/简介
Vala 的语法类似于 C#,经过修改以更好地适应 GObject 类型系统。Vala 支持以下现代语言特性:
- 接口
- 属性
- 信号
- Foreach
- Lambda 表达式
- 局部变量的类型推断
- 泛型
- 非空类型
- 辅助内存管理
- 异常处理
- 类型模块(插件)
Vala 的设计允许访问现有的 C 库,特别是基于 GObject 的库,而无需运行时绑定。使用 Vala 库所需的一切只是一个 API 文件,其中包含用 Vala 语法编写的类和方法声明。Vala 目前附带了针对 GLib 和 GTK+ 的实验性绑定。计划在稍后阶段提供针对完整 GNOME 平台的生成绑定。
从用 C 编写的应用程序中使用用 Vala 编写的类和方法并不困难。Vala 库只需要安装生成的标头文件,然后 C 应用程序就可以像往常一样访问 Vala 库的基于 GObject 的 API。同样,编写一个绑定生成器来从用 C# 等语言编写的应用程序访问 Vala 库也应该很容易,因为 Vala 解析器是用库编写的,因此在生成绑定时,所有编译时信息都可用。
许多开发人员希望用高级编程语言编写 GNOME 应用程序和库,但由于各种原因不能或不想使用 C# 或 Java,因此他们被迫使用 C,而没有对 GObject 类型系统的语法支持。Vala 编译器允许开发人员快速编写复杂的面向对象的代码,同时保持标准的 C API 和 ABI,并保持较低的内存需求。
C# 和 Java 库不能像从 C 和其他语言中的原生 GObject 库一样使用,也不能作为 GNOME 平台的一部分被接受。托管应用程序通常也存在更高的内存需求,这在某些情况下是不可接受的。
valac 从 Vala 源文件生成 C 源代码和头文件,就像您直接用 C 编写了库或应用程序一样。从 C 应用程序使用 Vala 库看起来与使用任何其他基于 GObject 的库没有区别。不会有 vala 运行时库,应用程序可以将其生成的 C 代码与他们的 tarball 一起分发,因此用户没有额外的运行时或构建时依赖项。