Kotlin für Java Web-Entwickler

Ende-zu-Ende Entwicklung ohne Technologiebruch, Übertragung von Objekten zwischen Backend und Browser-Anwendung, Ausgleich der Unterschiede zwischen Browsern, starke Typisierung, Nutzung des gleichen Codes in UI, Backend oder Android Apps? Ist es möglich, dass eine Programmiersprache all dies leisten kann? Ja, das ist es. Und dies sind nur einige Eigenschaften, die Kotlin bietet. Lass uns losgehen.

Kotlin ist eine statisch typisierte Open-Source-Programmiersprache, die Byte Code generiert, welcher auf der Java Virtual Machine ausgeführt werden kann. Sie wurde von JetBrains entwickelt. Ihr Name stammt von der Insel Kotlin, die sich in der Nähe von St. Petersburg, Russland, befindet.

Obwohl die Syntax der Sprache nicht mit Java kompatibel ist, kann sie mit Java-Code interagieren. Mit anderen Worten: in Kotlin geschriebener Code kann problemlos aus Java Code heraus aufgerufen werden und umgekehrt.

Das Web hat sich in den letzten Jahren stark weiterentwickelt. Browser sind heute stärker standardisiert, es gibt TypeScript, JavaScript im Backend mit Node.js, Web Components, GWT (dessen Weiterentwicklung in den letzten Jahren allerdings immer mehr stagnierte) und viele andere Frameworks. Viele Entwicklungen im Web lösen aber bestimmte Probleme und Wünsche nicht oder nur unzureichend. Dazu gehört zum Beispiel die Möglichkeit, bekanntes Tooling aus der Java-Welt benutzen zu können (Maven/Gradle oder IDEs), das DRY-Prinzip (Don’t Repeat Yourself) im gesamten Anwendungsstack umsetzen zu können, Bibliotheken übergreifend nutzen zu können (mitgelieferte Klassenbibliotheken oder eigener Code), client-seitig von modernen Web-Standards Gebrauch machen zu können oder server-seitig auf das Java-Ökosystem zurückgreifen zu können (Spring Boot, JPA). All dies kann mit Kotlin erreicht werden.

Lass uns Kotlins Eigenschaften im Detail analysieren und sehen, warum die Sprache so großartig ist.

Warum Kotlin?

  • Kotlin kompiliert zu JVM-Byte Code oder nativem Code (z. B. JavaScript oder Web Assembly). Dies ist von großem Interesse für Leute, die heute schon mit Java arbeiten, und kann auch für alle Programmierer ansprechend sein, die eine “garbage-collected runtime” verwenden, einschließlich der Leute, die derzeit Go, Python, Ruby oder JavaScript verwenden.
  • Kotlin löst viele Probleme, mit denen Entwickler heute konfrontiert sind. Beispielsweise hilft einem Kotlins Typsystem, NullPointerExceptions zu vermeiden.
  • Der Umstieg auf Kotlin ist kostengünstig! Es ist Open Source, aber das ist es nicht, was ich hier meine. Was ich meine, ist dass es ein qualitativ hochwertiges Java-zu-Kotlin-Konverter-Tool gibt und dass der Schwerpunkt auf der Java-Binärkompatibilität liegt. Man kann ein bestehendes Java-Projekt Datei für Datei konvertieren, und alles lässt sich immer noch kompilieren, selbst bei komplexen Programmen, die Millionen von Codezeilen umfassen. Dennoch sollte nicht verschwiegen werden, dass auf diese Weise konvertierter Code keinen vollständig idiomatischen Kotlin Code darstellt und er noch etwas nachbearbeitet werden muss.
  • Kotlin-Programme können alle vorhandenen Java-Frameworks und -Bibliotheken verwenden, sogar fortgeschrittene Frameworks, die z.B. auf Annotation Processing aufbauen. Sie lassen sich mit Maven, Gradle und anderen Build-Systemen einfach bauen. Das Hinzufügen des data-Schlüsselwortes zu einer Klasse (Data Classes) löst die automatische Erzeugung von Boilerplate Code wie equals, hashCode, toString, einer Kopiermethode und Methoden für die Unterstützung von Destrukturierung aus. Auf diese Weise erhält man bequeme unveränderliche Klassen ohne die Notwendigkeit von Buildern.
  • Die Syntax ist schlank und intuitiv. Kotlin sieht Scala sehr ähnlich, ist aber einfacher. Die Sprache hält ein gutes Gleichgewicht zwischen Kürze und Lesbarkeit.
  • Sie erzwingt keinen Laufzeit-Overhead. Die Standardbibliothek ist klein und knapp: sie besteht hauptsächlich aus zielgerichteten Erweiterungen der Java-Standardbibliothek. Die starke Verwendung von Inline-Kompilierung bedeutet, dass funktionale Konstrukte wie Pipelines von Map/Filter/Reduce  ähnlich wie eine imperative Version desselben Codes kompiliert werden.
  • Mit Kotlin kann man alle produktivitätssteigernden Tools weiterhin verwenden. Wenn man IntelliJ verwendet, ist die IDE-Unterstützung völlig problemlos: Code kann refaktorisiert, durchsucht, navigiert und automatisch vervollständigt werden, als ob der Kotlin-Code Java wäre und umgekehrt. Es gibt volle Unterstützung für Debugging, Unit-Testing, Profiling und so weiter.
  • Skalierbarkeit: Kotlins Unterstützung für Koroutinen hilft bei der Erstellung serverseitiger Anwendungen, die auf eine große Anzahl von Clients mit einfachen Hardware-Anforderungen skalierbar sind.
  • Kompakt: Kotlin basiert auf der JVM und unterstützt funktionale Sprachkonstrukte. Mit ihr kann viel Boilerplate Code vermieden werden, wie er in anderen Programmiersprachen geschrieben werden muss.
  • Exceptions sind in Kotlin generell unchecked.
  • Schlanke Syntax: Typinferenz funktioniert überall, One-Liner-Funktionen nehmen eine Zeile ein, einfache Structs/JavaBeans können auch in einer Zeile deklariert werden. Für Properties werden intern getFoo/setFoo-Methoden für die Java-Interop erzeugt. Funktionsdeklarationen können außerhalb von Klassen und sogar innerhalb von anderen Funktionen stehen.
  • Wenn man den ganzen Tag damit verbringt, an großen Java-Codebasen zu arbeiten, kann man sich überlegen, Kotlin benutzen, denn:
    • Es hat starke kommerzielle Unterstützung von einer etablierten Firma. JetBrains engagiert sich für das Projekt, hat ein großes und hochkompetentes Team, das daran arbeitet, hat ein stabiles Geschäftsmodell und nutzt die Sprache auch intensiv für die eigenen Produkte. Es ist unwahrscheinlich, dass Kotlin in absehbarer Zeit aufgegeben wird.          
    • Die Übernahme von Kotlin ist risikoarm: Es kann in einem kleinen Teil der Code-Basis von einem oder zwei enthusiastischen Teammitgliedern getestet werden, ohne den Rest des Projekts zu stören: Kotlin-Klassen können über eine reguläre Java-API aus Java-Code heraus verwendet werden.
    • Da sich Kotlin auf eine lesbare Syntax konzentriert, sind Code-Reviews kein Problem: sie können auch von Teammitgliedern durchgeführt werden, die mit der Sprache noch nicht so sehr vertraut sind.

