我是Vala的新手。我不熟悉GObject。据我了解,GObject是从GNOME的GLib项目中分离出来的。如果我错了,请纠正我。
我非常喜欢Vala的语法和实现,但我并不打算为GNOME编写桌面应用程序。
我也知道(我想知道)Vala没有GObject本身以外的标准库。
所以我的问题是:Vala可以在没有GObject的情况下使用吗?如果可以的话,它是否可用(是否有最佳和维护的基础库,用于常见的事情,如类型转换,数学,字符串操作,缓冲等等...可用) ?
答案 0 :(得分:9)
还有其他一些Vala配置文件,例如Dova和Posix。
答案 1 :(得分:5)
TLDR:我建议将Vala与GLib / GObject一起使用,因为它是在它们之上设计的。
虽然可能有valac的替代配置文件,但它们未完成或已弃用。
Vala的重点是减少用C语言编写GLib和Gtk +应用程序所需的样板数量。
它还增加了一些比C更好的其他改进,比如字符串和数组是简单的数据类型而不是容易出错的指针。
它主要包含GObject中存在的所有概念,如:
所有这些概念都可以在不使用GObject / GLib / Gio的情况下实现,但这意味着基本上重写GObject / GLib / Gio并没有多大意义。
如果您不想编写GUI应用程序,也可以使用GLib编写控制台应用程序,在Vala中使用GIO或GTK +是可选的,应用程序也可以在无头服务器上运行。
我认为在Qt中甚至有一些努力最终切换到GLib主循环,这将使Qt和GLib的互操作性变得更加容易。
使用GLib的框架的一个很好的例子是GStreamer,它也用于不同的桌面环境。
总结:
Vala还具有非常强大的绑定机制,可以轻松编写所谓的" VAPI"任何类型的C库的文件都在那里。
使用正确的VAPI绑定,您不必担心手动内存管理,指针,字符串和数组的零终止以及使编写正确的C代码变得如此困难的其他一些繁琐的事情。
答案 2 :(得分:3)
以下是您可以使用Aroop的其他个人资料。 (注意它仍处于重大发展阶段)。如果您需要高性能,我希望它是好的。请查看features here。