Für uns waren die News, dass Kotlin Multiplattform nun stabil ist und genutzt werden kann, eine super Nachricht. Wieso? Weil wir die Entwicklung des Frameworks in den letzten Jahren verfolgt haben und unsere Entwickler:innen sich mit der Programmiersprache Kotlin bereits bestens auskennen.
In diesem Blogartikel werfen wir einen detaillierten Blick auf Kotlin Multiplattform und erklären Dir, was es mit der Technologie auf sich hat, welche Vor- und Nachteile es gibt und wann sich ihr Einsatz besonders lohnt.
Was ist Kotlin Multiplattform?
Kotlin Multiplattform (KMP) ist eine Technologie der Firma JetBrains, die es Entwickler:innen ermöglicht, eine gemeinsame Codebasis (Kotlin) für unterschiedliche Plattformen zu nutzen. Damit entwickeln wir Apps für Android, iOS, Web und Desktop (Windows, macOS, Linux). Das bedeutet, dass deine App auf einer Vielzahl von Geräten und Betriebssystemen laufen kann, was die Reichweite und Verfügbarkeit deiner Anwendung deutlich erhöht.
Die Grafik zeigt, dass KMP beide Seiten eines Software-Projekts abdecken kann: Das Backend mit Server und die Frontends, also mehrere Clients die Daten vom Server empfangen und anzeigen, z.B. eine Android-App und eine iOS-App.
"Client Multiplatform" bezieht sich hier auf eine geteilte Codebasis, die sich mehrere Frontend-Clients eines Projekts teilen.
"Common Multiplatform" ist wiederum eine Codebasis, die sich ein Server mit den Frontend-Clients teilt. Also beispielsweise geteilte Definitionen für Datenmodelle (User, TeaMachine , etc.), die sowohl im Code des Backend als auch in den Clients verwendet werden.
Im Gegensatz zu anderen Multiplattform Software Development Kits (SDK), wie z.B. Flutter, können Entwickler:innen den Großteil ihres Codes auf Kotlin Multiplattform teilen und native, plattformspezifische Anpassungen dort vornehmen, wo es nötig ist. So bauen wir beispielsweise das User Interface für Android und iOS nativ und entwickeln die Software-Architektur plattformübergreifend. Die Technologie lässt sich dadurch auch in bereits laufenden Projekten nachträglich gut einsetzen.
Kotlin Multiplattform soll außerdem zukünftig die Möglichkeit bieten, mit Compose Multiplatform das gesamte User Interface plattformübergreifend zu entwickeln. Zur Zeit befindet sich Compose Multiplatform für iOS noch in der Alpha Phase und für Web in Experimental Phase.
Vorteile von Kotlin Multiplattform
📚Einarbeitung
Android Entwickler:innen, die bereits mit der Programmiersprache Koltin vertraut sind, können sich schnell in KMP einarbeiten.
⏱️ Schnellere Entwicklung
Mit KMP teilen Entwickler:innen bis zu 100% des Codes (inkl. Compose Multiplatform) zwischen verschiedenen Plattformen, was die Entwicklungszeit verkürzt und die Code-Wartung vereinfacht.
♻ Code reusability und Code sharing
Wir können einen Code für mehrere Plattformen verwenden. Dies erhöht nicht nur die Reichweite der Anwendung, sondern verhindert das Schreiben von redundantem Code und das Aufkommen von Bugs.
💰Entwicklungskosten sparen
Durch die Reduzierung redundanter Entwicklungsschritte und die Wiederverwendung von Code wird die Effizienz gesteigert, da wir weniger Entwickler:innen für Umsetzung auf einzelnen Plattformen benötigen.
🐙Erweiterbarkeit
Mit KMP haben wir die volle Kontrolle, welche Logik wir teilen und welche Komponenten wir nativ entwickeln möchten. Die Technologie erleichtert es, neue Funktionen hinzuzufügen oder bestehende zu aktualisieren, da Änderungen an einem einzigen Codebase vorgenommen werden können.
🧑💻Der einfache Schritt zurück
Im Gegensatz zu Flutter oder React Native haben wir mit Kotlin Multiplattform die Möglichkeit den Schritt zurück in die Native Entwicklung zu machen, ohne dabei den kompletten Code unbrauchbar zu machen. Der Kotlin Code kann einfach für Android benutzt werden. Würden wir diesen Schritt mit Flutter oder React Native machen, müssten wir die App für Android und iOS komplett neu schreiben.
Nachteile von Kotlin Multiplattform
📓 Limitierte Libraries
Da die Technologie noch ziemlich neu ist, ist die Verfügbarkeit von Libraries im Gegensatz zu Java, Kotlin oder Swift noch ziemlich limitiert. Anfänglich kann dies zu einer längeren Entwicklungszeit führen, da Entwickler:innen eigene Lösungen entwickeln müssen, die sonst mit Libraries gelöst werden könnten.
🪲 iOS Debugging und Testing
Aktuell ist der Debugging Support für iOS noch sehr rudimentär und erkennt in vielen Fällen nur generische bzw. unklare Error Logs.
🍎 Interoperabilität für iOS
Zurzeit bietet KMP nur eine direkte Interoperabilität mit dem Swift-Vorgänger Objective-C. Das bedeutet, KMP interagiert mit iOS über Objective-C und nicht über Swift, was die Nutzung von reinen Swift Abhängigkeiten momentan nicht direkt möglich macht.
Neutrale Aspekte
💬 Kommunikation
Die Arbeit mit der neuen Technologie benötigt einen höheren Kommunikationsaufwand zwischen den Teams der verschiedenen Plattformen. Dies erhöht zwar die Kommunikationskosten, bringt jedoch den Vorteil, dass Teams enger zusammenarbeiten und im Nachhinein weniger Unklarheiten und Diskrepanzen auftreten.
Wann lohnt es sich, Kotlin Multiplattform einzusetzen?
Die Entscheidung, ob sich der Einsatz von KMP lohnt, hängt von verschiedenen Faktoren ab – darunter das spezifische Projekt, die Komplexität und die Kapazität des Teams.
Um das volle Potential von Kotlin Multiplattform auszuschöpfen, lohnt es sich, das Framework direkt in ein neues Projekt zu integrieren. Die Architektur kann von Anfang an unter Berücksichtigung der Technologie geplant werden, und die neuesten Features sowie Best Practices können ohne Einschränkungen durch Legacy-Code angewendet werden.
Die Integration in bestehende Projekte muss sorgfältig von unseren Teams geplant werden, denn es müssen Legacy-Code, Abhängigkeiten und Architekturentscheidungen berücksichtigt werden. Im besten Fall sollte die Migration inkrementell erfolgen, wobei einzelne Bestandteile wie Klassen oder Funktionen schrittweise migriert und parallel zum restlichen nativen Code genutzt werden können. So wird das Projekt nach und nach migriert, ohne dass der Betrieb beeinträchtigt wird.
Insgesamt bietet die Nutzung von Kotlin Multiplattform für Dein Projekt viele Vorteile, einschließlich plattformübergreifender Kompatibilität, Konsistenz im Codebase, Effizienz und Kostenersparnis sowie Flexibilität für zukünftige Erweiterungen. Am Ende des Tages ist es wichtig, individuell zu prüfen, ob der Übergang sinnvoll ist. Dies gilt insbesondere für Projekte, die bereits nativ laufen, da die Migration zur neuen Technologie zeitaufwendig ist und gründlich durchdacht werden muss.
Wir stehen Dir gerne beratend zur Seite und finden die optimale Lösung für die Entwicklung Deiner App. Melde Dich gerne direkt per Mail bei uns - wir freuen uns auf Deine Nachricht!
Über die appmotion GmbH
Digitale Lösungen für die beste Customer Experience: Mit einem starken Fokus auf smarte Kundenerlebnisse und einem hohen Designanspruch unterstützt appmotion moderne Unternehmen bei der Entwicklung und Optimierung von langfristigen Kundenbeziehungen durch einzigartige digitale Kundenerfahrungen. Das Remote-first Unternehmen versteht sich als ganzheitlicher strategischer Berater, Umsetzer und Integrator bei digitalen Transformationsprozessen. Das vielfach ausgezeichnete und zertifizierte Unternehmen ist seit 2022 Teil der internationalen MYTY Gruppe.