When you start in the world of mobility and the development of mobile technologies, everyone thinks of Android and iOS. The first thing, almost always, is to go to native development, and therefore we all start doing Android apps in Java with Android Studio, or if we have a Mac, we start with Swift/Objective C with XCode. Then we begin to get into it and we learn that it is not only reduced to making native apps, which begins our incursion into the hybrid world.
So, how is the scenario today? Let's talk a little bit about the subject.
Some years ago, after the beginning of the era of smartphones and smart devices, to put it generally, there were leading technologies of development: Objective C, Java, and in the world of hybrids, PhoneGap, a competitor who later lost ground for performance problems in some scenarios.
As development trends moved more and more towards mobility, the technologies evolved. For development in iOS, the evolution was Swift. In Android, Kotlin was born recently, empowering the JVM even more.
To this author's consideration, the greatest evolution has not been in the field of mobility previously mentioned, but in the entry into the game of new actors such as Xamarin, React Native, and NativeScript.
Beyond the technologies themselves to develop mobile apps, we can identify four models:
Native applications: The group of applications that are developed in languages such as Java, Kotlin, Objective C, or Swift. Their construction is direct and allows full control over the device.
Cross-compilation: The third model is cross-compiling. Its strength is based on being able to develop apps in other languages such as C# (Xamarin) or C ++, Delphi (RAD Studio), and that code at construction time is translated into native code.
In The NativeScript Book, we find this graphic that clearly illustrates how each of these development models is executed:
What Model Should We Use, Then?
I think there is no model that is better than another, however, there are some suggestions that I would like to share:
If you need rigid access to hardware or a UI totally equal to the platform, use native.
If you need fast, multiplatform development with frequent updates, use hybrid.
If you need fairly fast, multiplatform development, use JIT compiled.
If you are a Windows programmer (.NET) and want to get yourself into the mobile world, use cross compilation with Xamarin (Visual Studio or Xamarin Studio).
If you are a web developer and want to introduce yourself to the mobile world, you have options:
Do you know Angular?
Hybrid: Ionic Framework (+ Cordova)
JIT Compiled: NativeScript by Telerik
Do you know ReactJS?
JIT Compiled: React Native
Do you know JS, just JS?
JIT Compiled: NativeScript by Telerik with Vanilla JS