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 一起分發,因此使用者沒有額外的執行時或構建時依賴項。