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.
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