Vala 程式設計/簡介/歷史
Vala 仍處於積極開發階段,某些特性可能會隨著時間推移而發生變化。 |
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 庫,以便在生成繫結時可以使用所有編譯時資訊。
許多開發者希望使用高階程式語言編寫 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 一起分發,因此使用者沒有額外的執行時或構建時依賴項。