Programmiersprachen für Cloud-native Anwendungen

Golang und Kotlin im Vergleich

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

Mit Kotlin zur Java-Interoperabilität

Bei Kotlin handelt es sich um eine statisch typisierte JVM-Sprache aus dem Hause JetBrains, die mit dem Segen von Google als eine Alternative oder Ergänzung zu Oracles Java Einsatz findet. Dank der vollständigen Interoperabilität mit Java können Entwickler je nach Bedarf abwechselnd auf Java- und auf Kotlin-Frameworks zurückgreifen und beide Sprachen in ihren Projekten ineinander verweben.

Kotlin-Code lässt sich problemlos in bestehende Java-Projekte einbinden. Dank der Unterstützung des objektorientierten wie auch des funktionalen Programmierparadigmas kann Kotlin das Beste aus beiden Welten unter einen Hut bringen. Kotlin unterstützt sowohl die LLVM-Infrastruktur als auch GraalVM. Die Sprache lässt sich u.a. zu JavaScript kompilieren oder auch in Maschinencode übersetzen.

Eine neue Programmiersprache einfach so aus dem Boden zu stampfen, ist keine leichte Aufgabe. Auch JetBrains hat es ja letztendlich nur mit Googles Rückendeckung geschafft. Mit IntelliJ hat die kleine Entwicklungsschmiede eine leistungsstarke IDE-Plattform geschaffen, auf der Google sein Android Studio aufsetzt.

Java-Gewohnheiten als Kotlin-Stolperfallen

Wer in einer objektorientierten Sprache bereits bewandert ist, kann sich mit Kotlin-Code auf Anhieb auseinandersetzen und oft auch schnell damit anfreunden. Darin liegt aber auch gerade für Java-Entwickler ein kleines Problem: Wer Kotlin konzeptionell in ein klassisches Java-Korsett hineinzwängen wollte, hinterließe einen recht ungeschickten Eindruck.

Bei Kotlin gilt: zuerst gut informieren, dann etwas umdenken und erst dann coden. Kotlin erweitert das übliche Arsenal an Sprachfähigkeiten um eine Menge nützlicher Features, darunter:

  • vollständige Interoperabilität mit Java: Beide Sprachen lassen sich in einem gemeinsamen Projekt problemlos miteinander kombinieren; so sind Java-Frameworks in Kotlin nutzbar und umgekehrt,
  • null-Absicherung zum Schutz vor NullPointerExceptions (NPEs),
  • Funktionen höherer Ordnung und leistungsstarke Lambdas,
  • Koroutinen,
  • Typ-Aliasnamen,
  • Destrukturierung von Deklarationen,
  • Unterstützung durch JetBrains IntelliJ IDEA, Googles Android Studio, Eclipse, u.a.

Version 1.4 von Kotlin ist für das Jahr 2020 geplant; JetBrains bietet derzeit eine Vorschau mit der Bezeichnung 1.4-M1 zum Download an. Im Fokus stehen diesmal Leistungsoptimierungen für alle IDEs mit Unterstützung für Kotlin und die schrittweise Einführung des neuen Compilers. Große grundlegend neue Features für Kotlin selbst sind diesmal nicht geplant. Ein verbessertes Benutzererlebnis hat Vorrang vor weiteren Innovationen.

Die neue Compiler-Implementierung von JetBrains qualifiziert sich dennoch als ein Quantensprung.

Die Hebelwirkung des neuen Kotlin-Compilers

Der neue Kotlin-Compiler soll allem voran eine API für Compiler-Erweiterungen bereitstellen und damit ein Ökosystem rund um Kotlin schaffen. Er soll einen Performancesprung mit sich bringen und eine vereinheitlichte Basis für alle Plattformen bilden.

Andrey Breslav, Lead Language Designer von Kotlin bei JetBrains, ist für viele das Gesicht von Kotlin.
Andrey Breslav, Lead Language Designer von Kotlin bei JetBrains, ist für viele das Gesicht von Kotlin. (Bild: JetBrains)

Laut Andrey Breslav, dem Lead Language Designer von Kotlin bei JetBrains, sollen einige Teile der neuen Compiler-Implementierung bereits 2020 fertig werden und in Kotlin 1.4 das Licht der Welt erblicken. Die Umstellung wird demnach in vielen kleinen Schritten vollzogen, die sich über mehrere Jahre hinausstrecken werden.

