Ubuntu 10.04 „Lucid Lynx“
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, Pino und der Xfce Music Player Client.
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 mit dem GNU C Compiler in ausführbaren Maschinencode übersetzt wird.
Unter Ubuntu kann die Installation aus den Paketquellen oder einem Community-PPA erfolgen. Das Kompilieren des Vala-Compilers ist in einem eigenen Artikel Vala/Kompilieren beschrieben.
Der Vala-Compiler und die Dokumentation können über die Paketverwaltung installiert werden [1]:
valac
vala-doc
mit apturl
Paketliste zum Kopieren:
sudo apt-get install valac vala-doc
sudo aptitude install valac vala-doc
Außerdem steht ein Community-PPA zur Verfügung, das ggf. Pakete für ältere Ubuntu-Versionen 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 bietet die PPA-Beschreibung vom Benutzer/Team vala-team.
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ückgabe 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
Ein schlichtes "hello world"-Programm in Genie sieht wie folgt aus:
1 2 3 | [indent=2] init print "Hello World" |
Die erste Zeile gibt hier die verwendete Einrückung (zwei Leerzeichen) vor, da diese bei Genie Teil der Syntax ist. Lässt man diese Angabe weg, wird von Tabulatoren als Einrückung ausgegangen.
Das Kompilieren und Ausprobieren erfolgt analog zum Vala-Beispiel, wobei für die Quelltextdatei die Endung .gs verwendet werden muss.
Für einen auf GTK+ und WebKit basierenden Browser müssen folgende Abhängigkeiten installiert werden:
libgtk2.0-dev
libwebkit1.0-dev
mit apturl
Paketliste zum Kopieren:
sudo apt-get install libgtk2.0-dev libwebkit1.0-dev
sudo aptitude install libgtk2.0-dev libwebkit1.0-dev
Die Beispiele sind zu finden unter:
Das Genie-Beispiel wird in einer Datei mit der Endung .gs, das Vala-Beispiel in einer Datei mit Endung .vala gespeichert, beispielsweise meinbrowser.gs oder meinbrowser.vala.
Das Kompilieren erfolgt mittels:
valac --pkg gtk+-2.0 --pkg webkit-1.0 meinbrowser.gs # bzw. valac --pkg gtk+-2.0 --pkg webkit-1.0 meinbrowser.vala
Der Browser kann nach erfolgreichem Kompilieren mittels ./meinbrowser
gestartet werden.
code.valaide.org - Vala und Genie Beispiele
Writing multimedia applications with vala - Artikel von Jim Nelson im GNOME Journal
freiesMagazin 2011-01 - die Januar-Ausgabe 2011 enthält u.a. einen Artikel über das Programmieren mit Vala