Jan Holesovsky | KotlinConf 2024, May 22–24, Copenhagen
all speakers

Jan Holesovsky

Jan Holesovsky

Crossoid - Develop for Android, release on iOS.

Jan is a co-founder of Crossoid (https://crossoid.com), a project and company focusing on implementing an Android-alike API for Kotlin/Native, primarily targeting iOS. With Crossoid, it is possible to take unmodified sources of an Android application (including XML resources, activities, etc.) and compile the iOS app from that. Or, as we say: Develop for Android, release on iOS.

Kotlin/Native BigDecimal - a drop-in replacement for java.math.BigDecimal

When porting an app to iOS using Kotlin/Native, it turned out that I needed a BigDecimal implementation. But there was no drop-in replacement that I could use, so I decided that I would port java.math.BigDecimal from the Android (AOSP) sources to Kotlin/Native.

In this presentation, you will learn some details about how java.math.BigDecimal is implemented, how I've converted it to Kotlin, and about how I've rewritten the JNI code to cinterop to call a 3rd party library (BoringSSL) that is used for the actual big number computation.

The talk will discuss technical difficulties of converting the Java sources to Kotlin (easy task), building BoringSSL for iOS Simulator and device (advanced task), and creating the glue code to call the 3rd party native library via cinterop (hard task).

Kotlin/Native BigDecimal is available under Apache License v2 and the source code is hosted on GitHub:

https://github.com/kendy/Kotlin-Native-BigDecimal

It is used in production in HiPER Scientific Calculator that has over 40 million downloads on Android, and achieved 500 thousand downloads on iOS in a year.