Suchen

Programmiersprachen für Cloud-native Anwendungen Golang und Kotlin im Vergleich

Autor / Redakteur: Filipe Martins und Anna Kobylinska / Stephan Augsten

Die beiden Cloud-nativen Sprachen Go und Kotlin bringen ein ganzes Spektrum innovativer Features speziell für Microservices mit. Sie locken gegenüber althergebrachten Alternativen mit dem Versprechen, verteilte Anwendungsausführung auf ein neues Niveau leichtgewichtiger Elastizität zu heben. Entwickler von Cloud-Anwendungen haben jetzt wieder die Qual der Wahl.

Firmen zum Thema

Wer macht im Cloud-nativen Umfeld das Rennen: Go oder Kotlin?
Wer macht im Cloud-nativen Umfeld das Rennen: Go oder Kotlin?
(Bild: dimitrisvetsikas1969 / Pixabay )

Das Aufkommen Cloud-nativer Microservices läutet eine neue Ära der Softwareentwicklung ein. Für monolithische Anwendungen, die weder skalieren können noch selbstheilende Eigenschaften aufweisen, hat scheinbar das letzte Stündlein geschlagen.

Im Tiobe Programming Community Index ist die Stagnation der C- und Java-Sprachfamilie nicht zu übersehen. Google lanciert gleich zwei würdige Nachfolger: Go und Kotlin.
Im Tiobe Programming Community Index ist die Stagnation der C- und Java-Sprachfamilie nicht zu übersehen. Google lanciert gleich zwei würdige Nachfolger: Go und Kotlin.
(Bild: TIOBE)

Um von der Skalierbarkeit und Kosteneffizienz von Cloud-Technologien zu profitieren, müssen Unternehmen ihre bestehenden monolithischen Anwendungen „disaggregieren“ und auch neue Entwicklungsprojekte als leichtgewichtige Microservice-Architekturen umsetzen. Das ist oft ein langer und schwieriger Prozess.

Auf in die Cloud: selbstheilende Microservices

Der Erfolg steht und fällt mit ganz grundlegenden Entscheidungen wie nicht zuletzt die Wahl der Cloud-Sprache(n). Cloud-native Anwendungen auf der Basis selbstheilender Microservice-Architekturen sind klar auf dem Vormarsch. An die verwendete Entwicklungssprache werden nun ganz andere Anforderungen gestellt.

Die Eigenschaften, die eine Programmiersprache aufweisen muss, um Microservices effizient zu implementieren, lassen sich nicht nachträglich nachrüsten; sie müssen vielmehr von Grund auf in die Sprache „hineinkonzipiert“ sein. Dazu zählen unter anderem Fähigkeiten zu massiver Automatisierung, kontinuierlicher Integration, zur Wahrung opaker Implementierungsdetails.

Leichte Beobachtbarkeit („observability“) und Dezentralisierbarkeit sowie die Fähigkeit zur eigenständigen Bereitstellung (also anders als VM-basierte Sprachen wie Clojure, Erlang oder Elixir unabhängig vom Systemunterbau) stehen bei Entwicklern ebenfalls hoch im Kurs. Das Interesse an neuartigen innovativen Sprachen wächst. Für Kotlin und Golang (kurz: Go) ist Hochkonjunktur angesagt.

Hoffnungsträger: Im Ranking der „lernwürdigsten“ Entwicklungssprachen kommen Go und Kotlin beide unter den top drei durch die Ziellinie.
Hoffnungsträger: Im Ranking der „lernwürdigsten“ Entwicklungssprachen kommen Go und Kotlin beide unter den top drei durch die Ziellinie.
(Bild: 2020 HackerRank Developers Skills Report)

Der Paradigmenwechsel hin zu Cloud-nativen Microservices reflektiert sich auch bereits in der Popularität führender Sprachen und in einer Verschiebung von Interessensschwerpunkten der betroffenen Entwickler. Im Ranking der „lernwürdigsten“ Entwicklungssprachen kommen Go und Kotlin beide unter den Top drei durch die Ziellinie.

Zu diesem Ergebnis kam HackerRank nach einer Umfrage unter 116.648 Entwicklern im März 2020. Googles bemerkenswerter Hattrick: Go hat zum dritten Mal in Folge den ersten Platz inne. Das anhaltende Interesse reflektiert weitaus mehr als bloßes Wunschdenken, denn die Popularität der beiden Sprachen wächst von Jahr zu Jahr.

Die verlockende Simplizität von Go (und ihre Schattenseite)

Go bietet eine einfache und logische Syntax zur Entwicklung von modularen Anwendungen, die in Microservice-Architekturen zur Höchstform auflaufen können. Die Sprache verbindet ihre hohe Arbeitsgeschwindigkeit mit leistungsstarker Unterstützung für Parallelität. Darüber hinaus bietet Go eine performante Standardbibliothek zum Erstellen von Webdiensten.

Durch die Verwendung eines Paketsystems kommen Entwickler schneller durch die Ziellinie. Diese Einfachheit senkt die Gesamtkosten und ermöglicht vielen Unternehmen die Entwicklung von Microservices. Alles in einem: paradiesische Zustände also? Leider gibt es bei Go einige Fallstricke. Die Sprache ist noch relativ neu und entwickelt sich (anders als Kotlin) rasant weiter.

Viele Entwickler bemängeln daran die noch unzureichende Laufzeitsicherheit. Die Laufzeitsicherheit wird hauptsächlich zum Zeitpunkt der Kompilierung überprüft und nur am Rande zur Laufzeit. Go bringt Entwicklern also vor allem einen Zeitvorsprung im Hinblick auf die verkürzte Time-to-Market resultierender Anwendungen, jedoch nicht im Hinblick auf die Sicherheit. Auch das Fehlen einer manuellen Speicherverwaltung kann zu Problemen führen.

(ID:46564986)