Ein wichtiger Teil unseres Projekts ist die AirQuality-App, die wir unseren Kunden anbieten wollen. Da wir im Team bereits Erfahrungen bei der Entwicklung mobiler Applikationen mitbrachten, stürzten wir uns darauf.

Doch es gab mittlerweile neue Entwicklungen…

Wir hatten durch die Vorlesung „Mobile Applikationen“ Erfahrungen mit Java in Android. Allerdings war nun die Programmiersprache Kotlin, die ebenfalls wie Java nach einer Insel benannt wurde, seit Mai 2019 die von Google bevorzugte Sprache für die Android-App-Entwicklung. „Kotlin-first“ nannte Android das Projekt zur Umstellung von Java auf Kotlin (Android’s Kotlin-first approach). Also hieß es für uns, sich mit Kotlin vertraut zu machen.

Was ist eigentlich Kotlin?

Kotlin ist eine recht junge Programmiersprache, die vom russischen Unternehmen JetBrains entwickelt wurde. Sie ist eine typisierte High-Level-Programmiersprache und ähnelt Java, C++ und C. Wie auch bei diesen Programmiersprachen wird der Hauptcode einer in Kotlin programmierten Anwendung in die main Routine geschrieben.

Kotlin wird in Projekten eingesetzt, die früher mit Java realisiert wurden, wie zum Beispiel bei der Programmierung mobiler Anwendungen auf der Plattform Android. In diesem Zuge sind auch wir auf sie gestoßen. Gut ist, dass Kotlin mit allen heute bekannten Java-Libraries und Frameworks funktioniert und zum Glück mit Java kompatibel ist. Das bedeutet zum Beispiel, dass ein Code, der mit Kotlin erstellt wird, auch aus Java-Klassen heraus angesprochen werden kann. Andersherum können Java-Klassen auch in Kotlin genutzt werden. Vorhandene Java-Projekte können zudem problemlos – ohne funktionale Verluste – in Kotlin umgeschrieben oder meistens sogar automatisch konvertiert werden.

Auch spannend ist das ViewModel. Ein ViewModel enthält die Präsentationslogik und ist die Schnittstelle zwischen Model, die das Datenmodell repräsentiert, und View, welches das Layout ohne Logik beinhaltet. Das Wichtigste dabei ist, dass das ViewModel keine Informationen über die konkrete Implementierung enthält. Der Vorteil davon ist, dass das View bidirektional kommuniziert. Entsprechend reagiert die View auf Änderungen an Variablen, die aus dem ViewModel kommen, während das ViewModel im Gegenzug auch auf Änderungen aus der View reagiert.

Dem gegenüber steht das klassische MVC-Modell in Android mit Activities und Fragments als Controller. Es hat das Problem, dass diese unter anderem beim Rotieren des Bildschirms neu erzeugt werden. Dabei gehen alle im Controller gespeicherten Daten verloren, die nicht manuell einzeln persistiert sind. Wird eine Netzwerkanfrage getätigt, während Fragment oder Activity neu erzeugt werden, läuft deren Ergebnis ins Leere. Ein ViewModel ist dagegen vom Lebenszyklus von Activites und Fragments entkoppelt. Wenn diese neu erzeugt werden, verbindet sich die gleiche ViewModel-Instanz mit der neuen Activity beziehungsweise dem neuen Fragment, wobei alle Daten und Callbacks erhalten bleiben. Ein weiterer Vorteil ist die klare Trennung von Verarbeitungs- und Präsentationslogik, was zur einer verbesserten Testbarkeit und zu einem „saubereren“ Code führt.

Kotlin vs. Java

Vorteile von Kotlin:

  • Kotlin benötigt weniger Code-Zeilen: Es hat eine einfache Syntax. Je nach Fall kann die Codemenge beim konvertieren von Java zu Kotlin um 40% reduziert werden, wobei die Funktionalität gleich ist.
  • NullException-Prüfung ist überflüssig: Kotlin lässt im Gegensatz zu Java nicht zu, dass eine NullPointerException beim Kompilieren und Ausführen von Code ausgelöst wird.

Nachteile von Kotlin:

  • Java hat mehr Experten: Kotlin ist recht neu (existiert seit 2011), deshalb gibt es noch nicht so viele Entwickler und Experten. Die erste Java-Version kam im Gegenzug bereits 1992 auf dem Markt und hat sich eine große Community aufgebaut.
  • Kürzer bedeutet nicht gleich Übersichtlicher: Java ist ausführlicher und baut sich Schritt für Schritt auf, ohne etwas wegzulassen oder zu verkürzen, dadurch wird die Nachvollziehbarkeit verbessert.
Der Weg von Java zu Kotlin
Markiert in:         

Schreibe einen Kommentar