Da Facebook- og Instagram-eier Meta lagde sine første Android-apper, var det Java som ble brukt til å lage Android-apper. I 2019 annonserte imidlertid Google at de ikke bare ville støtte Kotlin for Android-apputvikling, men at Kotlin var det foretrukne språket.
For noen år siden bestemte Meta seg derfor for å begynne å skrive om all den gamle Java-koden – rundt 10 millioner kodelinjer – til Kotlin, skriver selskapet i et blogginnlegg.
– Hvorfor ville vi ta ti millioner helt fin Java-kode og skrive det om i et annet språk? Det korte svaret er at utviklere foretrekker Kotlin og er mer produktive i det, sier Eve Matthaey i Meta i en video du kan se nederst i artikkelen.
«Utviklere foretrekker Kotlin og er mer produktive i det.»
Meta er fortsatt bare halvveis i prosessen med å porte hele Java-kodebasen sin over til Kotlin, men deler nå innsikt i hvordan de har fått det til.
Utviklet Kotlinator
Meta skriver i blogginnlegget at de vurderte å bare skrive ny kode i Kotlin, eller eventuelt bare oversette de viktigste filene. Men de landet altså på en full omskrivning av hele kodebasen.
I tillegg til å skrive om selve Android-appene, er målet også å skrive om all kode i avhengigheter som brukes – blant annet for å unngå å blande inn kode som ikke er "null-sikker". Kotlin skiller på typer som kan være null eller ikke, noe som gjør at du ikke risikerer NullPointerException-feilmeldinger.
– All gjenværende Java-kode kan være en kilde til "nullability-kaos", skriver Meta.
For å automatisere omskrivningsjobben lagde Meta et verktøy de har kalt Kotlinator, som er bygget rundt IntelliJs oversetterverktøy J2K – som i seg selv ikke var egnet for en så stor kodebase som den Meta hadde.
Opensourcer verktøy
Det første steget var å gjøre om J2K til et "headless"-verktøy som kan kjøre på en annen maskin (en server), noe som ikke var enkelt siden J2K er veldig tett integrert med IntelliJ.
Kotlin vs. Java: - Mye unødvendig boilerplate
Du kan lese detaljer om hvordan Kotlinator er bygget opp i Meta-bloggen.
I tillegg måtte de lage verktøy som blant annet analyserer filer og gjør eventuelle manuelle oversettelser. Noen av disse verktøyene ("Kotlin AST Tools") er nå publisert som åpen kildekode her.
I denne videoen forteller Eve Matthaey i Meta hva de har gjort, og hvorfor: