Vala可以在没有GObject的情况下使用吗?

时间:2012-03-03 21:26:21

标签: vala gobject

我是Vala的新手。我不熟悉GObject。据我了解,GObject是从GNOME的GLib项目中分离出来的。如果我错了,请纠正我。

我非常喜欢Vala的语法和实现,但我并不打算为GNOME编写桌面应用程序。

我也知道(我想知道)Vala没有GObject本身以外的标准库。

所以我的问题是:Vala可以在没有GObject的情况下使用吗?如果可以的话,它是否可用(是否有最佳和维护的基础库,用于常见的事情,如类型转换,数学,字符串操作,缓冲等等...可用) ?

3 个答案:

答案 0 :(得分:9)

还有其他一些Vala配置文件,例如Dova和Posix。

答案 1 :(得分:5)

TLDR:我建议将Vala与GLib / GObject一起使用,因为它是在它们之上设计的。

虽然可能有valac的替代配置文件,但它们未完成或已弃用。

Vala的重点是减少用C语言编写GLib和Gtk +应用程序所需的样板数量。

它还增加了一些比C更好的其他改进,比如字符串和数组是简单的数据类型而不是容易出错的指针。

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

  • 属性
  • 继承
  • 代表
  • 异步方法
  • 引用计数(在C + GObject中是手动的,在Vala中自动也称为ARC)
  • 对象的类型安全
  • 泛型
  • 可能更多......

所有这些概念都可以在不使用GObject / GLib / Gio的情况下实现,但这意味着基本上重写GObject / GLib / Gio并没有多大意义。

如果您不想编写GUI应用程序,也可以使用GLib编写控制台应用程序,在Vala中使用GIO或GTK +是可选的,应用程序也可以在无头服务器上运行。

我认为在Qt中甚至有一些努力最终切换到GLib主循环,这将使Qt和GLib的互操作性变得更加容易。

使用GLib的框架的一个很好的例子是GStreamer,它也用于不同的桌面环境。

总结:

  • GLib是一个基本的跨平台应用程序框架
  • GObject是GLib生态系统使用的对象系统
  • GIO是基于GLib + GObject的I / O抽象(网络,文件系统等)
  • GTK +是基于GLib + GObject + GIO +其他
  • 的图形UI工具包
  • GNOME是一个基于所有" G"技术
  • Vala是一种高级编程语言,旨在减少锅炉板使用" G"来自C语言的库。
GTK +最初来自GIMP,后来分裂成了不同的G" G"库是今天GNOME的基础。

Vala还具有非常强大的绑定机制,可以轻松编写所谓的" VAPI"任何类型的C库的文件都在那里。

使用正确的VAPI绑定,您不必担心手动内存管理,指针,字符串和数组的零终止以及使编写正确的C代码变得如此困难的其他一些繁琐的事情。

答案 2 :(得分:3)

以下是您可以使用Aroop的其他个人资料。 (注意它仍处于重大发展阶段)。如果您需要高性能,我希望它是好的。请查看features here