Eine gemeinsame Back-End-Infrastruktur für alle Kompilierungsziele öffnet die Tür für Multiplattform-fähige Compiler-Erweiterungen. Entwickler können in diese Pipeline künftig ihre eigenen Erweiterungen einbinden und einige benutzerdefinierte Verarbeitungen und/oder Transformationen definieren, die dann automatisch für alle Kompilierungsziele funktionieren werden.

In Kotlin 1.4 stellt JetBrains noch keine öffentliche API für solche Erweiterungen bereit (die API wird später „stabilisiert“). Das Unternehmen arbeitet jedoch eng mit Partnern wie Jetpack Compose zusammen, die bereits an ersten Compiler-Plugins tüfteln. Man darf also gespannt sein, was die Zukunft so alles bringen könnte. Eine weitere relevante Neuerung ist das Kotlin-Library-Format zur plattformagnostischen Distribution von Code.

In der aktuellen ersten öffentlichen Vorschau von Kotlin 1.4 vom Ende März 2020 können Entwickler bereits einige der neuen Features auf die Probefahrt nehmen:

  • der neue leistungsstarke Typinferenzalgorithmus ist standardmäßig aktiviert;
  • Contracts lassen sich jetzt mit nicht vererbbaren (also finalen) Mitgliedsfunktionen nutzen, zum Beispiel, um die Smartcasts-Auswertung zu verbessern oder die Variableninitialisierungsanalyse bei Vorhandensein von Funktionen höherer Ordnung zu unterstützen;
  • der Kotlin/JVM-Compiler erzeugt jetzt Typanmerkungen im Bytecode für Java 8+-Ziele.
  • für Kotlin/JS gibt es ein neues Backend mit Verbesserungen der resultierenden Artefakte
  • die Standardbibliothek hat zahlreiche evolutionäre Verbesserungen erfahren.

Was also grundlegend neue innovative Features darstellt, ist offenbar Ermessenssache. Die Innovationskraft und die anhaltende Beliebtheit von Kotlin machen bereits länger von sich reden. Kotlin zog kürzlich sogar an Skala und Clojure vorbei und wurde im Herbst des vergangenen Jahres zur beliebtesten JVM-Sprache, bestätigt die neueste Umfrage von Snyk von 2020.

Fazit

Mit Go und Kotlin sind zwei neue Cloud-native Sprachen entstanden, die vor lauter innovativer Features nur so strotzen. Go/golang bietet eine einfache und logische Syntax zur Entwicklung von modularen Anwendungen, die in Microservice-Architekturen zur Höchstleistung auflaufen können. Kotlin trumpft mit Java-Interoperabilität und leistungsstarken Toolchains. Die Entwickler von Microservices haben jetzt wirklich die Qual der Wahl.

Inhalt des Artikels:

Kommentare werden geladen....

Kommentar zu diesem Artikel

Der Kommentar wird durch einen Redakteur geprüft und in Kürze freigeschaltet.

Anonym mitdiskutieren oder einloggen Anmelden

Avatar
Zur Wahrung unserer Interessen speichern wir zusätzlich zu den o.g. Informationen die IP-Adresse. Dies dient ausschließlich dem Zweck, dass Sie als Urheber des Kommentars identifiziert werden können. Rechtliche Grundlage ist die Wahrung berechtigter Interessen gem. Art 6 Abs 1 lit. f) DSGVO.
  1. Avatar
    Avatar
    Bearbeitet von am
    Bearbeitet von am
    1. Avatar
      Avatar
      Bearbeitet von am
      Bearbeitet von am

Kommentare werden geladen....

Kommentar melden

Melden Sie diesen Kommentar, wenn dieser nicht den Richtlinien entspricht.

Kommentar Freigeben

Der untenstehende Text wird an den Kommentator gesendet, falls dieser eine Email-hinterlegt hat.

Freigabe entfernen

Der untenstehende Text wird an den Kommentator gesendet, falls dieser eine Email-hinterlegt hat.

copyright

Dieser Beitrag ist urheberrechtlich geschützt. Sie wollen ihn für Ihre Zwecke verwenden? Kontaktieren Sie uns über: support.vogel.de/ (ID: 46564986 / Programmiersprachen)