Flexibel, mächtig & wunderschön

Ballerina – die Programmiersprache für Integrationsszenarien aller Art
Kommentare

Die Programmiersprache Ballerina macht ihrem Namen alle Ehre. Sie ist flexibel, mächtig und wunderschön – sagen jedenfalls die Sprachdesigner. Entwickelt wurde die Sprache mit einem Fokus auf Integrationsszenarien sowie Nebenläufigkeit und bietet neben einer textuellen Syntax auch eine grafische. Wir haben uns die Balletttänzerin unter den Programmiersprachen einmal genauer angesehen.

Es gibt Situationen, in denen man sich fühlt, als wäre man gerade vom Blitz getroffen worden. So oder so ähnlich muss es sich für Sanjiva Weerawarana, CEO bei WSO2, angefühlt haben, als er sich die Eröffnungszeremonie der Olympischen Sommerspiele in London angesehen hat. Viele Tanzeinlagen und Showelemente liefen wunderbar koordiniert und gleichzeitig ab. Von diesem Moment an beschäftigte ihn die folgende Frage: Wie koordiniert man komplizierte und parallel ablaufende Interaktionen, ohne das Modell eines XML-Datenstroms zu nutzen, der die Industrie lange Zeit prägte?

Ballerina: Syntax & Sprachdesign

Um komplizierte programmatische Abläufe darzustellen, verwendete das Team, das später die Sprache Ballerina designen würde, schon zuvor oft Sequenzdiagramme. Dann allerdings wurde in den meisten Fällen, so Weerawarana, wieder einfach normaler Code, zum Beispiel in Java, geschrieben. Man stellte sich also die Aufgabe, dieses Konzept in eine Programmiersprache zu pressen. Damit war die Idee für Ballerina geboren.

Was auf eine Ballerina zutrifft, trifft gewissermaßen auch auf die gleichnamige Programmiersprache zu: Ballerina ist flexibel. Natürlich kann man Anwendungen ganz altmodisch mit Code schreiben. Es gibt Plug-ins für IntelliJ IDEA, Atom, Vim und weitere Entwicklungsumgebungen. Da Ballerina Open Source ist, steht es zudem jedem frei, neue Plug-ins zu erstellen, dabei hilft auch das API der Programmiersprache.

Die Syntax der Sprache ist von Java und Go beeinflusst und die Designer ließen ganz bewusst Best Practices aus den Vorbildern in die Sprachsyntax einfließen. Grundsätzlich versprechen die Entwickler eine leichtgewichtige und sehr schnelle Syntax. Die Ähnlichkeit zu Java und Go wird besonders deutlich, wenn man sich ein einfaches Hello-World-Programm ansieht:

import ballerina.lang.system;

function main(string[] args) {
    system:println("Hello, World!" );
}

Es gibt allerdings auch die Möglichkeit, den Ballerina Composer zu nutzen. In diesem ist es möglich, Sequenzdiagramme aus einzelnen Elementen zu erstellen. Per Drag & Drop werden sämtliche Elemente und Komponenten, die mit diesen interagieren müssen, auf ein Raster verschoben, während der Composer im Hintergrund gleichzeitig den entsprechenden Quelltext schreibt. Im Composer können Nutzer dabei jederzeit zwischen der grafischen und der Quelltext-Ansicht wechseln, sodass eventuelle Code-Verbesserungen eingepflegt werden können.

Der Ballerina Composer / Quelle: Ballerina Homepage

Die Einsatzgebiete von Ballerina

Ballerina ist stark typisiert und da die Sprache als General Purpose Language (GPL) designt wurde, kann mit ihr folglich prinzipiell jedwede Art von Anwendung gebaut werden. Natürlich besitzt sie auch ein Modell für die Nebenläufigkeit, das auf dem oben erwähnten Konzept der Sequenzdiagramme basiert. Die Nebenläufigkeit (Concurrency) war dabei offenkundig für die Namensgebung mitverantwortlich.

The term „parallel processing“ scares even experienced programmers. But with Ballerina, you can do parallel processing as you do any other action. The main concept of term „Ballerina“ stems from the concept of a ballet dance where so many different ballet dancers synchronized with each other during the dance act by sending messages between each other. The technical term for this process is called „Choreography“. Ballerina (language) brings this concept into a more programmer friendly concept.

Chanaka Fernando, Senior Technical Lead bei WSO2

Nutzern soll mit Ballerina vor allem die Entwicklung von Anwendungen erleichtert werden, die sich in Datenquellen, Services und über das Netzwerk verbundene APIs integrieren lassen. Dabei ist es egal, ob es sich um ein einfaches Hello-World-Programm oder Content-basierte Routing-Szenarios handelt. Da die Sprache allerdings vor allem für Integrationsszenarien erstellt wurde, empfehlen die Designer, sie auch dafür zu nutzen – Anwendungsfälle, bei denen es hauptsächlich nicht um die Integration in Services usw. geht, werden nicht empfohlen.

Die Sprache besitzt die native Unterstützung für REST, Swagger, JSON und XML. Außerdem hat Ballerina auch Konnektoren für beliebte Services wie Twitter oder Facebook an Bord. Ein Usecase wäre also zum Beispiel eine Anwendung, die die Top-Tweets zu einem bestimmten Thema sammelt und sie anschließend automatisch in ein Google Spreadsheet einfügt.

Tools

Ballerina besteht nicht nur aus der Runtime und der Sprache selbst, sondern auch aus einem umfangreichen Tooling, etwa die beschriebenen Editor-Plug-ins und Konnektoren. Natürlich gehört dazu auch der oben bereits erwähnte Composer, der das zentrale Tool für die Programmierung darstellt. Neben der Quelltext- und der Design-Ansicht wird nativ auch die Swagger-Ansicht angeboten, der Wechsel zwischen diesen dreien ist zu jeder Zeit möglich. Programme können aus dem Editor heraus auch direkt gestartet und debuggt werden.

Das Test-Framework für Ballerina-Programme nennt sich passenderweise Testerina. Mit dem Framework können Nutzer Unit-Tests schreiben, um den Code auf Fehler zu prüfen. Auch sogenanntes Mocking kann mithilfe von Testerina durchgeführt werden. Wie man Ballerina-Quelltext mit Testerina testet, hat Suhan Dharmasuriya, Softwareentwickler bei WSO2 in einem Medium-Post ausführlich dargelegt.

Weitere Informationen zu Ballerina gibt es auf der Homepage der Sprache, die auch eine umfangreiche Dokumentation enthält. In seinem Post auf Medium führt Chanaka Fernando, Senior Technical Lead bei WSO2, die Unterschiede von Ballerina zu anderen Sprachen aus. Und natürlich ist die Programmiersprache auch auf GitHub zu finden.

Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -