Ubuntu 16.04 Xenial Xerus
Ubuntu 12.04 Precise Pangolin
Bei Vala und seiner Schwester Genie handelt es sich um zwei noch junge Programmiersprachen. Vala erfreut sich zunehmender Beliebtheit unter anderem im GNOME-Projekt. Bekannte Programme, die in Vala entwickelt werden, sind beispielsweise Shotwell, Geary, der Xfce Music Player Client und einige weitere .
Die beiden modernen Sprachen ermöglichen objektorientierte Programmierung mit dem GObject-Modell. Die Syntax von Vala ist an C# und auch Java angelehnt, die von Genie erinnert in Teilen an Python, Boo und D. Der Vala-Compiler übersetzt den Quellcode in C-Header-Dateien und -Quelltext, der wiederum (standardmäßig) mit dem GNU C Compiler in ausführbaren Maschinencode übersetzt wird. Alternativ kann auch nur der C-Code generiert werden, der dann mit einem beliebigen C-Compiler übersetzt werden kann (z.B. zum Einbinden in C-Projekte).
Unter Ubuntu kann die Installation aus den Paketquellen oder einem PPA mit den aktuellsten Versionen erfolgen. Aufgrund der noch instabilen (aber seit 0.18 fast gleichgebliebenen) Programmierschnittstelle sollte immer die aktuellste Compiler-Version für eigene Projekte verwendet werden.
Der Vala-Compiler kann über die Paketverwaltung installiert werden [1]:
valac
mit apturl
Paketliste zum Kopieren:
sudo apt-get install valac
sudo aptitude install valac
Das Metapaket valac hängt mitunter nicht von der aktuellsten Compiler-Version ab. Entsprechend kann der Compiler abhängig von der Version über das Paket valac-VERSION installiert werden. Dabei ist VERSION
in der Form x.y
, mit y
als gerade Zahl, z.B. 0.20
.
Ein Paket mit Dokumentation für die entsprechende Vala-Version ist vala-VERSION-doc.
Compiler unterschiedlicher Versionen können parallel installiert werden.
Außerdem steht ein PPA zur Verfügung, das die aktuellsten Compiler-Versionen und Core-Bibliotheken (libgee) bereithält [2].
Adresszeile zum Hinzufügen des PPAs:
ppa:vala-team/ppa
Zusätzliche Fremdquellen können das System gefährden.
Ein PPA unterstützt nicht zwangsläufig alle Ubuntu-Versionen. Weitere Informationen sind der PPA-Beschreibung des Eigentümers/Teams vala-team zu entnehmen.
Damit Pakete aus dem PPA genutzt werden können, müssen die Paketquellen neu eingelesen werden.
Die folgenden Beispiele können in einem Editor [3] erstellt werden.
Folgendes "Hello World"-Beispiel soll in Grundzügen zeigen, wie mit Vala das GObject-System benutzt wird:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | /* eine Klasse abgeleitet vom GObject */ public class BasicSample : Object { /* öffentliche Instanz-Methode */ public void run () { stdout.printf ("Hello World\n"); } /* Einstiegspunkt */ public static int main (string[] args) { // eine Instanz der Klasse wird einer // vom Typ abgeleiteten Variablen zugewiesen var sample = new BasicSample (); // Aufruf der run-Methode sample.run (); // Rückgabewert der main-Methode return 0; } } |
Das Kompilieren und Ausprobieren erfolgt im Terminal [4] mittels:
valac helloworld.vala ./helloworld
Um an den C-Quelltext und die Header-Datei zu gelangen, übersetzt man mit dem zusätzlichen Parameter -C
, also:
valac -C helloworld.vala
Der C-Code findet sich nun in der Datei helloworld.c, die z.B. mit gcc kompiliert werden kann:
gcc -Wall `pkg-config --cflags glib-2.0` helloworld.c -o helloworld `pkg-config --libs glib-2.0 gobject-2.0`
Mit der Umgebungsvariable CC
kann man direkt den C-Compiler angeben, den valac nutzen soll, z.B. für Clang:
CC=clang valac helloworld.vala
Ein simples "Hello World"-Programm kann auch mit dem Einstiegspunkt (main-Funktion) direkt im globalen Scope erstellt werden:
1 2 3 | void main () { stdout.printf ("Hello World\n"); } |
Das Kompilieren erfolgt wie beim GObject-Style.
Vala Toys for gEdit - Sammlung von Vala-bezogenen Plugins für gedit
Anjuta - Entwicklungsumgebung
Geany - leichtgewichtige Entwicklungsumgebung
MonoDevelop - Entwicklungsumgebung
Valama - Entwicklungsumgebung
Die meisten Editoren bieten Syntaxunterstützung.
freiesMagazin 2011-01 - die Januar-Ausgabe 2011 enthält u.a. einen Artikel über das Programmieren mit Vala
Diese Revision wurde am 5. November 2016 12:41 von Vej erstellt.