2012-03-03 113 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代码变得非常困难。

相关问题