ubuntuusers.de

Du betrachtest eine alte Revision dieser Wikiseite.

Vala

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:

Dieser Artikel ist mit keiner aktuell unterstützten Ubuntu-Version getestet! Bitte teste diesen Artikel für eine Ubuntu-Version, welche aktuell unterstützt wird. Dazu sind die Hinweise zum Testen von Artikeln zu beachten.

Wiki/Icons/develop.png 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).

Installation

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.

Paketquellen

Der Vala-Compiler kann über die Paketverwaltung installiert werden [1]:

  • valac

Befehl zum Installieren der Pakete:

sudo apt-get install valac 

Oder mit apturl installieren, Link: apt://valac

Hinweis:

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.

PPA

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

Hinweis!

Zusätzliche Fremdquellen können das System gefährden.


Ein PPA unterstützt nicht zwangsläufig alle Ubuntu-Versionen. Weitere Informationen sind der Wiki/Vorlagen/PPA/ppa.png PPA-Beschreibung des Eigentümers/Teams vala-team zu entnehmen.

Beispiele

Die folgenden Beispiele können in einem Editor [3] erstellt werden.

Hello World

GObject-Style

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` 

Experten-Info:

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 

Klassisch

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.

Hilfsmittel

  • Die meisten Editoren bieten Syntaxunterstützung.

Intern

Extern

Diese Revision wurde am 26. Juli 2018 17:45 von noisefloor erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen: Programmierung, Vala