我是Vala的新手.我不熟悉GObject.据我了解,GObject是从GNOME的GLib项目中分离出来的.如我错了请纠正我.
我非常喜欢Vala的语法和实现,但我并不打算为GNOME编写桌面应用程序.
我也知道(我想知道)Vala没有GObject本身以外的标准库.
所以我的问题是:Vala可以在没有GObject的情况下使用吗?如果可以的话,它是否可用(是否有最佳和维护的基础库,用于常见的事情,如类型转换,数学,字符串操作,缓冲等等......可用)?
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,它也可以在不同的桌面环境中使用.
综上所述:
GTK +最初来自GIMP,后来被分成了不同的"G"库,这些库是今天GNOME的基础.
Vala还具有非常强大的绑定机制,可以轻松地为任何类型的C库编写所谓的"VAPI"文件.
使用正确的VAPI绑定,您不必担心手动内存管理,指针,字符串和数组的零终止以及使编写正确的C代码变得如此困难的一些其他繁琐的事情.