Mobile applications have been steadily increasing in popularity ever since Apple opened up its App Store to third-party developers in 2008. Before that time, Apple was the only developer of iPhone apps. So, the selection was not very diverse, to say the least. On the Android side, HTC released the first Android phone in 2008, so Android phones were still not popular. In either case, iPhone or Android, mobile apps at that time were all “native” apps. So, what is a native mobile app anyway?
Different Operating Systems
iPhone apps run on an operating system currently known as iOS, and Android apps run on the Android operating system. For these apps to run on their respective operating system correctly, just like any other computer software, the programming language compiler (or translator) has to convert the code to a language that the operating system understands. The official programming languages that Apple wants developers to use are Swift, and Objective C before that. On the Android side, Google’s official recommendation is to use a programming language called Kotlin, and Java before that. These programming languages are compiled to a “native” language that the operating system can understand without having a middle layer to act as a translator. This means that the applications will potentially run very fast.
Alternatives to native apps
So, application speed is a major advantage to developing mobile apps in a native language. However, there’s one downside to this approach. Namely, if you want to have your application run on both iOS and Android devices, you have to write the application’s code twice. One time in Swift or Objective C to run it on iOS, and another time in Kotlin or Java to run in on Android. For larger companies, this means hiring two people (or potentially two teams) to develop the same app. And for smaller companies, this means looking for a developer who has experience in developing applications for iOS and Android. Finding the right resources is only part of the problem. The other part is time. It will potentially take the company double the time to develop the same app for two operating systems.
To fix this problem, some companies started to develop their own programming languages and platforms to build mobile apps that run on both iOS and Android at the same time. The developer community calls them “cross-platform” frameworks. A very popular example is React native. Facebook created React native to allow its developers to write code in a language called JavaScript, and use that same code to run the app on both iOS and Android.
The problem with traditional cross-platform software
React native is able to achieve this cross-platform feature by having a translator, or a “bridge”, that translates the JavaScript code to native code when the application is running on the device. For example, for a button to be displayed properly when the app is running, the translator will take the JavaScript code and convert it to an iOS button on an iPhone. When running on an Android device, it will convert the same code to an Android button. This introduces a new problem. Apps written in React native will potentially run slower than apps written in a native programming language. Because, when using a native programming language, there’s no need to translate anything during run-time. This disadvantage is not specific to React native only. Any application that needs a translator at run time will suffer from this slow down.
The best of both worlds
To achieve the best of both worlds, Google developed a cross-platform framework called Flutter. Flutter uses a programming language called Dart. Developers use Flutter to develops apps that run on iOS, Android and the web. In fact, you can even use Flutter to develop desktop apps that run natively on macOS, Linux and Windows. And all of that is achieved using a single code-base. In other words, you can write the app code using Dart once, and have it run on all these platforms. And the best part is that there’s no need for a translator, or a bridge, at run-time to convert the code.
Many companies have started to use Flutter when developing mobile applications. Google officially announced the first stable release of Flutter in 2018. However, here at W3 Applications, we have been using Flutter to develop mobile apps since before the official release. Our first Flutter app was published a few months before the first stable release.
What is a native mobile app?
So, to answer the question: what is a native mobile app? It is an app that does not need to be translated during run-time.
Conclusion
For us, having a programming framework like Flutter at our disposal means a couple of things. First, we can develop beautiful, fast and customizable mobile apps that run natively on iOS and Android at half the time it would take otherwise. And, what this ultimately means, is being able to lower the cost of development. So, if we lower the cost of development, we are able to stay competitive in the market and provide more cost-effective solutions to our clients.
If you have any questions about native mobile apps, or mobile apps in general, please send us an email or use our contact form. Thank you.