2012-03-03 167 views
14

我是Vala的新手。我不熟悉GObject。據我瞭解,GObject脫離了GNOME的GLib項目。如我錯了請糾正我。Vala可以在沒有GObject的情況下使用嗎?

我喜歡瓦拉的語法和實施非常多,但它不是我的意圖寫的GNOME桌面應用程序。

我也知道(我想我知道)Vala除了GObject本身沒有標準庫。

所以我的問題是:Vala可以在沒有GObject的情況下使用,如果可以的話,它是否可用(是否有最佳和維護的基本庫,用於類型轉換,數學,字符串操作,緩衝區等常見事情...可用)?

+3

GObject框架未綁定到gnome桌面環境。您幾乎可以在任何形式的Linux上甚至在Windows上使用GObject庫。 – Mindbane 2012-03-13 20:07:20

回答

7

還有一些其他Vala簡介,如Dova和Posix。

+0

請注意,您不能在Posix配置文件中有類(或者至少只有'[Compact]') – ptomato 2012-03-04 20:19:40

3

這是另一個配置文件,您可以使用Aroop。 (注意它仍處於重大的發展階段)。我希望如果你需要高性能,這是好事。請檢查features here

4

TLDR:我建議使用瓦拉用的GLib/GObject的,因爲它被設計在它們上面。

雖然可以存在用於華劣克替代型材它們或者是未完成或棄用。

瓦拉整點是減少樣板的寫GLib的和GTK +應用中C.所需的量

它也增加了對C一些很好的其它改進,如串和陣列是簡單的數據類型,而不是容易出錯的指針。

它主要包裝中存在的所有的GObject的概念,如:

  • 性質
  • 繼承
  • 代表
  • 異步方法
  • 引用計數(其是手動的用C + GObject,以及自動在Vala中的ARC)
  • 對象類型安全
  • 仿製藥
  • 可能更多...

所有這些概念可以在不使用的GObject/GLib的/吉奧實現,但是這將意味着從根本上改寫的GObject/GLib庫/吉奧,這沒有多大意義。

如果你不想寫GUI應用程序的GLib可以用來編寫控制檯應用程序以及使用GIO或GTK +是瓦拉可選,應用無頭服務器上正常工作。

我認爲,即使是在Qt的一些努力,最終切換到GLib的主循環,這將使Qt和GLib中的互操作性更容易。

使用GLib的一個框架的一個很好的例子是其中的GStreamer跨不同桌面環境使用。

總結:

  • GLib的是一個基本的跨平臺應用程序框架
  • GObject的是通過在GLib生態系統
  • GIO是一個I/O抽象(網絡,文件系統等中使用的對象系統。)的基礎上的GLib + GObject的
  • GTK +是基於GLib的+ GObject的+ GIO +其他圖形UI工具包
  • GNOME是基於所有的 「G」 技術桌面環境0
  • Vala是一種高級編程語言,旨在減少鍋爐板使用C語言中的「G」庫。

GTK +最初來自GIMP,後來被分成了今天GNOME基礎的不同「G」庫。

Vala還具有非常強大的綁定機制,可以輕鬆爲任何類型的C庫編寫所謂的「VAPI」文件。

使用正確的VAPI綁定,您不必擔心手動內存管理,指針,字符串和數組的零終止以及其他一些繁瑣的操作,這些操作使編寫正確的C代碼變得非常困難。

相關問題