2012-03-03 12 views
14

Sono nuovo in Vala. Non ho familiarità con GObject. A quanto ho capito, GObject è stato scorporato dal progetto GLib da GNOME. Correggimi se sbaglio.È possibile utilizzare Vala senza GObject?

Mi piace molto la sintassi e l'implementazione di Vala, ma non è nelle mie intenzioni di scrivere applicazioni desktop per GNOME.

So anche (penso di sapere) che Vala non ha una libreria standard oltre a GObject stesso.

Quindi la mia domanda è: Vala può essere utilizzato senza GObject e se si può, è utilizzabile (sono là librerie di base ottimali e mantenuti per le cose comuni come le conversioni di tipo, la matematica, la manipolazione di stringhe, tamponi, ecc ... disponibile)?

+3

Il framework GObject non è associato agli ambienti desktop gnome. È possibile utilizzare le librerie GObject su quasi tutte le forme di Linux e anche su Windows. – Mindbane

risposta

7

Esistono altri profili Vala come Dova e Posix.

+0

Nota che non puoi avere classi nel profilo Posix (o almeno solo quelle di '[Compact]') – ptomato

3

Ecco un altro profilo che è possibile utilizzare Aroop. (Nota che è ancora sotto pesante sviluppo). Quello che spero è bello se hai bisogno di prestazioni elevate. Si prega di controllare il features here.

4

TLDR: Si consiglia di utilizzare Vala con GLib/GObject, perché è stato progettato su di essi.

Mentre ci possono essere profili alternativi per Valac, sono incompleti o deprecati.

Il punto di Vala è quello di ridurre la quantità di boilerplate necessaria per scrivere GLib e GTK + applicazioni in C.

Si aggiunge anche alcune altre miglioramenti rispetto C, come stringa e la matrice essendo semplici tipi di dati, invece di puntatori incline all'errore.

avvolge lo più tutti i concetti presenti in GObject piacere: classi

  • proprietà
  • successione
  • delegati
  • metodi asincroni
  • conteggio
  • riferimento (che è manuale in C + GObject e Automatic aka ARC in Vala)
  • tipo di sicurezza di oggetti
  • generici
  • probabilmente molto più ...

Tutti questi concetti possono essere implementate senza usare GObject/GLib/Gio, ma ciò significherebbe riscrivere praticamente GObject/GLib/Gio che non ha molto senso.

Se non si desidera scrivere applicazioni GUI, GLib può essere utilizzato anche per scrivere applicazioni console, utilizzando GIO o GTK + è opzionale in Vala, le applicazioni funzionano anche su un server senza testa.

Penso che ci sia anche qualche sforzo in Qt per passare finalmente al ciclo principale di GLib, il che renderebbe molto più semplice l'interoperabilità di Qt e GLib.

Un buon esempio di un framework che utilizza GLib è GStreamer che viene utilizzato anche in diversi ambienti desktop.

In sintesi:

  • GLib è un semplice applicazione framework cross-platform
  • GObject è il sistema oggetto usato dall'ecosistema GLib
  • GIO è un'astrazione di I/O (rete, file system, ecc .) sulla base di GLib + GObject
  • GTK + è un grafico UI toolkit basato su GLib + GObject + GIO + altri
  • GNOME è un ambiente desktop basato su tutte le "G" tecnologie
  • Vala è un linguaggio di programmazione di alto livello progettato per ridurre la piastra della caldaia necessaria per utilizzare le librerie "G" dal linguaggio C.

GTK + originariamente proveniva da GIMP e da quel momento era suddiviso nelle diverse librerie "G" che sono alla base di GNOME oggi.

Vala dispone anche di potenti meccanismi di associazione per semplificare la scrittura di cosiddetti file "VAPI" per qualsiasi tipo di libreria C disponibile.

Con i binding VAPI corretti non ci si deve preoccupare della gestione manuale della memoria, dei puntatori, della terminazione zero di stringhe e array e di alcune altre cose noiose che rendono la scrittura corretta del codice C così difficile.

Problemi correlati