There are two primary approaches to mobile development: native and cross-platform. With so many different operating systems for mobile device users, such as Android, iOS and Windows Mobile, developers have a choice to make.
Native development means developing applications for a specific Operating System. Each OS has its preferred language:
- Android: Historically Java, but Kotlin is now more prevalent;
- iOS: Objective C and Swift, which has largely prevailed;
- Windows Mobile: Primarily C#.
Native development is all about exclusivity. A Kotlin app, for example, will only be compatible with Android and not with iOS.
Exploring Cross-Platform Solutions:
Cross-platform development, on the other hand, is a solution to the multi-OS challenge. It allows developers to create applications compatible with multiple operating systems using a single framework and language.
After a long journey as an Android developer, I ventured into iPhone app development. However, the transition wasn’t as seamless as I expected, largely due to the different coding languages. While researching cross-platform solutions I came across Facebook’s ReactNative and, later, Google’s Flutter. Released in late 2018, Flutter uses Dart, a language with a syntax similar to Java, making the transition smoother for Kotlin users like me.
That said, it’s worth noting that React Native uses JavaScript, which can be a bit off from traditional mobile development languages.
The Challenges of Transition:
Switching to cross-platform isn’t without its challenges. In my experience with Flutter, the first barrier was UI development. Unlike native Android, which uses graphical interfaces and XML, Flutter uses a declarative UI approach. Although challenging at first, over time I found that using Flutter was a more intuitive approach compared to native methods.
—Vasile Barbaroș

Leave a Comment