Als je een mobiele app wil publiceren, dan wil je die waarschijnlijk in de App Store van Apple en in Google Play aanbieden. Maar moet je nu twee aparte apps bouwen of kan dat slimmer en sneller?
Wat zijn de mogelijkheden?
Apple en Google hebben voor hun mobiele platformen (respectievelijk iOS en Android) eigen ontwikkelomgevingen met ondersteuning van een beperkt aantal programmeertalen opgezet. Native iOS apps bouw je in Xcode bij voorkeur met de programmertaal Swift en native Android apps in Android Studio met de programmeertaal Kotlin. Als het aan deze tech-reuzen ligt dan moet je dus voor elk mobiel platform apart een app bouwen. Dat noemen we native app ontwikkeling.
Gelukkig zijn er ook veel initiatieven die het dubbele werk willen reduceren of zelfs willen voorkomen. Het ene initiatief is beter dan het andere en het ene initiatief past ook beter bij een bepaald type app dan het andere.
Xamarin is één van die initiatieven die wij zelf proactief hebben ingezet voor cross-platform app ontwikkeling. Andere populaire initiatieven zijn React Native, Apache Cordova / Adobe PhoneGap, Ionic Framework en Flutter.
En nu is er Kotlin Multiplatform en daar gaat ons ontwikkelhart 💚 harder van kloppen.
Wat is Kotlin Multiplatform?
Kotlin Multiplatform wordt gemaakt door JetBrains, de uitvinder van de moderne programmeertaal Kotlin en maker van kwalitatief hoogwaardige ontwikkelomgevingen. Een voorbeeld daarvan is IntelliJ. Google heeft er zelfs voor gekozen om Kotlin de standaard programmeertaal voor Android apps te maken en om Android Studio te baseren op IntelliJ.
Als ontwikkelaar ben je met Kotlin Multiplatform in staat om bijna alle (in theorie alle) componenten van een app te programmeren. De componenten die gemeenschappelijk zijn tussen iOS en Android programmeer je één keer. Deze componenten worden door Kotlin Multiplatform automatisch gebundeld in een programmabibliotheek per mobiel platform. Voorbeelden van gemeenschappelijke componenten zijn o.a. het datamodel, datacommunicatie en businesslogica. Voor de beste gebruikerservaring - zowel die van de eindgebruiker als die van de ontwikkelaar - is het aan te raden om componenten voor de presentatie (gebruikersinterface en -interactie) wel nog specifiek te bouwen met de native ontwikkelomgeving en programmeertaal voor het desbetreffende mobiele platform.
Bovenstaande resulteert in een Android app die volledig in Kotlin is gebouwd, dus praktisch hetzelfde resultaat als met reguliere native Android-ontwikkeling. De iOS app bouw je nog steeds in Xcode. Daarmee bouw je de gebruikersinterface en -interactie en koppel je met de gemeenschappelijke (in Kotlin ontwikkelde) componenten. Door deze werkwijze is de resulterende iOS app ook niet te onderscheiden van een volledig native ontwikkelde app.
Naast cross-platform app-ontwikkeling voor iOS en Android, kan Kotlin Multiplatform ook gebruikt worden om bijvoorbeeld Windows, macOS, Linux, NodeJS en webapplicaties te maken.
Wat maakt Kotlin Multiplatform zo aantrekkelijk?
Om Kotlin Multiplatform te beoordelen kijken we in de volgende secties naar een aantal van de belangrijkste aspecten van het ontwikkelen van mobiele apps.
Gebruikersinterface en -interactie moet natuurlijk aanvoelen
Voor gebruikers van een app is het belangrijk dat deze natuurlijk aanvoelt. Dat betekent dat de look-and-feel van de app moet passen bij het mobiele platform. Door de insteek van Kotlin Multiplatform is dit gegarandeerd. De gebruikersinterface en -interactie wordt immers specifiek voor het platform gebouwd. Dit in tegenstelling tot apps die gemaakt zijn met ontwikkelomgevingen die sterk afhankelijk zijn van webtechnologie. Deze apps blijven voelen als een website.
Toegang tot alle functionaliteit van het toestel
Wil je bijvoorbeeld een bepaalde sensor van de telefoon kunnen gebruiken in de app, dan moet de ontwikkelaar deze sensor in de ontwikkelomgeving kunnen aanspreken (denk bijvoorbeeld aan het uitlezen van je huidige GPS locatie).
De wijze waarop Kotlin Multiplatform is opgezet geeft de ontwikkelaar de mogelijkheid om alle platformspecifieke zaken ook vanuit gemeenschappelijke code te benaderen zonder al te veel inspanning. Dit in tegenstelling tot apps die gemaakt zijn met ontwikkelomgevingen die sterk afhankelijk zijn van webtechnologie. Voor laatstgenoemde apps moet een "brug" tussen de webapplicatie en het mobiele toestel beschikbaar zijn. Deze brug kan negatieve impact hebben op de performance van de app. Daarnaast ben je voor een brug afhankelijk van de maker van de gebruikte ontwikkelomgeving, open source initiatieven of eigen maatwerk.
Toekomstvast
De adoptie van de programmeertaal Kotlin is hoog, dus er zijn voldoende ontwikkelaars die apps kunnen bouwen met deze technologie. En niet onbelangrijk, JetBrains heeft een bewezen trackrecord en heeft met Kotlin Multiplatform een duidelijke visie neergezet voor het ontwikkelen van software voor meerdere platformen.
Mocht de keuze voor Kotlin Multiplatform uiteindelijk toch niet bevallen, dan heeft dat helemaal geen gevolgen voor de Android app. Alleen voor de iOS app dien je dan de gemeenschappelijke componenten te herschrijven in Swift.
Kosten
Als uitgever van een app zijn de kosten van de initiële ontwikkeling van een app belangrijk. Deze kosten zitten voornamelijk in de ontwikkeltijd van de app. Daarnaast wil je in toekomstige versies van je app waarschijnlijk ook de nieuwe features van iOS en/of Android kunnen gebruiken. Afhankelijk van hoe eenvoudig dat kan in een ontwikkelomgeving zijn daar meer of minder kosten aan verbonden.
Met Kotlin Multiplatform reduceer je de ontwikkeltijd aanzienlijk door het gebruik van gemeenschappelijke componenten. De werkelijke tijdwinst is echter sterk afhankelijk van de complexiteit van je app. Daarnaast is multiplatform ontwikkeling complexer om dat je goed moet nadenken over het deel dat gemeenschappelijk is.
Grootte van de app
De grootte van de app moet in verhouding staan tot de functionaliteit. Alle apps concurreren om een plekje op de telefoon van de gebruiker. Voor bepaalde gebruikers is de grootte (het aantal megabytes) een criterium om jouw app wel of niet te installeren.
Apps gebouwd met Kotlin Multiplatform zijn vrijwel even groot als native ontwikkelde apps. Dit in tegenstelling tot bijvoorbeeld apps die zijn gebouwd met Xamarin. Deze apps worden namelijk altijd gebundeld met het .NET Framework en zijn daardoor zeer groot.
Ons advies
Als je nu een app wil (laten) ontwikkelen dan is voor de meeste apps, die zowel op iOS als Android beschikbaar moeten zijn, Kotlin Multiplatform inmiddels volwassen genoeg. Je bespaart initiële en doorlopende kosten en maakt gebruik van moderne innovatieve state-of-the-art technologie.