Mit Kotlin wird Entwicklern ein universelles Werkzeug an die Hand gegeben, das man für alle Arten der Entwicklung einsetzen kann. Es ist auch erwähnenswert, dass sich Kotlin noch immer in einer intensiven Entwicklungsphase befindet, sodass wir eine stetige Verbesserung erwarten können.

WASM

Mit dem Aufkommen von WebAssembly (WASM) wurde der Punkt überwunden, dass JavaScript die einzige Programmiersprache ist, die von Web-Browsern unterstützt wird. Dies hat die Türen für andere Sprachen geöffnet, um den Web-Browser anzusprechen. Zum ersten Mal in der Geschichte der Webentwicklung haben alle großen Web-Browser-Hersteller beschlossen, durch die Implementierung von WASM auch andere Sprachen als JavaScript im Browser laufen zu lassen. Alle großen Web-Browser (einschließlich der mobilen) unterstützen bereits WASM.

Kotlin unterstützt WASM durch seinen Kotlin/Native-Compiler. Der Kotlin/Native-Compiler basiert auf LLVM und LLVM unterstützt WebAssembly, deshalb können wir WASM-Dateien aus Kotlin-Quellcode erhalten.

Schlussfolgerung

Wie auf der offiziellen Seite steht, besteht das Ziel von Kotlin nicht darin, einzigartig zu sein, sondern Inspiration und Best Practices aus Jahrzehnten der Sprachentwicklung zu schöpfen. Es kann mit jeder Java-IDE oder von der Kommandozeile aus verwendet werden, aber ich persönlich bevorzuge und empfehle die Verwendung mit IntelliJ. Es wird aktiv vom JetBrains-Team gepflegt und aktualisiert. Und macht euch keine Sorgen über den Kauf der kostenpflichtigen Version von IntelliJ – wenn ihr gerade erst mit Kotlin angefangen habt, wird die Community-Version von IntelliJ alle eure Bedürfnisse erfüllen. Die drei wichtigsten Aspekte von Kotlin, die ich hervorheben möchte, sind: prägnant (es reduziert den Boilerplate-Code stark), sicher (u.a ist es so gebaut, dass NullPointerExceptions vermieden werden) und interoperabel (man kann die vorhandenen Bibliotheken für die JVM, Android oder des Browsers nutzen).

Als Teil einer Blog-Serie schauen wir uns verschiedene Themen an, um zu sehen, was Kotlin alles bietet. Das nächste Thema behandelt Kotlin Multiplatform-Projekte für die Webentwicklung.

Views All Time
541
Views Today
1
Short URL for this post: https://blog.oio.de/ziMy4
This entry was posted in Other languages for the Java VM and tagged , , . Bookmark the permalink.

2 Responses to Kotlin für Java Web-Entwickler

  1. Pingback: Spring Boot mit Kotlin | techscouting through the java news

  2. Pingback: Web UIs mit Kotlin | techscouting through the java news

Leave a Reply

Your email address will not be published. Required fields are marked *