Lead developer at Usetech
My name is Anna Zharkova, I'm from Barnaul. I'm Lead iOS/Android developer with more than 7 years of experience. I develop both native (iOS - Swift/Objective-c, Android - Kotlin/Java) and cross platform (Xamarin, Kotlin Multiplatform) applications. I also make an architect solution in mobile projects. Also mentoring junior developers and leading of mobile team. Currently, I'm Leading Developer in Usetech company. Tutor in Otus course "iOS Advanced 2.0" My telegram channel: https://t.me/prettygeeknotes My blog in Habr: https://habr.com/ru/users/anioutka/posts/ Github: https://github.com/anioutkazharkova
Kotlin Multiplatform. Advanced multithreading
Kotlin Multiplatform is a modern, powerful tool for multiplatform development. The main idea of Kotlin Multiplatform, as well as other cross-platform SDKs, is to optimize development by writing code once and share it between different platforms. However, dealing with a common code base could have some nuances that should be figured out and solved according to the platform specifics. And implementation in a common base could be really tricky. One such moment is a providing common solution for multithreading and concurrency. Especially for iOS, because it doesn't support the same technologies as Android does. KMM SDK uses the specific for every native platform version of Kotlin: Kotlin/JVM, Kotlin/JS, or Kotlin/Native. Every version includes special Kotlin language extensions, tools, and libraries specified for a particular platform. The module created with Kotlin language will be compiled by JVM to bytecode for Android and by LLVM to bytecode for iOS. Kotlin Native is really different from Kotlin JVM because it depends on the specifics of the iOS platform. Most default solutions that work with JVM are not suitable for Kotlin Native at all. I would like to examine the specifics of both platforms, to show the difference between Kotlin Native and Kotline JVM, what problems could be faced in providing a common solution for both platforms, and the ways to provide a working solution. Especially how to work with Coroutines in Kotlin Native and iOS app.