Of je nou bedrijfsapplicaties bouwt voor een start-up of voor een grote onderneming, je bouwt altijd voor meerdere platforms. Hoe verminder je de complexiteit, zodat je sneller meer onderhoudbare producten kunt bouwen? Gebruik voor al je bedrijfslogica één taal. Dat is het advies van Jan Mostert. In zijn recente Tech Talk liet hij al zien hoe je dat aanpakt. En in deze blog vertelt hij waarom Kotlin zo’n goede keuze is voor bedrijfsapplicaties.
Toen ik een tijdje terug op zoek ging naar een platform en programmeertaal voor een nieuw project, stond ik ervan te kijken hoeveel projecten er eigenlijk zijn die proberen om het multiplatformprobleem te tackelen. Sommige komen nog aardig in de buurt ook.
JavaScript, met NodeJS voor de backend, was tot voor kort alleen event-driven en single-threaded. Recent heeft de taal worker threads gekregen die CPU-taken voor hun rekening nemen. Voor webtoepassingen is JavaScript natuurlijk een goede match. Voor desktop is er Electron, als je het tenminste geen bezwaar vindt om een complete browser met je applicatie mee te sturen. En vind je het oké om in WebView te draaien, dan kun je voor mobiel terecht bij PhoneGap, Cordova en Ionic. Al ben ik geen fan van het trage non-native gevoel dat je bij deze applicaties krijgt. Dan liever ReactNative. Gelet op het belang van type-veiligheid voor grote commerciële projecten is TypeScript wellicht een betere optie voor full-stack JavaScript.

Avonturiers

Dart2 heeft alle kenmerken van een goede taal. Sinds 2.12 krijg je zelfs null-safety. En voor mobiel, web en desktop kun je aan de slag met Flutter. Aan de server-kant moet je het helaas doen met projecten die zijn verlaten of afgesplitst, met hooguit nog één maintainer – voor bedrijfsapplicaties toch een riskante keuze. Ben je avontuurlijk aangelegd? Dan heeft Darts nog Isolates. Dat dient ongeveer hetzelfde doel als Web Workers, met multi-threading in een single-threaded omgeving.
AngularDart was ooit Dart’s vlaggenschipproduct, maar ging in mei 2021 in onderhoudsmodus. Nu maar hopen dat niet de hele stack op de killedbygoogle-begraafplaats belandt, zoals met veel andere Google-producten is gebeurd.

Verademing

Java heeft de tand des tijds doorstaan als taal voor de server-kant, met een keur aan volwassen frameworks waaruit je kunt kiezen. Zelf vind ik VertX heel prettig voor nieuwe Java-projecten.
Voor desktopapplicaties is JavaFX nog steeds beschikbaar, hoewel het niet mijn eerste keuze is. Voor webapplicaties heb je GWT, en ik las dat J2CL zelfs een verademing is op het gebied van Java-to-JavaScript transpilers. Wat mobiel betreft, wordt Java nog altijd ondersteund door Android. Maar wat de niet-commerciële opties voor iOS zijn, is onduidelijk.
En C#? Dat is een volwassen taal, die al tijden meegaat op de server, opties biedt voor mobiel, desktop en internet, en via Unity zelfs WebGL ‘doet’. Een prima keuze dus. Dat wil zeggen, als je kunt leven met die wat vreemde functienamen in hoofdletters en de koppeling met Microsoft.

Fun-factor

In 2016 kwam JetBrains op de proppen met Kotlin. De Java-achtige taal – het resultaat van vijf jaar ontwikkelen – is null-safe en rekent voor eens en voor altijd af met de ‘billion-dollar mistake’. Kotlin bevat alle best practices van Java en succesvolle concepten van andere talen.
Ik gebruik de taal sinds het prille begin en heb tientallen grote backendprojecten opgeleverd – alleen met Kotlin en een paar kleine libraries. Java-teams die ik met ermee liet kennismaken hadden de taal binnen een paar weken onder de knie en gaven hoog op over de ‘fun-factor’.
In 2017 verscheen KotlinJS ‘in alfa’. Hadden de pre-releaseversies die ik uitprobeerde nog wat scherpe kantjes, toen ik er in 2019 mee aan de slag ging voor productiedoeleinden, voelde het al veel meer gepolijst. Wat een genot: één taal voor het schrijven van een server- en webapplicatie. En nog prettig in het gebruik ook!
In datzelfde jaar verklaarde Google de liefde aan Kotlin. Het werd de standaardtaal voor Android-ontwikkelaars. Toen ook Kotlin Multiplatform Mobile het levenslicht zag, ging het snel. Mensen vertelden over de fantastische dingen die ze met de alfa-builds hadden gebouwd. En over het gemak waarmee je bedrijfslogica kon laten werken op zowel backend- als mobiele en web-platforms. Met de release van de nieuwe Kotlin IR compiler is de taal echt tot wasdom gekomen.

Kracht

Bouw je server-applicaties, dan is Kotlin een goede keuze. Web? Mobiel? Zelfde verhaal. Omdat Kotlin prima samengaat met andere talen, kun je er ook gebruik van maken met bestaande Java-libraries op de server, JavaScript/Typescript-libraries op het web en Objective-C/Swift-libraries op iOS. Voor desktops (Linux, Windows en MacOS) is het een kwestie van compilen naar native en integreren met C-libraries.
Samenvattend is de kracht van Kotlin dat je één taal, één standaard-library, één concurrency-framework, één serialisatieframework, uiteenlopende Kotlin-libraries en natuurlijk je eigen bedrijfslogica op meerdere platforms kunt laten draaien. Je schrijft één keer code en past die vervolgens overal toe.

Tech Talk: Bedrijfslogica op meerdere platforms laten werken met Kotlin

Code op meerdere platforms laten werken? In deze sessie bespreekt Jan de verschillende opties, vertelt hij wat Kotlin bijzonder maakt en geeft hij een korte demo waarin een server-, een desktop- en een webapplicatie allemaal gebruikmaken van dezelfde code.

Kijk hier Jan's Tech Talk terug!

Over Jan Mostert

Jan geeft klanten van Capgemini advies over alles wat maar raakt aan ‘full-stack’. Hij programmeert al sinds zijn vijftiende en haalde een bachelor in technische wetenschappen aan Universiteit Stellenbosch in Zuid-Afrika.
job alert

Ontvang de laatste vacatures