Over a million developers have joined DZone.
{{announcement.body}}
{{announcement.title}}

Technological Approaches to Mobile Application Development

DZone's Guide to

Technological Approaches to Mobile Application Development

This article talks about the recent history of mobile app development technologies, and which ones are best suited for which purposes.

· Mobile Zone ·
Free Resource

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.

The Beginning

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.

The Present

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.

  • Hybrid applications: The group of apps whose development is based on taking advantage of the potential of HTML, CSS, and Javascript to create web applications. Those applications are inserted in a container that offers an API for accessing the device; for example, apps that use Apache Cordova/PhoneGap.

  • 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.

  • JIT compiled: One of the last to enter the stage, but with great force is JIT compiled, in which applications run on a JavaScript virtual machine that runs in a native container; it has a practical expression in React Native and NativeScript.

In The NativeScript Book, we find this graphic that clearly illustrates how each of these development models is executed:

Image title

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

Final Considerations

I do not believe that there is one technology that is better than another, but the accelerated growth that the JavaScript world is having points to it becoming one of those technologies to which the mobile world will move. I have tried many of these technologies and it is my personal evaluation- and it does not have to coincide with the rest- that React Native is currently the technology that has a better balance between speed of development (with finished components such as NativeBase, Shoutem, or NachosUI), performance far superior to the applications that run with Cordova/PhoneGap, an active community, and access to hardware functions compared to the characteristics of native development.

Topics:
mobile ,cross platform ,android ,ios ,mobile app development ,hybrid

Opinions expressed by DZone contributors are their own.

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}